Node.js运行

Posted 前端百货店

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node.js运行相关的知识,希望对你有一定的参考价值。








Node.js的运行

之前我们通过学习到了什么是Node.js以及如何安装Node.js,那么安装好了之后如何运行Node.js呢?

Node.js运行方式一:REPL模式

    REPL模式(Read-Evaluate-Print-Loop,输入-求值-输出-循环),又叫交互式命令行解析器,可以直接在cmd命令行编写node.js代码,这种方式只适合检验和学习node.js,不适合我们正式的开发。也就是说,我们可以在终端中输入命令,并接收系统的响应。Node 自带了交互式解释器,可以执行以下任务:

读取 - 读取用户输入,解析输入了javascript 数据结构并存储在内存中。

执行 - 执行输入的数据结构

打印 - 输出结果

循环 - 循环操作以上步骤直到用户两次按下 ctrl-c 按钮退出。

Node.js运行


Node.js运行方式二:运行js文件

我们可以直接输入命令node+文件名运行。我们在03.js文件里写了一些js代码,然后进入终端输入dir显示出了E盘所有的文件及文件夹列表,然后输入node 03.js回车就能看到输出了"张三 又疯了 "

Node.js运行




模块化规范

目前有三种流行的模块规范,分别是AMD,CMD,Commonjs。它们的共性是将模块的功能代码都放在一个函数中,虽然三种规范的写法不同但功能都是为了"模块化"。三种规范的共同点有:


1.模块中使用var定义变量都是局部变量,解决全局命名冲突问题。

2.模块定义在函数,也是局部。

3.模块有一个模块对象,包含moduleID(模块名)、exports(导出对象)。

4.如果模块中需要暴露方法或属性给外部使用,那么就直接往exports对象上面添加。

5.如果一个模块想引入另一个模块,可以使用require引进来,该方法返回的是模块对象的exports对象,比如

var a = require("./a.js");  

a.xxx  // 等同于模块中的exports.xxx


AMD

AMD(Asynchronous Module Definition = 异步模块定义),这种规范是异步的加载模块,requirejs应用了这一规范,适合客户端浏览器环境。

AMD规范定义了一个自由变量或者说是全局变量define的函数。

Node.js运行


CMD

CMD,(Common Module Definition)是seajs推崇的规范,国内大牛玉伯之作。

define(factory);

factory是一个需要进行实例化的函数或者一个对象。

define(function(require,exports,module){

  //模块代码

});


Commonjs

Node.js就采用了commonjs规范定义模块,但是commonjs采用的是同步加载文件方式,只适用于服务端(Nodejs平台)



CommonJS 和 ES6 中模块化的区别

在之前的javascript中是没有模块化概念的。如果要进行模块化操作,需要引入第三方的类库。随着技术的发展,前后端分离,前端的业务变的越来越复杂化。直至ES6带来了模块化,才让javascript第一次支持了module(模块)。ES6的模块化分为导出(export)与导入(import)两个模块。

对于 CommonJS 和 ES6 中的模块化的两者区别是:

  • 前者支持动态导入,也就是 require(${path}/xx.js),后者目前不支持。

  • 前者是同步导入,因为用于服务端,文件都在本地,同步导入即使卡住主线程影响也不大。而后者是异步导入,因为用于浏览器,需要下载文件,如果也采用同步导入会对渲染有很大影响。




一起来学习

长按或扫码关注

以上是关于Node.js运行的主要内容,如果未能解决你的问题,请参考以下文章

19 条 Node.js 生产环境中的最佳实践

Node.js与HTTP响应主体的unicode问题

使用Node.js构建命令行工具

vscode代码片段建议bug

从Node.js Stream写入多个文件

node.js的初步认识