1

什么是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");
    
    })();
    • 终端输入

    $ node sayHello.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;
    
    function sayNum (){

    return i += 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());
  • 终端运行

    $ node main.js
    
    1
    
    2
    
    3

由此可见并没有被初始化两次。

小结

  • Node.js是一个js脚本解析器,操作系统下安装Node.js的实质是Node.js的执行程序复制到系统目录下,以便在终端可以使用node命令。

  • 终端下直接输入node命令可进入命令交互模式,很适合用来测试一些JS代码片段,比如正则表达式。

  • NodeJS使用CMD模块系统,主模块作为程序入口点,所有模块在执行过程中只初始化一次。

  • 除非JS模块不能满足需求,否则不要轻易使用二进制模块,否则你的用户会叫苦连天。


刘雯
58 声望10 粉丝

爱前端的kcoder