文章目录
NodeJS基础
1.什么是nodejs
Node.js 是一个基于"Chrome V8 引擎" 的JavaScript “运行环境”
所以 NodeJS不是一门编程语言, NodeJS是一个运行环境,通过这些底层API我们可以编写出网页中无法实现的功能(诸如: 打包工具, 网站服务器等)
2.安装nodejs
3.node环境和浏览器有什么不同
3.1内置对象不同
- 浏览器环境中提供了window全局对象
- NodeJS环境中的全局对象不叫
window
, 叫global
3.2this默认指向不同
- 浏览器环境中全局this默认指向window
- NodeJS环境中全局this默认指向空对象
{}
3.3API不同
- 浏览器环境中提供了操作节点的DOM相关API和操作浏览器的BOM相关API
- NodeJS环境中没有HTML节点也没有浏览器, 所以NodeJS环境中没有DOM/BOM
4.了解global
全局变量的属性和方法
4.1 __dirname
- 当前文件所在文件夹的绝对路径
- 例子:d:\Desktop\1 Node代码资料.zip\Node
4.2 __filename
- 当前文件的绝对路径
- 例子:d:\Desktop\1 Node代码资料.zip\Node\05.js
4.3 exports
和require
4.3.1 了解什么是模块
在浏览器开发中为了避免命名冲突, 方便维护等等
我们采用类或者立即执行函数的方式来封装JS代码, 来避免命名冲突和提升代码的维护性
其实这里的一个类或者一个立即执行函数就是浏览器开发中一个模块
但是存在一个问题:没有标准和规范导致会很乱.所以需要利用模块
4.3.2 模块特点
- NodeJS采用CommonJS规范实现了模块系统
- 规范中一个文件就是一个模块
- 规范中每个文件中的变量函数都是私有的,对其他文件不可见的
- 规范中每个文件中的变量函数必须通过exports暴露(导出)之后其它文件才可以使用
- 规范中想要使用其它文件暴露的变量函数必须通过require()导入模块才可以使用
例子:
a.js
let name = "yay";
function sum(a, b) {
return a + b;
}
exports.str = name;
exports.fn = sum;
b.js
let aModule = require("./a");
console.log(aModule);
console.log(aModule.str);
let res = aModule.fn(10, 20);
console.log(res);
自己运行试试
4.3.3 导出数据三种方式
通过exports.xxx = xxx
导出- 通过
module.exports.xxx = xxx
导出 - 通过global.xxx = xxx导出(不推荐)
无论通过哪种方式导出, 使用时都需要先导入(require)才能使用
第一种和第二种方式的区别(仅仅了解)
exports只能通过 exports.xxx方式导出数据, 不能直接赋值
exports=xxx
module.exports既可以通过module.exports.xxx方式导出数据, 也可以直接赋值
module.exports=xxx
4.4require
require
导入模块时可以不添加导入模块的类型- 如果没有指定导入模块的类型, 那么会依次查找
.js
.json
.node
文件 - 无论是三种类型中的哪一种, 导入之后都会转换成JS对象返回给我们
- 如果没有指定导入模块的类型, 那么会依次查找
- 导入自定义模块时必须指定路径
- 导入"系统模块"和"第三方模块"是不用添加路径
- 原因:
- 如果是"系统模块"直接到环境变量配置的路径中查找
- 如果是"第三方模块"会按照module.paths数组中的路径依次查找
- 原因:
注意点:
例如:setInterval / clearInterval
和setTimeout / clearTimeout
等方法都是和windows
是一样的,该怎么用就怎么用
5.包使用
1.什么是nrm?
由于npm默认回去国外下载资源, 所以对于国内开发者来说下载会比较慢
所以就有人写了一个nrm工具, 允许你将资源下载地址从国外切换到国内
npm install -g nrm
安装NRM
nrm --version
查看是否安装成功
nrm ls
查看允许切换的资源地址
nrm use taobao
将下载地址切换到淘宝
PS:淘宝资源地址和国外的地址内容完全同步,。淘宝镜像与官方同步频率目前为 10分钟 一次以保证尽量与官方服务同步
2.什么是cnpm?
由于npm默认回去国外下载资源, 所以对于国内开发者来说下载会比较慢
cnpm 就是将下载源从国外切换到国内下载, 只不过是将所有的指令从npm变为cnpm而已
npm install cnpm -g –registry=https://registry.npm.taobao.org
安装CNPM
cnpm -v
查看是否安装成功
使用方式同npm, 例如: npm install jquery 变成cnpm install jquery 即可