Node.js 第三天学习总结

Node.js 第三天课堂笔记

知识点

  • 增删改查

  • 登陆

  • 注册

  • 头像

    • 服务端图片
    • 水印
    • 图片水印
    • 找回密码
  • 核心系统

    • 核心模块
    • 第三方模块
    • 自己写的模块
    • 加载规则以及加载机制
    • 循环加载
  • npm

  • package .json

  • Express

    • 第三方Web开发框架
    • 高度封装了http模块
    • 更加专注于业务,而非底层细节
    • 知其所以然
  • 增删改查案例

    • 使用文件来保存数据(锻炼异步编码)
  • MongoDB 芒果数据库

    • (所有方法都封装好了)

反馈

  • SEO
    • 网站运营 SEO
      +SEO 运营专员
    • 百度 Google 搜狗
  • art-template中的each是什么,jQuery中的each是什么
    • art-template 和 jQuery 没有任何关系
      art-template中的each
    • each 是 art-template 的模板语法,专属的
      +{ {each 数组}}
      +
    • { { KaTeX parse error: Expected 'EOF', got '}' at position 9: {value} }̲}</li> +{ {/each….each(数组,function(){})
      +$(‘div’).each(function(){}) 一般用来遍历 jQuery 选择器选择到的伪数组实例对象
      ES5中的forEach
      +forEach是ES5中的一个数组遍历函数,是js原生支持的遍历方法

复习

  • 网站开发模型
    +黑盒子、哑巴
    +写代码让它变得智能
    +按照你写好的套路供用户使用

  • 在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(‘loaction’)
      • 301 永久重定向 浏览器会记住
        • a.com b.com
        • a浏览器不会请求a
        • 直接跳去b
      • 302 临时重定向 浏览器不记忆
        • a.com b.com
        • a浏览器还会请求a
        • a 告诉浏览器你将往b
  • Node 中的Console(REPL)使用

    • cmd 输入node

上午总结

  • jQuery 的 each 和 原生的 JavaScript 方法 forEach

    • ES5 提供的 forEach方法,不兼容 IE8
    • jQuery 的 each 由 jQuery 这个第三方库提供的
      • jQuery 2 以下版本是兼容 IE 8 的
      • 它的 each 方法主要是用来遍历 jQuery 实例对象(伪数组)
      • 同时它也可以作为低版本浏览器中的 forEach 替代品
      • jQuery 的实例对象不能使用 forEach方法 ,如果想要使用必须先转为数组
      • [].slice.call(jQuery实例对象) //slice截取返回数组
  • 模块中导出多个成员和导出单个成员

  • 301 和 302 状态码的区别

  • exports 和 module.exports 的区别

    • 每个模块中都有一个 module 对象
    • module 对象中有一个 exports 对象
    • 我们可以把需要导出的成员都挂载到 module.exports 接口对象中
    • 也就是: module.exports.xxx = xxx的方式
    • 但是每次都 module.exports.xxx = xxx 很麻烦,点儿太多了
    • 所以Node 为了你方便,同时在每一个模块中都提供了一个成员叫:exports
    • exports 等价于 module.exports
    • 所以对于 module.exports.xxx = xxx的方式 完全可以写成:exports.xxx = xxx的方式
    • 当一个模块需要导出单个成员的时候,必须使用 module.exports = xxx的方式
    • 不要使用 exports = xxx的方式 不管用
    • 因为每个模块最终向外 return 的是 module.exports
    • exports 只是 module.exports 的一个引用
    • 所以即使你为 exports = xxx 重新赋值,也不会影响module.exports
    • 但是有一种赋值方式比较特殊:exports = module.exports 这个用来重新建立引用关系的
    • 之所以让大家明白这个道理,是希望大家能够更加灵活的去面试
  • Node 是一个比肩 Java、PHP 的平台

    • JavaScript 既能写前端也能写服务端
module.exports = {
    
    

}
exports = module.exports; //重新建立 exports 和 module.exports 的引用关系

exports.foo = 'bar';  //管用

下午总结

  • jQuery 的each 和原生 JavaScript 方法 forEach
  • 301 和 302 的区别
  • 从模块中导出单个成员和导出多个成员的方式
  • module.exports 和 exports 的区别
  • require 方法加载规则
    • 优先从缓存加载
    • 核心模块
    • 路径形式的模块
    • 第三方模块
      • node_modules
  • package.json 包描述文件
    • dependencies 选项的作用
  • npm 常用命令
    • npm init
    • npm install 包名
  • Express 基本使用
  • 使用 Express 把之前的留言本案例自己动手改造一下

猜你喜欢

转载自blog.csdn.net/cake_eat/article/details/109045480