什么是Node.js?
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时。
Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型。
Node是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。
Node对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。V8引擎执行Javascript的速度非常快,性能非常好。Node是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。
总结: Node.js 是一个让 JavaScript 运行在服务端的开发平台,有了Node.js我们就可以使用JavaScript这门语言做服务器端的编程应用。
什么是V8引擎?
每一个浏览器都有一个内核,内核中有引擎。引擎分为:渲染引擎(渲染DOM)和脚本引擎(运行脚本语言)。
脚本引擎中最流行的就是chrome中的V8引擎。
Node.js用来做什么?
- node可以解析js代码(因为没有浏览器安全级别的限制)因此提供了许多系统级别的API
- node可以编写独立的服务端应用,无需借助任何web服务器,可以连接文件系统,以及操作数据库
- node一般在实际应用中用来做中间层服务器使用
Node.js之模块化
什么是模块化?
Node.js一个重要的特性就是模块化,模块就是node.js对常用功能进行分组的方式。
为什么要模块化?
- 模块化方便日常的维护
- 最大程度的实现代码复用
什么是高内聚、低耦合?
高内聚:表示模块的独立性、独立性越强、内聚度越高
耦合度:表示模块之间的关系,关系越紧密、耦合度越高
模块化规范
- AMD——前端的异步加载模块规范,(依赖前置: 指的是在定义模块时,就将所依赖的模块标明)
- CMD——前端的异步加载同步书写模块规范,(依赖就近: 指的是在定义模块时,用到哪个模块,才引入哪个模块)
- CommonJS——后端的同步加载模块
CommonJS规范(Node.js规范)
1、一个文件就是一个模块,模块里面的成员是私有的,各模块之间相互独立
2、由于模块之间相互独立,如果其他模块想要使用该模块里面的成员,那么该模块必须把该成员暴露出来,暴露的方式可以是exports
或者module.exports
3、如果要引用其他模块,那么必须使用require
引入
模块的分类
- 核心模块——Node.js官方提供的模块(http、fs、os、path等),require可以直接引入
- 第三方模块——互联网上广大的开源爱好者把一些常用的功能封装成了模块,然后进行打包,形成一个一个的工具,把这些工具包交给一个https://www.npmjs.com/网站进行统一的管理。我们需要借助一个叫做npm的包管理器进行下载,更新,删除
- 自定义模块——需要自己写的模块,用module.exports导出,用require引入
注意:引入核心模块、第三方模块和引入自定义模块的区别。引入核心模块、第三方模块时,可以使用require('模块名')
直接引用,引入自定义模块时使用require('路径+模块名')
引入。
模块和包之间的区别
- 一个文件代表一个模块
- 多个模块放在同一个目录下形成包
使用Node.js搭建一个简单的服务器
// 1、引入http模块
const http = require('http');
// 2、创建服务器
const server = http.createServer((req, res) => {
res.end("hello");
})
const port = 3000;
// 3、绑定端口
server.listen(port, () => {
console.log("server is run at port " + port);
})
npm
- npm 是一个第三方的包管理器,随着node的安装而安装。
- npm 是一个网站https://www.npmjs.com/
- npm 是一个命令
npm 常用命令
- 初始化:npm init
- 查看版本:npm -v
- 安装模块:npm install
- 全局安装:npm install -g
- 卸载模块:npm uninstall
- 更新模块:npm update
- 搜索模块:npm search
- 清除缓存:npm cache clear
- 查看包信息:npm info <包名>
- 查看包文档:npm docs <包名>
- 查看包版本信息:npm info <包名> versions
- 安装指定版本:npm install <包名>@版本号 -S
- 查看全局安装目录:npm root -g
- 修改存储目录:npm config set prefix “d\xxxx”
扩展nrm
- 安装nrm: npm install nrm -g
- 查看可用的源:nrm ls
- 切换源:nrm use 源的名字
- 添加公司私有源 nrm add <源名称> http://xxxxx
cnpm
cnpm是淘宝镜像,因为npm服务器在国外,下载速度慢,所以下载源可以改成国内的淘宝镜像。全局安装:npm install -g cnpm
。安装后,可以使用cnpm命令下载模块。
yarn
yarn是Facebook的大牛开发出来的一个包管理器,功能和npm类似。
yarn常用命令
- npm install yarn -g 安装yarn
- npm install nrm -g 安装nrm
- nrm ls 查看可用源
- nrm use 源名 切换源
- yarn init == npm init
- yarn global add == npm install -g
- yarn global bin == npm -g bin
- yarn add 包名== npm install 包名 --save
- yarn add 包名 -dev == npm install 包名 --dev-save
- yarn update 包名 == npm undate 包名 更新包
- yarn remove 包名 == npm uninstall 包名 删除包
- yarn bin 全局安装目录
- yarn cache ls 查看缓存
- yarn clear 清除缓存
- yarn install 安装所有包