什么是nodeJs?
对于web前端开发人员来说,初期的js文件是在html文件中通过浏览器解析器来解析的,而node.js的出现,使得js文件也能被单独的解析。
- 前端开发人员一提到js更多想到的是基于浏览器的dom操作,而运行在Node.js中的js作用多数是操作磁盘文件或搭建http服务,Node.js提供了相应的fs,http等内置对象。
- Node.js让前端如获神器,跳出了浏览器的窗口。
安装Node.js
- NodeJS提供了一些安装程序,都可以在nodejs.org这里下载并安装。
- Windows系统下,选择和系统版本匹配的.msi后缀的安装文件。Mac OS X系统下,选择.pkg后缀的安装文件。
运行
- 终端直接输入代码运行
$ node
> console.log("hello Kcoder");
hello Kcoder
- 创建js文件,终端运行js文件
- 创建sayHello.js
(function(){
console.log("hello Kcoder");
})();
- 终端输入
$ nodesayHello.js
hello Kcoder
模块
复杂程序尽量模块化会使得逻辑结构更加清晰容易理解,在Node.js中require,exports,module这些预定义好的可以供使用。
- require用来传入别的有导出模块的文件,这里的路径可以是相对路径,也可以是绝对路径,如果是.js文件,.js可y以省略。
var liuwen = require("./liuwen.js");
var liuwen = require("./liuwen");
var liuwen = require("c:/web/liuwen.js");
- exports是用来导出模块的公有属性和方法,
exports.liuwen=function(){
alert("liuwen");
}
- module是替换当前模块的导出对象。例如模块导出对象默认是一个普通对象,如果想改成一个函数的话,可以使用以下方式。
module.exports = function () {
console.log('liuwen');
};
模块初始化
所有模块在执行过程中只初始化一次。
- 首先由如下结构目录
- part.js
- main.js
- part.js内容
var i = 0;
functionsayNum (){
returni += 1;
}
- main.js内容
var part1 = require(./part.js);
var part2 = require(./part.js);
console.log(part1.sayNum());
console.log(part2.sayNum());
console.log(part2.sayNum());
- 终端运行
$ nodemain.js
1
2
3
由此可见并没有被初始化两次。
小结
- Node.js是一个js脚本解析器,操作系统下安装Node.js的实质是Node.js的执行程序复制到系统目录下,以便在终端可以使用node命令。
- 终端下直接输入node命令可进入命令交互模式,很适合用来测试一些JS代码片段,比如正则表达式。
- NodeJS使用CMD模块系统,主模块作为程序入口点,所有模块在执行过程中只初始化一次。
- 除非JS模块不能满足需求,否则不要轻易使用二进制模块,否则你的用户会叫苦连天。