-
知识点
- 增删改查
- 登陆
- 注册
- 头像
- 服务端图片
- 水印
- 图片水印
- 找回密码
- 密码修改
-
模块系统
- 核心模块
- 第三方模块
- 自己写的模块
- 加载规则以及加载机制
- 循环加载
-
npm
-
package.json
-
Express
- 第三方 Web 开发框架
- 高度封装了 http 模块
- 更加专注于业务,而非底层细节
- 知其所以然
- 增删改查
- 使用文件来保存数据(锻炼异步编码)
- MongoDB
- (所有方法都封装好了)
复习
-
网站开发模型
- 黑盒子、哑巴
- 写代码让它变得更智能
- 按照你设计好的套路供用户使用
-
在 Node 中使用 art-template 模板引擎
- 安装
- 加载
- template.render()
-
客户端渲染和服务端渲染的区别
- 最少两次请求,发起 ajax 在客户端使用模板引擎渲染
- 客户端拿到的就是服务端已经渲染好的
-
处理留言本案例首页数据列表渲染展示
-
处理留言本案例发表留言功能
- 路径
- 设计好的请求路径
- $GET 直接或查询字符串数据
- Node 中需要咱们自己动手来解析
- url.parse()
- /pinglun?name=jack&message=hello
- split(’?’)
- name=jack&message=hello
- split(’&’)
- name=jack message=hello
- forEach()
- name=jack.split(’=’)
- 0 key
- 1 value
-
掌握如何解析请求路径中的查询字符串
- url.parse()
-
如何在 Node 中实现服务器重定向
- header(‘location’)
- 301 永久重定向 浏览器会记住
- a.com b.com
- a 浏览器不会请求 a 了
- 直接去跳到 b 了
- 302 临时重定向 浏览器不记忆
- a.com b.com
- a.com 还会请求 a
- a 告诉浏览器你往 b
- 301 永久重定向 浏览器会记住
- header(‘location’)
-
Node 中的 Console(REPL)使用
上午总结
-
jQuery 的 each 和 原生的 JavaScript 方法 forEach
- EcmaScript 5 提供的
- 不兼容 IE 8
- jQuery 的 each 由 jQuery 这个第三方库提供
- jQuery 2 以下的版本是兼容 IE 8 的
- 它的 each 方法主要用来遍历 jQuery 实例对象(伪数组)
- 同时它也可以作为低版本浏览器中 forEach 替代品
- jQuery 的实例对象不能使用 forEach 方法,如果想要使用必须转为数组才可以使用
-
[].slice.call(jQuery实例对象)
- EcmaScript 5 提供的
-
模块中导出多个成员和导出单个成员
-
301 和 302 状态码区别
- 301 永久重定向,浏览器会记住
- 302 临时重定向
-
exports 和 module.exports 的区别
- 每个模块中都有一个 module 对象
- module 对象中有一个 exports 对象
- 我们可以把需要导出的成员都挂载到 module.exports 接口对象中
- 也就是:
的方式moudle.exports.xxx = xxx
- 但是每次都
很麻烦,点儿的太多了moudle.exports.xxx = xxx
- 所以 Node 为了你方便,同时在每一个模块中都提供了一个成员叫:
exports
-
结果为exports === module.exports
strue
- 所以对于:
的方式 完全可以:moudle.exports.xxx = xxx
expots.xxx = xxx
- 当一个模块需要导出单个成员的时候,这个时候必须使用:
的方式module.exports = xxx
- 不要使用
不管用exports = xxx
- 因为每个模块最终向外
的是return
module.exports
- 而
只是exports
的一个引用module.exports
- 所以即便你为
重新赋值,也不会影响exports = xx
module.exports
- 但是有一种赋值方式比较特殊:
这个用来重新建立引用关系的exports = module.exports
- 之所以让大家明白这个道理,是希望可以更灵活的去用它
-
Node 是一个比肩 Java、PHP 的一个平台
- JavaScript 既能写前端也能写服务端
moudle.exports = {
a: 123
}
// 重新建立 exports 和 module.exports 之间的引用关系
exports = module.exports
exports.foo = 'bar'
Array.prototype.mySlice = function () {
var start = 0
var end = this.length
if (arguments.length === 1) {
start = arguments[0]
} else if (arguments.length === 2) {
start = arguments[0]
end = arguments[1]
}
var tmp = []
for (var i = start; i < end; i++) {
// fakeArr[0]
// fakeArr[1]
// fakeArr[2]
tmp.push(this[i])
}
return tmp
}
var fakeArr = {
0: 'abc',
1: 'efg',
2: 'haha',
length: 3
}
// 所以你就得到了真正的数组。
[].mySlice.call(fakeArr)
下午总结
-
jQuery 的 each 和 原生的 JavaScript 方法 forEach
-
301 和 302 的区别
-
模块中导出单个成员和导出多个成员的方式
-
module.exports 和 exports 的区别
-
require 方法加载规则
- 优先从缓存加载
- 核心模块
- 路径形式的模块
- 第三方模块
- node_modules
-
package.json 包描述文件
- dependencies 选项的作用:依赖
-
npm 常用命令
-
Express 基本使用