《深入浅出NodeJS》读书笔记

第一章

  • Node

    Node:“一个强制不共享任何资源的单线程、单进程系统,通过协议构建不同的node来形成一个大型的网路应用,每一个node为一个节点”,这是书中给的解释原文

  • 非阻塞I/O

    书中多次提到的概念,我理解的非阻塞就是线程或进程的停止,

  • 特点
  •   1.异步
      2.事件(随意绑定事件),时间绑定轻量级、松耦合
      3.回调函数    
    
  • Ajax请求:快速动态刷新网页,不刷新,直接更新参数

读完第一章以后,觉得云里雾里,这本书对于没有JS基础的人来说有点头疼。不过能肯定的是nodejs是一门异步I/O的语言,和python等编程习惯不一样,需要适应。

至此,我决定先啃《js高级程序设计第三版》这本书,对js有一定的了解以后再来学习nodejs。

第二章

C/S模式:客户/服务器模式,例如微信等
B/S模式:浏览器/服务器模式,例如各种web应用

  • CommonJS规范:

    相比于python的import,JAVA的类文件等,js是没有模块引入机制的,只能通过<script>标签这种杂乱的方式引入代码。在nodejs未出现之前,js只能用于前端,只有Rhino等后端javascript运行环境来作为小工具。node这么多年发展以来,已经形成了一套响应的规范,也就是CommonJS规范。

      1.模块引用:var math = require('math');
      2.模块定义:export.add = function(){...;return sum};
                 export.increment = function(val){};
      3.模块标识:
    
  • node模块实现:

    node引入模块需要3个步骤:路径分析、文件定位、编译执行,其中系统自带的模块为核心模块,直接随node启动时加载进内存,加载速度快;用户自定义的模块称为文件模块,在运行时动态加载,慢。

      1.路径分析:require('标识符');//分析标识符,标识符主要分为:
          *核心模块,如http、fs、path等。
          *.或..等相对路径文件模块
          *以/开始的绝对路径文件模块
          *非路径形式的文件模块,如自定义的connect模块
              (自定义模块非核心模块和路径形式的模块,分析速度最慢)
    
      2.文件定位:
          *扩展名分析:模块文件可以不带扩展名,自动按.js、.json、.node顺序补全。
          *目标分析和包:
      3.模块编译
          *核心模块一般为C/C++或javascript编译,所有的都转换为C/C++然后编译
      4.内建模块:全由C/C++编译的模块,使用:
          process.binding('标识符')
          来进行导出
    
  • 包与NPM:

      "package.json":包含包的所有信息(版本、名称、作者等)
      NPM已经是一个包共享平台,实现第三方模块的发布、安装和依赖。
    
  • 前后端共用模块:

    前端规范:AMD规范、CMD规范

      1.AMD规范定义的模块需要用define:
      define(function(){...})
    
      2.CMD规范申明时要指定所有的依赖
    

第三章

tips:js异步

回调函数复习

Promise()

  • resolve():

      pending->fulfilled  
      pending->rejected
    
  • reject()