Node.js运行
Posted 前端百货店
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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运行方式二:运行js文件
我们可以直接输入命令node+文件名运行。我们在03.js文件里写了一些js代码,然后进入终端输入dir显示出了E盘所有的文件及文件夹列表,然后输入node 03.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的函数。
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运行的主要内容,如果未能解决你的问题,请参考以下文章