目录
知识回顾
CommentJS规范
ECMAScript标准规范
模块化
CommonJS规范
模块化
知识回顾
I/O (Input/output)
I/O操作指的是对磁盘的读写操作
Node
- Node是对ES标准一个实现,Node也是一个JS引擎
- 通过Node可以使js代码在服务器端执行
- Node仅仅对ES标准进行了实现,所以在Node中不包含DOM和 BOM
- Node中可以使用所有的内建对象
string Number Boolean Math Date RegExp Function object Array
而BOM和DOM都不能使用,但是可以使用console也可以使用定时器(setTimeout () setInterval() )
Node可以在后台来编写服务器
Node编写服务器都是单线程的服务器
进程
进程就是一个一个的工作计划(工厂中的车间)
线程
线程是计算机最小的运算单位(工厂中的工人),线程是千活的
传统的服务器都是多线程的
每进来一个请求,就创建一个线程去处理请求
Node处理请求时是单线程,但是在后台拥有一个I/O线程池
CommentJS规范
ECMAScript标准规范
- 没有模块系统
- 标准库较少
- 没有标准接口
- 缺乏管理系统
模块化
- 如果程序设计的规模达到了一定程度,则必须对其进行模块化。
- 模块化可以有多种形式,但至少应该提供能够将代码分割为多个源文件的机制。
- CommonJS的模块功能可以帮我们解决该问题。
CommonJS规范
- CommonJS规范的提出,主要是为了弥补当前JavaScript没有标崔的缺陷。
- CommonJS规范为JS指定了一个美好的愿景,希望JS能够在任何地方运行。
CommonJS对模块的定义十分简单
模块引用
模块定义
模块标识
模块化
- 在Node中,一个js文件就是一个模块
- 在Node中,每一个js文件中的js代码就是独立运行在函数中,而不是全局作用域,就相当于一个闭包,所以一个模块的变量和函数在其他模块中无法访问
就相当于下图,闭包中的变量和函数不能被外面的函数或者操作访问
如果想对外部的模块访问到,可以通过exports来向外部暴露变量和方法
向外部暴露属性或方法
exports.x=20;
exports.y=100;
exports.fn=function(){
}
引入其他的模块
在node中,通过require()函数来引入外部的模块,require()可以传递一个文件的路径作为参数,node将会自动根据该路径来引入外部模块;如果使用相对路径,必须用.或者..开头
使用require()引入模块以后,该函数会返回一个对象,这个对象代表的是引入的模块