1.node.js是一个构建在chrome V8引擎上的javascript运行环境javascript
2.node.js特色:单线程、事件驱动、非阻塞IO模型、轻量java
3.node.js是单线程的(多个请求都是一个线程在处理)node
4.事件驱动是node.js底层机制,有一个事件环,保证node.js能够高效准确的运行而不会错乱chrome
5.模块化:json
优势:浏览器
问题:模块化
标准的制定:函数
6.在node中,一个js文件就是一个模块,每个js文件中的代码都是独立运行在一个函数中的,而不是在全局做用域,因此说一个模块中的变量和函数在其它模块中是没法访问的单元测试
7.经过require()函数来引入外部的模块,使用require()引入模块后,会返回一个对象,这个对象表明的是被引入的模块测试
8.模块分红两大类(模块标识就是require()里面的字符串)
由node提供的模块,核心模块的标识就是模块的名字
由用户本身建立,文件模块的标识就是文件的路径
9.经过exports来向外暴露变量和方法
10.在node中有一个global,做用和浏览器中的window相似,在全局中建立的变量都会做为global的属性保存
-在node执行模块中的代码时,它会首先在代码的最顶部,添加以下代码
function (exports,require,module,__filename,__dirname){ 内部是咱们本身编写的代码
export(export是module.export属性)
require
module
__filename
__dirname
在代码的最底部添加以下代码
}
11.export和module.export区别
ModuleG.js代码
var x = "ModuleG x" var y = "ModuleG y" function fun() { console.log("ModuleG fun is called") } //向外暴露 // exports.x = x // exports.y = y // exports.fun = fun // module.exports.x = x // module.exports.y = y // module.exports.fun = fun // OK // module.exports = { // x, y, fun // } // error exports = { x, y, fun }
ModuleF.js代码
var moduleG = require("./ModuleG") console.log(moduleG.x) console.log(moduleG.y) moduleG.fun()
12.包(包规范由包结构和包描述文件组成)
描述包的相关信息,供外部读取分析