前言
最近急切地想来弥补一些自己学习过程中的漏洞,node.js作为前端工程化中参与感最强,然而似乎存在感最弱的一部分,往往被很多前端开发者所忽略,这篇文章主要是简单的复习一下node.js的知识,作为一个初学者,这些东西是你必须要了解的。
什么是node.js
首先看官网的介绍,node.js其实是JS的一种运行时,它的特点很明显,官网上也主要提到了两点,一个是事件驱动,一个是非阻塞IO。
关于具体概念这里不会讲解,大家对名词有不理解的还是自己去查吧
关于CommonJS
关于CommonJS,这是一个用于node.js的模块管理规范,CommonJS定义的模块分为: 模块标识(module)、模块定义(exports) 、模块引用(require),我们可以随便写一段代码:
console.log(1)
放在Chrome中调试,可以看到:
( function(exports, require, module, __filename, __dirname) {
console.log(1)
}
)
首先,我们可以看到,每个node.js文件都是一个模块,可以看到它是用()包裹起来的,也就是说,每个文件都是有自己的作用域的。
其次,module代表了模块本身,他里面有一个exports属性代表模块的对外接口。
接着require引入的永远只是module.exports里面的内容,而exports 只是 module.exports的引用,在一开始:
exports=module.exports={}
与window类似,global用于node.js的挂载全局对象,比如CommonJS,console等。
global.process
process是挂载在global中十分重要的一部分:
const {argv} = process
这时我们运行脚本,foreach循环argv,可以看到第一个值是node目录,第二个值是当前文件目录。后面我们可在命令行传入参数,如:
node demo.js a=1 b=2
这时我们发现argv数组中又多了两项 ,分别是a=1, b=2
env也是 process中的一个重要属性,打印一下:
ALLUSERSPROFILE: 'C:\\ProgramData',
ANDROID_HOME: 'C:\\Users\\starinsun\\AppData\\Local\\Android\\Sdk',
APPDATA: 'C:\\Users\\starinsun\\AppData\\Roaming',
ChocolateyInstall: 'C:\\ProgramData\\chocolatey',
ChocolateyLastPathUpdate: '132186373963992047',
CLASSPATH: '.;C:\\Program Files\\Java\\jdk1.8.0_202\\lib\\dt.jar;C:\\Program Files\\Java\\jdk1.8.0_202\\lib\\tools.jar;',
CommonProgramFiles: 'C:\\Program Files\\Common Files',
'CommonProgramFiles(x86)': 'C:\\Program Files (x86)\\Common Files',
CommonProgramW6432: 'C:\\Program Files\\Common Files',
COMPUTERNAME: 'ASEN',
ComSpec: 'C:\\WINDOWS\\system32\\cmd.exe',
这里面是干嘛的我自然不用多说。
cwd()是一个process方法,也就是pwd
Http
http是node.js内置的http模块,简单的写个服务器:
const http = require('http')
const server = http.createServer((req, res) => {
res.statusCode=202;
res.setHeader('Content-Type', 'text/html');
res.end('hello, world')
})
server.listen(3000, 'localhost')