文章目录
一、Node.js是什么?
node.js是 javascript 的服务器端运行环境,可以让程序员使用 javascript 来实现服务器端的编程;
nodejs 由三部分组成:ECMAScript 核心 + 全局成员 + 模块成员,并且nodejs是基于commonjs规范。
二、Node.js学习
1.模块化
1.1全局作用域
global.name = "nick" //这样就可以在全局访问name
1.2模块作用域
在nodejs中每个 js 文件,都是一个独立模块,每个模块都有自己独立的作用域。因此模块中的成员,默认无法被其它模块访问。
(1)模块成员分类
1.核心模块 如 fs,path
2.第三方模块 npm上下载的包
3.用户自定义模块
那么不同模块之间如何相互访问呢,就需要引入与暴露模块。
(2)exports 与 module.exports 暴露模块
module.exports.name = "nick"
module.exports = {}
exports.name = "nick"
exports 与 module.exports的区别?
module表示当前模块,exports是module的属性,既可以使用exports,也可以使用module.exports暴露模块。
不能写exports ={},其他的方面它们一样。
因为直接赋值,就会导致exports不是指向module.exports。
//例如
var a = { name:"zs" }
var b = a
b.name = "ls" //给b.name重新赋值会影响a,
b = { age:18 } //但如果给b再重新赋值,则不指向a
(3)require 引用模块
//引入核心模块
require("fs")
//引入文件模块
require("./demo.js")
(4)模块化的原理
//利用闭包传参
(function () {
console.info(module, exports, require, __filename, __dirname);
})(exports, require, module, __filename, __dirname)
console.info(arguments);
2.包管理工具
2.1npm
npm下载的包放在node_modules中
npm init //初始化
npm install 包名 -g //全局安装
npm uninstall 包名 -g //全局卸载
npm version //版本信息
npm -v //版本号
npm search //搜包名
npm set registry https://registry.npm.taobao.org/ //设置淘宝镜像源 npm默认镜像源为https://registry.npmjs.org/
npm get registry //获取镜像源:https://registry.npm.taobao.org/
npm config set strict-ssl false //取消npm的https认证
2.2package.json
包都要以一个单独的目录而存在,且在顶级目录下,需符合 JSON 格式。
包描述文件:
name:包的名称,必须是唯一
repository :包源码存放仓库
description:包的简要说明
version:包的版本号
main:入口文件
dependencies:生产环境依赖项
devDependencies:开发环境依赖项
scripts:脚本(包含包的启动,打包命令等)
npm装包时-S和-D的区别?
name为包名
npm install name --save-dev 简写(npm install name -D)
自动把模块和版本号添加到devdependencies,dev是在开发环境中要用到的。
npm install name --save 简写(npm install name -S)
自动把模块和版本号添加到dependencies,dep是在生产环境中要用到的。
npm清理缓存的方法
npm cache clean --force
npm link的使用
作用
1、方便调试源码
2、在本地开发npm模块的时候,我们可以使用npm link命令,将npm 模块链接到对应的运行项目中去,方便地对模块进行调试。
命令
1、npm link
:创建软链接
2、npm unlink
:去掉软链接
3、npm link
包名:使用上一步创建的软链接
4、npm unlink
包名:删除引用的软链接
注意: 此处的包名指的是要使用的对方模块中package.json的name
软链接可以理解为是创建了一个快捷方式
锁定项目 Node 版本
执行完npm link后,当前模块就会链接到全局,路径是{prefix}/lib/node_modules/
npm config get prefix
命令获取到prefix的值
通过在 package.json 中指定 engines 字段,可限定项目使用的 node 版本。例如下面配置仅允许用户使用 14以上的node版本。更多的配置可以参考 package.json配置
"engines": {
"node": ">=14.19.0",
"npm": ">= 3.0.0"
}