参考:https://www.jmjc.tech/less/114
-
简介:
NodeJs,一个文件就是一个模块。
Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。
Node.js
诞生于 2009年,是一个基于 JavaScript 语言和 Google V8 引擎 开源的 Web 服务器项目,它让 JavaScript 第一次脱离了浏览器独立存在。
Node.js
被发明是用于解决服务器的 性能
问题,弥补 C++
这一方面的一些繁琐。借助 JavaScript 天生异步事件驱动的特性和 V8 高性能引擎,加上市场已经有无数的 JS 语言使用者,所有在推出市场不久就非常的火爆。
发展到今天,Node
的性能依然是不错的,但可能已经不是它的主要卖点。PHP、Java
这些老牌的 Web 语言都在进步,后起之秀 Golang
也渐渐占领高性能服务器领域。所有它现在的卖点是 全栈
,没错,学会了 Node.js 我们的前后端能统一使用一种语言开发,一个小的项目,用这种模式开发效率是非常高的,而且通用的语法让它的性价比变得非常的高,实在让人很难拒绝。
-
NPM
在开始写代码之前,我们还需要了解另外一个工具 npm
,它是 Node.js 的包管理器,类似 Python 的 pip,是一个帮助我们从网络中下载 Node模块
到本地环境的工具。
npm
并不需要独立安装,它在 node
安装的时候已经附带。
$ npm -v
6.14.8
- 初始化
在使用 npm 安装模块之前,需要进行初始化,我们建立一个项目工程 test
,进入项目目录,然后运行 npm init
填写配置信息。如果成功, test 目录会多出一个 package.json
文件,它是 项目的配置文件
,由 npm 管理控制。
- 安装模块
我们运行这条命令 npm install jquery
,尝试安装一个模块。之后会多出一个 node_modules
,存放了我们刚刚安装的 jquery
。
- 指令
npm
的更多用法。
// 安装
npm install module // 安装模块到当前工程目录
npm install module -g // 全局安装
// 查找
npm ls module // 查找当前工程目录是否安装某模块
npm ls module -g // 全局查找
// 卸载
npm uninstall module
// 更新
npm update module
- cnpm
由于国内的网络问题,使用 npm 下载模块有时会非常的慢。cnpm
是淘宝提供的一个 npm 镜像,用法和 npm 一样。
npm install -g cnpm // 安装
cnpm i ...
- .npmrc
另一种种提升下载速度的办法,可以设置代理,通过 ~/.npmrc
文件。
registry=https://registry.npm.taobao.org/
disturl=https://npm.taobao.org/dist
-
引用模块:
- 例子:
Node会依次在内置模块、全局模块和当前模块下查找 。没写 "./" 目录可能会出错
录如下:
$ tree
.
|-- src
| |-- MyEntry.js
| `-- people
| |-- family
| | `-- family.js
| |-- man
| | `-- son.js
| `-- woman
| `-- daughter.js
`-- tsconfig.json
5 directories, 5 files
son.js
module.exports = {
showInfo:function(name,age){
console.log("son::showInfo: ",name,", ",age);
},
showName:function(name){
console.log("son::showName ",name);
}
}
daughter.js
module.exports = {
showInfo:function(name,age){
console.log("daughter::showInfo",name,", ",age);
}
};
family.js
var son = require("../man/son");
var daughter = require("../woman/daughter");
module.exports = {
son: son,
showInfo: function () {
son.showInfo("jim", 9);
daughter.showInfo("marry", 13);
}
};
MyEntry.js
var family = require("./people/family/family");
family.showInfo();
family.son.showInfo("jj", 33);
显示结果:
$ node src/MyEntry.js
son::showInfo: jim , 9
daughter::showInfo marry , 13
son::showInfo: jj , 33
-
HTTP 模块
我们知道,Node.js 的应用场景是 高性能服务器
,而这一切的工作都是基于