Node.js是一个基于Chrome V8引擎的JavaScript运行环境。
Node.js是JavaScript的后端运行环境,因此Node.js中是无法调用DOM和BOM等浏览器内置API。
Node.js官网
证明安装成功:
打开cmd(终端),输入:
node -v
执行命令 例如: node test.js
node 要执行的js文件的路径
终端中的快捷键
tab键,能够快速补全路径
esc键,能够快速清空当前输入的命令
输入cls命令,清空终端
fs模块是Node.js官方提供的,用来操作文件的模块。
readFile(path [, options ], callback)
运行
node 1.js
writeFile(path, data[, options], callback)
注意:
在使用fs模块操作文件时,如果提供的操作路径是./或者…/开头的相对路径,很容易出现路径动态拼接错误的问题。
原因:代码在运行时候,会以执行node命令时所在的目录,动态拼接出被操作文件的完整路径。
解决方法:绝对路径
__dirname 表示当前文件所处的目录
// 导入fs模块
const fs = require("fs");
fs.writeFile(__dirname + "/2.txt", "写入的内容111", (err) => {
if (err) {
console.log("写入错误" + err);
}
});
path模块是Node.js官方提供的、用来处理路径的模块。例如:
path.join() 用来拼接多个路径片段
path.basename() 用来从路径字符中,将文件名解析出来。
// 导入fs模块
const fs = require("fs");
const path = require("path");
fs.writeFile(path.join(__dirname, "/2.txt"), "写入的内容111111", (err) => {
if (err) {
console.log("写入错误" + err);
}
});
http模块是Node.js官方提供的、用来创建web服务器的模块。
// 1.导入http模块
const http = require("http");
// 2.创建web服务器实例
const server = http.createServer();
// 3.为服务器实例绑定request事件,监听客户端的请求
/*
req: 请求对象,包含与客户端相关的属性和数据。例如:
req.url 是客户端请求的url地址
req.method 是客户端的Method请求类型
res: 响应对象,包含与服务器相关的属性和数据
res.end() 想客户端发送指定的内容,并结束此次请求的处理过程
*/
server.on("request", function (req, res) {
// 获取url地址
const url = req.url;
let content = "404
";
if (url === "/") {
content = "首页
";
} else if (url === "/about.html") {
content = "关于
";
}
// 为防止中文显示乱码的问题,需要设置响应头 Content-Type
res.setHeader("Content-Type", "text/html; charset=utf-8");
res.end(content);
});
// 4.启动服务器
server.listen(8080, () => {
console.log("server is running at http://127.0.0.1:8080");
});
Node.js中根据模块来源的不同,将模块分为了3大类,分别是:
每个.js自定义模块中都有一个module对象,它里面存储了和当前模块有关的信息。例如:
外界用require()方法导入自定义模块时,得到的就是module.exports所指向的对象。
node.js遵循了CommonJS模块化规范,CommonJS规定了模块的特性和各模块之间如何相互依赖。
CommonJS规定:
什么是包?
Node.js中第三方模块又叫做包。npmjs
初次装包完成后,在项目文件夹下多一个node_modules的文件夹和package-lock.json的配置文件。
其中:
node_modules文件夹用来存放所有安装到项目中的包。require()导入第三方包时,就是从这个目录中查找并加载包。
package.json配置文件用来记录node_modules目录下的每一个包的下载信息。例如包的名字、版本号、下载地址等。
{
"name": "nodejs",
"version": "1.0.0",
"description": "",
"main": "1.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"moment": "^2.29.4"
},
"devDependencies": {
"eslint": "^8.25.0"
}
}
// 安装指定的包,并记录到devDependencies节点中
npm i 包名 -D
// 注意:上述命令是简写模式,等价于下面完整的写法:
npm install 包名 --save-dev
在使用npm下包的时候,默认是从国外的 https://registry.npmjs.org服务器进行下载。
方法:切换到国内的包镜像源
查看当前的下包镜像源
npm config get registry
将下包的镜像源切换为淘宝镜像源
npm config set registry=https://registry.npm.taobao.org/
为了更方便的切换下包的镜像源,我们可以安装nrm这个小工具,利用nrm提供的终端命令,可以快速查看和切换下包的镜像源。
通过npm 包管理器,将nrm安装为全局可用的工具
npm i nrm -g
查看可用的镜像源
nrm ls
将下载的镜像源切换为taobao镜像
nrm use taobao