其中,Chrome 浏览器的 V8 解析引擎性能最好!
每个浏览器都内置了 DOM、BOM 这样的 API 函数,因此,浏览器中的 JavaScript 才可以调用它们。
运行环境是指代码正常运行所需的必要环境。
如果希望通过 Node.js 来运行 Javascript 代码,则必须在计算机上安装 Node.js 环境才行。
安装包可以从 Node.js 的官网首页直接下载,进入到 Node.js 的官网首页(https://nodejs.org/en/),点击绿色的按钮,下载所需的版本后,双击直接安装即可。
打开终端,在终端输入命令node –v
后,按下回车键,即可查看已安装的 Node.js 的版本号。
Windows 系统快速打开终端的方式:
使用快捷键(Windows徽标键 + R)打开运行面板,输入 cmd 后直接回车,即可打开终端。
终端(英文:Terminal)是专门为开发人员设计的,用于实现人机交互的一种方式。
作为一名合格的程序员,我们有必要识记一些常用的终端命令,来辅助我们更好的操作与使用计算机。
在 Windows 的 powershell 或 cmd 终端中,我们可以通过如下快捷键,来提高终端的操作效率:
fs 模块是 Node.js 官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。
例如:
fs.readFile()
方法,用来读取指定文件中的内容fs.writeFile()
方法,用来向指定的文件中写入内容 const fs = require('fs');
使用 fs.readFile() 方法
,可以读取指定文件中的内容,语法格式如下:
以 utf8 的编码格式,读取指定文件的内容,并打印 err 和 dataStr 的值:
// 1. 先导入它
const fs = require('fs');
// 以 utf8 的编码格式,读取指定文件的内容,并打印 err 和 dataStr 的值:
fs.readFile('./demo.txt', 'utf8', function (err, dataStr) {
console.log(err);
console.log('-------------');
console.log(dataStr);
});
可以判断 err 对象是否为 null,从而知晓文件读取的结果:
// 3. 判断文件是否读取成功
// ----------------------------------------
// 1. 先导入它
const fs = require('fs');
// 以 utf8 的编码格式,读取指定文件的内容,并打印 err 和 dataStr 的值:
fs.readFile('./demo.txt', 'utf8', function (err, dataStr) {
if(err){
return console.log('文件读取失败!'+ err.message);
}
console.log('文件读取成功,内容是:' + dataStr);
});
使用 fs.writeFile() 方法,可以向指定的文件中写入内容,语法格式如下:
参数解读:
// 1. 先导入它
const fs = require("fs");
// 2.使用 fs.writeFile() 方法
fs.writeFile("./demo.txt","使用 fs.writeFile() 方法","utf-8",function(err){
console.log(err);
console.log("-----------------------------");
})
可以判断 err 对象是否为 null,从而知晓文件写入的结果:
// 1. 先导入它
const fs = require("fs");
// 2.使用 fs.writeFile() 方法
fs.writeFile("./demo.txt","使用 fs.writeFile() 方法","utf-8",function(err){
if(err){
return console.log("文件写入失败"+err.message);
}
console.log("文件写入成功");
console.log("-----------------------------");
})
在使用 fs 模块操作文件时,如果提供的操作路径是以 ./ 或 …/ 开头的相对路径时,很容易出现路径动态拼接错误的问题。
原因:代码在运行的时候,会以执行 node 命令时所处的目录,动态拼接出被操作文件的完整路径。
解决方案:在使用 fs 模块操作文件时,直接提供完整的路径,不要提供 ./ 或 …/ 开头的相对路径,从而防止路径动态拼接的问题。
fs路径问题 - 使用__dirname完美解决路径动态拼接的问题
// 1. 先导入它
const fs = require('fs');
// fs.readFile('./demo.txt', 'utf8', function (err, dataStr) {
// if(err){
// return console.log('文件读取失败!'+ err.message);
// }
// console.log('文件读取成功,内容是:' + dataStr);
// });
// 不要提供 ./ 或 ../ 开头的相对路径,从而防止路径动态拼接的问题。
fs.readFile(__dirname+'demo.txt', 'utf8', function (err, dataStr) {
if(err){
return console.log('文件读取失败!'+ err.message);
}
console.log('文件读取成功,内容是:' + dataStr);
});
使用 fs 文件系统模块,将素材目录下成绩.txt文件中的考试数据,整理到成绩-ok.txt文件中。
整理前,成绩.txt文件中的数据格式如下:
整理完成之后,希望得到的成绩-ok.txt文件中的数据格式如下:
核心实现步骤
path 模块是 Node.js 官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求。
例如:
如果要在 JavaScript 代码中,使用 path 模块来处理路径,则需要使用如下的方式先导入它:
使用 path.join() 方法,可以把多个路径片段拼接为完整的路径字符串,语法格式如下:
路径片段的序列
使用 path.join() 方法,可以把多个路径片段拼接为完整的路径字符串:
// 1. 先导入它
const path = require("path");
// 2. 使用 path.join() 方法
const pathStr = path.join("/a","/b","/c");
console.log(pathStr);///a/b/c
const pathStr1 = path.join(__dirname,"./ok.txt");
console.log(pathStr1);
//Users/zp/Desktop/前端/代码库/黑马教育培训/node/笔记/ok.txt
注意:今后凡是涉及到路径拼接的操作,都要使用 path.join() 方法进行处理。不要直接使用 + 进行字符串的拼接。
使用 path.basename() 方法,可以获取路径中的最后一部分,经常通过这个方法获取路径中的文件名,语法格式如下:
必选参数,表示一个路径的字符串
可选参数,表示文件扩展名
表示路径中的最后一部分使用 path.basename() 方法,可以从一个文件路径中,获取到文件的名称部分:
// 1. 先导入它
const path = require("path")
//2. 文件存放路径
const fpath = "./ok.txt";
// 3. 使用 path.basename() 方法,可以从一个文件路径中,获取到文件的名称部分
const fname = path.basename(fpath,".txt");
console.log(fname);
使用 path.extname() 方法,可以获取路径中的扩展名部分,语法格式如下:
必选参数,表示一个路径的字符串
返回得到的扩展名字符串使用 path.extname() 方法,可以获取路径中的扩展名部分:
// 1. 先导入它
const path = require("path")
//2. 文件存放路径
const fpath = "./ok.txt";
// 3. 使用 path.basename() 方法,可以从一个文件路径中,获取到文件的名称部分
const fname = path.extname(fpath,".txt");
console.log(fname);//.txt
回顾:什么是客户端、什么是服务器?
在网络节点中,负责消费资源的电脑,叫做客户端;负责对外提供网络资源的电脑,叫做服务器。
http 模块是 Node.js 官方提供的、用来创建 web 服务器的模块。通过 http 模块提供的 http.createServer() 方法,就能方便的把一台普通的电脑,变成一台 Web 服务器,从而对外提供 Web 资源服务。
如果要希望使用 http 模块创建 Web 服务器,则需要先导入它:
服务器和普通电脑的区别在于,服务器上安装了 web 服务器软件,例如:IIS、Apache 等。通过安装这些服务器软件,就能把一台普通的电脑变成一台 web 服务器。
在 Node.js 中,我们不需要使用 IIS、Apache 等这些第三方 web 服务器软件。因为我们可以基于 Node.js 提供的 http 模块,通过几行简单的代码,就能轻松的手写一个服务器软件,从而对外提供 web 服务。
如果希望在自己的电脑上创建一个 web 服务器,从而对外提供 web 服务,则需要导入 http 模块:
// 1. 导入 http 模块
const http = require("http")
调用 http.createServer() 方法,即可快速创建一个 web 服务器实例:
// 2. 创建 web 服务器实例
const server = http.createServer();
为服务器实例绑定 request 事件,即可监听客户端发送过来的网络请求:
// 3. 为服务器实例绑定 request 事件,监听客户端的请求
server.on("request",function(res,req){
console.log("为服务器实例绑定 request 事件");
})
调用服务器实例的 .listen() 方法,即可启动当前的 web 服务器实例
// 4. 启动服务器
server.listen(3000,function(){
console.log("调用服务器实例的 .listen() 方法,即可启动当前的 web 服务器实例");
})
只要服务器接收到了客户端的请求,就会调用通过 server.on() 为服务器绑定的 request 事件处理函数。
如果想在事件处理函数中,访问与客户端相关的数据或属性,可以使用如下的方式:
在服务器的 request 事件处理函数中,如果想访问与服务器相关的数据或属性,可以使用如下的方式:
当调用 res.end() 方法,向客户端发送中文内容的时候,会出现乱码问题,此时,需要手动设置内容的编码格式:
// 1. 导入 http 模块
const http = require('http');
// 2. 创建 web 服务器实例
const server = http.createServer();
// 3. 启动服务器
server.listen(3000, function () {
console.log('调用服务器实例的 .listen() 方法,即可启动当前的 web 服务器实例');
});
// 4. 为服务器实例绑定 request 事件,监听客户端的请求
server.on('request', function (req, res) {
// console.log('为服务器实例绑定 request 事件');
res.setHeader('Content-Type', 'text/html;charset=utf-8');
const str = `你请求的url地址是:${req.url},你请求的medthod类型是:${req.medthod}`
res.end(str)
});
// 1. 导入 http 模块
const http = require('http');
// 2. 创建 web 服务器实例
const server = http.createServer();
// 3. 启动服务器
server.listen(3000, function () {
console.log('调用服务器实例的 .listen() 方法,即可启动当前的 web 服务器实例');
});
// 4. 为服务器实例绑定 request 事件,监听客户端的请求
server.on('request', function (req, res) {
// console.log('为服务器实例绑定 request 事件');
//1.获取请求的 url 地址
const url = req.url;
//2.设置默认内容为404 Not found!
let content = '404 Not found!
';
if(url === '/' || url ==='./demo.txt'){
content = '首页
'
}else if(url === './5.p.js'){
content = '关于页面
'
}
res.setHeader('Content-Type', 'text/html;charset=utf-8');
// const str = `你请求的url地址是:${req.url},你请求的medthod类型是:${req.medthod}`
res.end(content);
});