第一章
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()