首页 > Web开发 > 详细

node.js

时间:2019-12-10 01:45:40      阅读:105      评论:0      收藏:0      [点我收藏+]

 

什么是Nodejs?

Nodejs是一个基于Chrome V8 引擎的JavaScript运行时(运行环境)。

 

下载安装Nodejs

 

官方站点:https://nodejs.org/en/

 

国内站点:http://nodejs.cn/

 

建议安装长期支持版(Long Term Support)

 

 

 

建议不要修改默认的安装目录

 

 

 

默认安装的内容有哪些?

 

 

Node.js runtime JavaScript运行时的环境

npm package manager(Node Package Manager,NPM)Node.js的包管理器,简称为npm

Online documentation shortcuts 在线帮助文档

Add to PATH 将Nodejs安装目录添加到PATH环境变量中

 

Node.js提供了哪些内容?

l  Nodejs运行时,JavaScript代码运行时的环境。

l  提供了一些核心模块,应用程序编程接口(Application Program Interface,API)

n  官方API文档https://nodejs.org/dist/latest-v12.x/docs/api/

n  国内API文档http://nodejs.cn/api/

l  交互式解析器(Read Execute Print Loop,REPL),以及一些相关的命令

n  打开命令窗口,输入node并回车,即可进入交互式解析器

n  输入.help命令,获取帮助信息。

n  输入.break或.clear(.break命令的别名)跳出当前代码块,例如,if(true){ .break

n  输入.save命令,可以将当前会话中的代码保存到一个文件中,例如,.save app.js

n  输入.load命名,可以一个文件中的代码加载到当前会话中执行,例如,.load app.js

n  输入.editor命名,进入编辑器模式,Ctrl + D编辑完成,Ctrl + C取消编辑

n  输入.exit命令,回车既可以退出交互式解析器

l  引入CommonJS模块化规范,同时支持ECMAScript模块化规范

 

 

CommonJS模块化规范

设计初衷

 

早期的JavaScript没有模块化系统,标准库比较少,缺乏包管理器工具;为了让JavaScript可以在任何地方执行,以达到Java、C#、PHP这些后台语言具备开发大型应用的能力。

 

设计理念

 

l  在Node.js模块系统中,每个文件都被视为一个独立的模块,拥有独立的作用域。

l  使用普通方式定义的变量、常量、函数以及类等等都属于当前模块。

l  通过exports和module.exports来导出模块中的成员。

l  使用require()方法导入其他模块导出的成员。

l  所有的代码都运行在当前模块作用域下,不会污染全局作用域。

l  模块可以被多次导入,但是模块中的代码只会在第一次被加载时执行,执行结果会被缓存,再次加载时,则读取上次缓存的结果。

l  模块会按照引入的顺序同步加载。

 

导出模块成员

使用module.exports对象导出模块成员

 

每个模块内部都有一个 module 对象,代表当前模块,我们可以使用它的 exports 属性导出模块成员。该属性的初始值为一个空对象,我们只需要将被导出的成员添加为该对象的属性即可。例如:

 

// 模块私有的成员

function divide ( x, y ) {

    return x / y;

}

 

function multiply ( x, y ) {

    return x * y;

}

 

// 如果我们想导出某个成员的话,只需要将它添加为 module.exports 对象的属性即可。

// 模块导出的成员

module.exports.add = function (x, y) {

    return x + y;

};

 

module.exports.subtract = function (x, y) {

    return x - y;

};

 

使用module.exports的别名:exports对象

 

为了方便导出模块成员,Node.js为每个模块提供了一个exports对象,exports对象的初始值与module.exports对象的初始值相同,也就是说exports对象与module.exports对象指向同一个对象。我们可以用如下代码解释:

 

var exports = module.exports = {}

 

这样一来,我们就可以直接使用exports对象导出模块成员,如下所示:

 

exports.add = function (x, y) {

    return x + y;

};

 

exports.subtract = function (x, y) {

    return x - y;

};

 

一次导出多个成员

 

上面的两种导出方式每次只能导出一个成员,如果我们想一次导出多个成员,则可以使用一个包含要导出成员的新对象替换module.exports属性来的值(空对象)。

 

function add (x, y) {

    return x + y;

}

 

function subtract (x, y) {

    return x - y;

}

 

module.exports = {

  add,

  subtract

};

 

module.exports属性的值改变之后,exports对象的值并不会随着改变,此时两者不再指向同一个对象。Node.js规定只有module.exports对象中的成员会被导出,因此exports对象失去了导出模块成员的功能。

 

// 使用一个新对象替换module.exports属性来的对象

module.exports = {

    add,

    subtract

};

 

// exports对象失去了导出模块成员的功能,此处导出模块成员失败。

exports.multiply = multiply;

 

// 1. exports对象的初始值与module.exports对象相同,指向同一个空对象。

// 2. module.exports属性的值改变之后,exports对象的值并不会随着改变,还指向原来的空对象。

// 3. 由于只有module.exports对象中的成员会被导出,因此向exports对象添加的成员不会被导出。

// 简而言之,module.exports 指向哪个对象,哪个对象中的成员就会被导出

 

但是我们可以让exports对象重新指向module.exports对象,从而让exports对象再次具有导出模块成员的功能。

 

exports = module.exports = {

  add,

  subtract

};

 

// 由于exports对象与module.exports再次指向同一个对象,因此下面的导出语句成功

exports.multiply = multiply;

 

 

NodeJS模块

 

NodeJS官方提供的核心模块

 

使用NodeJS

 

第三方开发者提供的模块

 

 

 

 

 

node.js

原文:https://www.cnblogs.com/wszzj/p/12014038.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!