# 初识 Node.js

# Node.js 简介

# Node.js 概念

Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine.
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境

# Node.js 中的 JavaScript 运行环境

image-20230106095400410

  • 浏览器是 JavaScript 的前端运行环境
  • Node.js 是 JavaScript 的后端运行环境
  • Node.js 中无法调用 DOM 和 BOM 等浏览器内置的 API

# Node.js 环境中执行 JavaScript 代码

# 终端中的快捷键

  • 使用 ↑ 键,可以快速定位到上一次执行的命令
  • 使用 tab 键,能够快速补全路径
  • 使用 esc 键,能够快速清空已经输入的命令
  • 输入 cls 命令,可以清空终端

# fs 文件系统模块

# fs 文件系统模块简介

fs 模块是 Node.js 官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求

  • fs.readFile () 方法:用来读取指定文件中的内容
  • fs.writeFile () 方法:用来向指定的文件中写入内容

导入 fs

const fs = require('fs');

# 读取指定文件内容

# fs.readFile () 语法格式

const fs = require('fs');
fs.readFile('./baozi.txt','utf8',function(err,dataStr) {
    if(err) {
        return console.log(err.message);
    }
    console.log(dataStr);
})

参数说明

  • 参数 1:必选参数,字符串,表示文件路径
  • 参数 2:可选参数,表示以什么编码格式来读取文件
  • 参数 3:必选参数,文件读取完成后,通过回调函数拿到读取的结果

# 向指定文件中写入内容

# fs.writeFile () 的语法格式

const fs = require('fs');
fs.write('./baozi.txt','HelloWorld','utf8',function(err) {
    if(err) {
        return console.log('写入数据失败' + err.message);
    }
    // 此时 err 为 null
    console.log('写入数据成功' + err);
})

参数说明

  • 参数 1:必选参数,需要指定一个文件路径的字符串,表示文件存放路径
  • 参数 2:必选参数,表示要写入的内容
  • 参数 3:可选参数,表示以什么格式写入文件,默认 utf8
  • 参数 4:必选参数,文件写入完成后的回调函数

# path 路径模块

# path 路径模块简介

path 模块是 Node.js 官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求

  • path.join () 方法:用来将多个路径片段拼接成一个完整的路径字符串
  • path.basename () 方法:用来从路径字符串中,将文件名解析出来

提前导入

const path = require('path');

# 路径拼接

# path.join () 语法格式

const path = require('path');
const pathStr = path.join('/a','/b/c','../','d');
console.log(pathStr);  // 打印 /a/b/d
const pathStr2 = path.join(__dirname,'./baozi.txt');
console.log(pathStr);	// 输出 当前文件所处目录 /baozi.txt

# 获取路径中的文件名

# path.basename () 的语法格式

const path = require('path');
const fpath = '/a/b/c/index.html';
var fullName = path.basename(fpath);
console.log(fullName);	// 输出 index.html
var nameWithoutExt = path.basename(fpath,'.html');
console.log(nameWithoutExt); // 输出 index

# 获取路径中的文件扩展名

# path.extname () 语法格式

const path = require('path');
const fpath = '/a/b/c/index.html';
const fext = path.extname(fpath);
console.log(fext); 	// 输出.html

# http 模块

# http 模块介绍

http 模块是 Node.js 官方提供的、用来创建 web 服务器的模块。通过 http 模块提供的 http.createServer () 方法,就

能方便的把一台普通的电脑,变成一台 Web 服务器,从而对外提供 Web 资源服务

导入 http 模块

const http = require('http');

# 进一步理解 http 模块作用

服务器和普通电脑的区别在于,服务器上安装了 web 服务器软件,例如:IIS、Apache 等。通过安装这些服务器软件,

就能把一台普通的电脑变成一台 web 服务器

在 Node.js 中,我们不需要使用 IIS、Apache 等这些第三方 web 服务器软件。因为我们可以基于 Node.js 提供的

http 模块,通过几行简单的代码,就能轻松的手写一个服务器软件,从而对外提供 web 服务

# 服务器相关的概念

# IP 地址

IP 地址就是互联网上每台计算机的唯一地址,因此 IP 地址具有唯一性

# 域名和域名服务器

尽管 IP 地址能够唯一地标记网络上的计算机,但 IP 地址是一长串数字,不直观,而且不便于记忆,于是人们又发明了另一套

字符型的地址方案,即所谓的域名(Domain Name)地址

IP 地址和域名是一一对应的关系,这份对应关系存放在一种叫做域名服务器 (DNS,Domain name server) 的电脑中。使用者

只需通过好记的域名访问对应的服务器即可,对应的转换工作由域名服务器实现。因此,域名服务器就是提供 IP 地址和域名

之间的转换服务的服务器

# 端口号

在一台电脑中,可以运行成百上千个 web 服务。每个 web 服务都对应一个唯一的端口号。客户端发送过来的

网络请求,通过端口号,可以被准确地交给对应的 web 服务进行处理

# 创建最基本的 web 服务器

# 创建 web 服务器的基本步骤

  • 导入 http 模块
  • 创建 web 服务器实例
  • 为服务器实例绑定 request 事件,监听客户端的请求
  • 启动服务器

# 代码实现

// 1. 导入 http 模块
const http = require('http');
// 2. 创建 web 服务器实例
const server = http.createServer();
// 3. 为服务器绑定 request 事件,监听客户端请求
server.on('request',(req,res) {
	console.log('Some one visit our web server');          
})
// 4. 启动服务器
server.listen(80,() => {
    console.log('http server is running...')
})

# req 请求对象

只要服务器接收到了客户端的请求,就会调用通过 server.on () 为服务器绑定的 request 事件处理函数

server.on('request',(req) {
	// 1. 获取 url
    const url = req.url;
    // 2. 获取请求方式
    const method = req.method;
})

# res 响应对象

server.on('request',(req,res){
	res.end('已经响应到客户端');          
})

# 解决中文乱码

server.on('request',(req,res){
	res.setHeader('Content-Type','text/html; charset=')
	res.end('已经解决中文乱码');
})
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Baozi 微信支付

微信支付

Baozi 支付宝

支付宝

Baozi 微信

微信