常用NPM命令
输入vim
: 进入编辑模式,如 vim serve.js
键入i
: 进入新增内容模式
键入Esc
: 退出键入模式
键入 :wq
保存并退出vim编辑
-
导入模块:const module = require('module-name');
-
导出模块:module.exports = {};
-
执行js: node server.js
-
查看版本: node -v
-
node版本升级: sudo npm install npm -g
-
安装模块: npm install 模块名 如 npm install express
-
全局安装: npm install express -g
-
本地安装: npm install express
-
查看全局安装模块: npm list -g
-
查看本地安装模块: npm list
-
查看模块版本号: npm list grunt
-
卸载模块: npm uninstall express
-
查看node_modules目录下是否存在卸载的包: npm ls
-
更新模块: npm update express
-
搜索模块:npm search express
-
创建模块: npm init
-
发布模块:npm publish
-
创建package.json文件: npm init -y
-
安装指定包,记录到devDependencies节点中
npm install 包名 —save-dev 可简写成: npm I 包名 -D -
查看当前下包镜像源:npm config get registry
-
切换到淘宝镜像源:npm config set registry=https://registrt.npm.taobao.org/
-
nrm切换下包镜像源
安装nrm: npm I nrm -g
查看可用镜像源: nrm ls
切换到淘宝镜像源: nrm use taobao -
安装全局包:npm I 包名 -g
-
卸载全局包: npm uninstall 包名 -g
-
发布包
发布到npm官方服务器
从淘宝镜像服务器切换到npm官方服务器
终端登录npm
发布包到npm,切换到包的根目录发布 -
登录npm: npm login
-
发布包:npm publish
-
删除已发布的包: npm unpublish 包名 —force
-
查看插件版本号:npm view webpack version
-
npm init -y 快速创建包
-
npm i -S uniq npm i -save uniq 生产依赖
-
npm i -D uniq npm i -save-d uniq 开发依赖
-
npm i
|npm install
安装所有的包 -
npm i <包名@版本号> 安装指定版本号的包
-
nom r [remove] uniq 删除依赖
-
npm run serve 执行脚本 serve是指令的别名
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
-
nvm list available 显示所有可以下载的Node.js版本
-
nvm install 12.16.1 安装指定Node.js版本
-
nvm use 12.16.1 切换版本
-
nvm list 显示已安装的Node.js版本
-
nvm install latest 安装最新版本
-
nvm uninstall 12.16.1 卸载指定版本
Node.js的模块
在 Node 应用程序中,执行异步操作的函数将回调函数作为最后一个参数
, 回调函数接收错误对象作为第一个参数
。
const fs = require("fs");
// 异步读取
fs.readFile('temp.txt', (err, data) =>{
if (err) {
return console.error(err);
}
console.log("异步读取: " + data.toString());
});
// 同步读取
var data = fs.readFileSync('temp.txt');
console.log("同步读取: " + data.toString());
// 异步写入
fs.writeFile('temp.txt', '写入文件的内容', (err)=> {
if (err) {
return console.error(err);
}
console.log("写入成功!");
});
一个 Node.js 文件就是一个模块
,这个文件可能是JavaScript 代码、JSON 或者编译过的C/C++ 扩展
nodejs内置模块
在 Node.js 中,有四种主要的模块类型:
-
内置模块:这些是 Node.js 自带的模块,无需通过 npm 安装就可以直接使用。例如,
fs
、path
、events
、Buffer
、http
、url
、util
等都是内置模块。 -
自定义模块:用户可以创建自己的模块,并在其他地方引用。在 Node.js 中,
一个文件就是一个模块
。你可以在一个文件中编写 JavaScript 代码,然后通过require
关键字在其他文件中引用这个模块。 - 第三方模块:这些是通过 npm 安装的模块。npm 是 Node.js 的包管理器,允许用户分享和重用代码。你可以通过 npm install 命令来安装你需要的模块。
-
Node.js 的核心模块:这些是 Node.js 的核心部分,实现了 Node.js 的基础功能。例如,
buffer
、stream
、process
等都是核心模块。这些模块在 Node.js 的源代码中可以找到,但不可以直接修改。
引入模块require
require方法接受以下几种参数的传递:
- http、fs、path等:
引入原生模块
。 -
./
:./mod或../mod,相对路径
的自定义文件模块。 -
/
: /pathtomodule/mod,绝对路径
的自定义文件模块。 - mod:非原生模块的文件模块,
第三方模块
。
导出模块modules.exports
-
modules.exports
可以导出一个函数、对象等任意类型的数据
-
exports
仅仅是 module.exports 的一个引用,其实就是module.exports = { }
如果要对外暴露属性或方法,就用exports就行,要暴露对象(类似class,包含了很多属性和方法),就用module.exports。不建议同时使用 exports 和 module.exports。
const date = require('./src/dateFormat');
const escape = require('./src/htmlEscape');
// 使用展开运算符,向外暴露date和escape的成员
module.exports = {
...date,
...escape
}
全局变量
- JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即
全局变量
。 - 在
浏览器 JavaScript 中
,通常window
是全局对象, 而Node.js 中
的全局对象是global
,所有全局变量
(除了 global 本身以外)都是 global 对象的属性
。 - global 最根本的作用是作为全局变量的宿主,当你定义一个全局变量时,这个变量同时也会成为全局对象的属性
-
__filename
表示当前文件的绝对路径 -
__dirname
表示当前文件所处的文件目录绝对路径 setTimeout(cb,ms)
clearTimeout(t)
setInterval(cb,ms)
console
process
模块的加载机制
优先从缓存中加载
模块在第一次加载后会被缓存。多次调用require()
不会导致模块的代码被执行多次。所有模块加载均是优先加载缓存
的,可以提高执行效率。
内置模块加载机制
内置模块是node.js官方提供的模块,加载的优先级最高
。
自定义模块加载机制
使用require加载自定义模块时,必须指定以./
或../
开头的路径标识符,在加载自定义模块时,如果没有指定这样的标识符,node会把他当着内置模块或第三方模块进行加载。
加载模块省略模块扩展名,node.js会按顺序别分尝试加载。
- 按照
确切的文件名
进行加载 - 补全
.js
扩展名进行加载 - 补全
.json
扩展名进行加载 - 补全
.node
扩展名进行加载 - 加载失败,终端报错
第三方模块加载机制
第三方模块是指在node_modules目录
下安装的模块。传递给require()
的标识符不是一个内置模块,也没有以./
或../
开头的路径标识符,则node会从当前模块的父目录
开始,尝试从node_modules目录中加载模块。如果在父目录中也找不到,则会继续往上一级目录
中寻找,直到文件系统的根目录
。
工具
nodemon
工具: 避免频繁关闭、启动服务器 代码发生改变自动重启服务器
nodemon app.js 启动服务器
网友评论