1.什么是Node.js
Node.js 是一个基于"Chrome V8 引擎" 的JavaScript
运行环境
Chrome V8 引擎是什么呢?
V8引擎是一款专门
解释和执行JS代码
的虚拟机
, 任何程序只要集成了V8引擎都可以执行JS代码
NodeJS不是一门编程语言, 只是一个
运行环境
, 就像windows
,Linux
,iOS
等一样。由于集成了V8
引擎,可以这个运行环境可以执行我们编写的JS代码。这个运行环境的最大特点是可以操作系统的底层API
,通过这些API 我们可以编写出网页中无法实现的功能
2.NodeJS的3种安装方式
方式一
- 官网现在安装包
- 安装全程 下一步,直到完成
- 在终端工具使用
node -v
查看安装版本
方式二 手动安装
image.png
- 官网下载.zip安装包,根据自己的电脑选择下载
- 解压下载好的安装包,把解压完成的文件 方在对应的盘符中,比如:windows电脑,放在D盘的
node
文件夹中
3.配置环境变量
鼠标右键我的电脑
---->属性
----->高级系统设置
----->环境变量
---->系统变量
----->path路径
----->新建一个node的path路径
注意: 新建的path路径
就是你解压完成文件 放在对应D盘的路径
image.png image.png image.png4.在命令行工具中输入 node -v 查看安装完成的版本
方式三 安装多个版本
在nodejs的官网上我们可以看到,nodejs有多个版本,我们想要安装多个版本要怎么做?
就需要用到NVM
image.png image.png
- 在github打开NVM的网址 如下图
2.前期准备工作,下载
二进制文件
2.1.打开我的我的电脑
2.2. 在
D盘
(可以是任意的盘符)
2.3.创建一个文件夹
develop
2.4.在
develop
文件夹中创建2个子文件夹NVM
和Node
2.5 把下载的
二进制文件
放在NVM
中解压,用管理员身份
运行install.cmd
文件
2.6 回车
enter
生成一个seting.txt
文件,把seting.txt
文件另存到NVM
文件夹中。
image.png2.7 在
NVM
文件夹中找到seting.txt
,打开编辑 这个文件,配置路径
,保存
3.配置环境变量
3.1 鼠标右键
我的电脑
---->属性
3.2 找到
高级系统设置
---->环境变量
image.png3.3 在系统变量中找到
NVM_HOME
和NVM_SYMLINK
-- 如果没有 这个2个名称,就自己点击新建
创建2个这样的变量,
--如果有这2个变量
,但是没有值就编辑
配置路径
NVM_HOME
---->对应的路径就是NVM文件夹路径 D:\develop\NVM
NVM_SYMLINK
--->对应的路径就是Node文件夹的路径 D:\develop\Node
image.png3.4 找到
path
打开----->新建
配置环境变量%NVM_HOME% %NVM_SYMLINK%
3.5 查看
nvm version
版本
3.6 安装你想要安装的nodejs就行 比如:
nvm install 10.6.3
3. NVM常用命令
- nvm list 查看当前安装的Node.js所有版本
- nvm install 版本号 安装指定版本的Node.js
- nvm uninstall 版本号 卸载指定版本的Node.js
- nvm use 版本号 选择指定版本的Node.js
4.Global全局变量
-
__dirname
: 绝对路径的文件夹- 打印结果: /Users/cc/Desktop/web/Web2/10-Node
-
__filename
:绝对路径的文件- 打印结果:/Users/cc/Desktop/web/Web2/10-Node/05-js.js
- 延迟执行
setTimeout(callback, delay[, ...args])
- 定时器
setInterval(callback, delay[, ...args])
5. NodeJS开发中的模块
- NodeJS采用
CommonJS
规范实现了模块系统 - 在 Node.js 模块系统中,
每个文件
都被视为一个独立的模块
- CommonJS规范
CommonJS规范规定了如何定义一个模块, 如何暴露(导出)模块中的变量函数, 以及如何使用定义好的模块
- 在CommonJS规范中
一个文件就是一个模块
- 在CommonJS规范中每个文件中的
变量函数都是 私有的
,对其他文件不可见的- 在CommonJS规范中每个文件中的变量函数必须通过
exports暴露(导出)
之后其它文件才可以使用- 在CommonJS规范中想要使用其它文件暴露的变量函数必须通过
require()导入模块
才可以使用
定义一个 07-a.js
模块 内容如下
let a = 10;
function sum(c,b){
return c + b;
}
// exports是一个对象
//暴露出去 一个属性变量
exports.a = a;
exports.fn = sum;
b.js
文件中导入模块
//导入a.js模块
let obj = require("./07-a.js");
//打印
console.log(obj);
let res = obj.fn(10,10);
console.log(res);
暴露模块内部变量的方式有多种
1.通过exports.xxx = xxx
导出
- 通过
module.exports.xxx = xxx
导出
那么上述的a.js文件可以这样写
let name = "CC";
function sum(c,b) {
return c +b;
}
//暴露给外面变量/函数
module.exports.name = name;
module.exports.fn = sum;
3.通过全局变量
global
暴露(不建议使用这个)
let name = "CC";
function sum(c,b) {
return c +b;
}
//暴露变量给外界
global.str = name;
global.fn = sum;
注意点
注意:
exports
和module.exports
的区别
1.在导入变量的时候,
exports
不能是直接将变量赋值,这样在打印的时候的{}
,只能给exports
对象添加一个属性变量赋值 暴露
let name = "cc";
let obj = {age:18,height:"1.70"};
//这样暴露变量是不可以的
exports = name; //打印出是一个 {} 对象
// 必须赋值exports对象的属性
exports.name = name; //这样才可以
module.exports = name;
这样赋值是可以的
let name = "cc";
let obj = {age:18,height:"1.70"};
let obj1 = {name:name,info:obj};
module.exports = name;
导入模块
require
需要注意一下几点
1.
require导入模块
时可以不添加导入模块的类型后缀文件名
- 如果没有指定导入模块的类型, 那么会依次查找
.js .json .node文件
- 无论是三种类型中的哪一种, 导入之后都会转换成
JS对象
返回给我们
require可以导入"自定义模块(文件模块)"、"系统模块(核心模块)"、"第三方模块"
导入自定义模块时必须指定路径
- 导入"系统模块"和"第三方模块"是不用添加路径
- 如果是"系统模块"直接到环境变量配置的路径中查找
- 如果是"第三方模块"会按照module.paths数组中的路径依次查找
6.包和包管理工具
-
所谓的包: 就是来维护多个模块之间的关系的
-
模块前面说过就是一个单一功能的函数
-
包管理工具
NPM(Node Package Manager)
- NPM不需要单独安装,只要配置好
Node.js
环境,就会自动安装
- NPM不需要单独安装,只要配置好
6.1 NPM的使用
- 查看全局配置
npm config list
NPM的安装一般分为2种,全局安装 和 本地安装
1.全局安装 (一般用于安装全局使用的工具, 存储在全局node_modules中)
-
npm install -g 包名
安装包 -
npm uninstall -g 包名
卸载包 -
npm update -g 包名
更新包 (更新失败可以直接使用install)
- 本地安装 (一般用于安装当前项目使用的包, 存储在当前项目node_modules中)
npm install 包名
npm uninstall 包名
npm update 包名
6.2 初始化本地文件
npm init
-> 初始化package.json文件
npm init -y
-> 初始化package.json文件
npm install 包名 --save
npm install 包名 --save-dev
包描述文件 package.json, 定义了当前项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。
npm install 命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境
注意点:package.json文件中, 不能加入任何注释
当安装好包的时候,比如Jquery的时候,在package.json 和 package-lock.json文件中会生成
- dependencies:生产环境包的依赖,一个关联数组,由包的名称和版本号组成
- devDependencies:开发环境包的依赖,一个关联数组,由包的名称和版本号组成
1.将项目拷贝给其它人, 或者发布的时候, 我们不会将node_modules也给别人, 因为太大
2.因为有的包可能只在开发阶段需要, 但是在上线阶段不需要, 所以需要分开指定
npm i 所有的包都会被安装
npm i --production 只会安装dependencies中的包
npm i --development 只会安装devDependencies中的包
关于
package.json
文件的说明解释
{
//项目的名称
"name": "11-npm",
//当前的版本
"version": "1.0.0",
//描述
"description": "",
//入口文件
"main": "index.js",
//实现脚本语言
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
//项目的关键字
"keywords": [],
//作者
"author": "",
//开元协议
"license": "ISC"
}
网友评论