Node.js学习(1)简介+内置模块(fs、path、http)

Node.js简介

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。

Node.js 中的 JavaScript 运行环境

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9oqytdtp-1651665206586)(C:\Users\mi\AppData\Roaming\Typora\typora-user-images\image-20220413144421090.png)]

浏览器是 JavaScript 的前端运行环境。
Node.js 是 JavaScript 的后端运行环境。

Node.js 环境的安装

node.js官网:https://nodejs.org/en/

网页下载中有两种版本:LTS和Current版本。LTS为长期稳定版(推荐安装),Current是比较新的版本,带有新特性但可以存在Bug或漏洞。

安装过程一般都是默认即可(路径本人改了),验证是否安装成功:打开cmd,输入node -v, 查看到版本号就是安装成功。

小案例(使用node 运行js文件):

(1)新建文件夹,新建1.js文件,包含console.og(‘Hello!’)

(2)选中文件夹路径,输入cmd,快速进入该路径下的终端

(3)node 1.js 运行文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DebpRXmN-1651665245770)(C:\Users\mi\AppData\Roaming\Typora\typora-user-images\image-20220413144916180.png)]

fs文件系统模块

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

要在 JavaScript 代码中使用 fs 模块来操作文件,需要导入:

const fs =require('fs')
读取指定文件中的内容

fs.readFile() 方法,可以读取指定文件中的内容。

格式:

fs.readFile(path[,options],callback)
//path必选参数,表示文件路径
//第二个参数为可选参数,编码格式
//callback为必选参数,回调函数拿到读取的结果

示例:

// 导入 fs 模块
const fs = require('fs')


// 读取文件时候采用的编码格式,一般默认指定 utf8
// 回调函数,失败或成功:err  dataStr

fs.readFile('./files/1.txt', 'utf8', function(err, dataStr) {
    
  // 读取成功,err 的值为 null
  // 读取失败,err 的值为错误对象,dataStr的值undefined
   if(err){
   return console.log('读取失败!'+ err.message)
  }
  console.log("读取成功!" + dataStr)
})

向指定的文件中写入内容

fs.writeFile() 方法,可以向指定的文件中写入内容。

(只能用来创建文件,不能创建路径;重复写入同一个文件会覆盖内容)

格式:

fs.writeFile(path,data[,options],callback)
//path必选,文件路径
//data必选,要写入的数据
//可选参数,写入文件内容的格式,默认utf8
//callback必选参数,文件写入完成后的回调函数

示例:

const fs = require('fs')

//fs.writeFile() 方法,写入文件的内容

fs.writeFile('./files/2.txt', 'lizhi', function(err) {
  // 文件写入成功,则 err 的值等于 null
  //文件写入失败,则 err 的值等于一个错误对象
  // console.log(err)
  if (err) {
    return console.log('文件写入失败!' + err.message)
  }
  console.log('文件写入成功!')
})
fs路径动态拼接的问题

在使用 fs 模块操作文件时,如果使用路径是以 ./ 或 …/ 开头的相对路径时,很容易出现问题:代码在运行的时候,会以执行 node 命令时所处的目录,动态拼接出被操作文件的完整路径。
解决方法:文件路径使用**_ _dirname + ‘文件根路径’**; _ _dirname表示当前文件所在的目录

path路径模块

path 模块是 Node.js 官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求。
如果在 JavaScript 代码中使用 path 模块来处理路径,需要导入:

const path = reqiure('path')
路径拼接

path.join() 方法,可以把多个路径片段拼接为完整的路径字符串。

格式:

path.join([...paths])
//参数是路径序列,返回值是string

示例:

const path = require('path')
const fs = require('fs')

// ../ 会抵消前面的路径
const pathStr = path.join('/a', '/b/c', '../', './d', 'e')
console.log(pathStr)  
// 输出\a\b\d\e

fs.readFile(__dirname + '/files/1.txt')

//拼接路径,代替使用+号连接
fs.readFile(path.join(__dirname, './files/1.txt'), 'utf8', function(err, dataStr) {
  if (err) {
    return console.log(err.message)
  }
  console.log(dataStr)
})
获取路径中的文件名

path.basename() 方法,获取路径中的最后一部分,一般用来获取路径中的文件名。

格式:

path.basename(path[,ext])
//path必选参数,路径
//ext可选参数,文件拓展名
//返回路径最后一部分,string

示例:

const path = require('path')

// 定义路径
const fpath = '/GDUF/lizhi/index.html'

// const fullName = path.basename(fpath)
// console.log(fullName)
//输出index.html

const name= path.basename(fpath, '.html')
console.log(name)
//输出index
获取路径中的文件扩展名

path.extname() 方法,可以获取路径中的扩展名部分。

格式:

path.extname(path)
//path必选,路径
//返回拓展名,string

示例:

const path = require('path')

// 这是文件的存放路径
const fpath = '/GDUF/lizhi/index.html'

const fext = path.extname(fpath)
console.log(fext)
//输出.html

http模块

​ http 模块是 Node.js 官方提供的、用来创建 web 服务器的模块。使用需要先导入它:

const http = require('http')
补充服务器相关的概念
ip地址

IP 地址就是互联网上每台计算机的唯一地址,因此 IP 地址具有唯一性。
IP 地址的格式:一般用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d 都是 0~255 之间的十进制整数。(开发期间,可以在浏览器中输入 127.0.0.1,可以访问自己的电脑)

域名和域名服务器

IP地址是一长串数字不方便记忆,于是有了域名(Domain Name)地址。
IP地址和域名是一一对应的关系,这份对应关系存放在一种叫做域名服务器(DNS,Domain name server)的电脑中。域名服务器就是提供 IP 地址和域名之间的转换服务的服务器。

端口号

根据不同端口号,把请求交给对应的web服务器进行处理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7XppF6l7-1651665245771)(C:\Users\mi\AppData\Roaming\Typora\typora-user-images\image-20220414102627807.png)]

使用http模块创建最基本的服务器

步骤:

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

//导入http模块
const http = require('http')

//创建web服务器
const server = http.createServer()

//给服务器绑定request事件
server.on('request', (req,res) =>{
    console.log('someone visit web server')
})
//访问时,终端会看到这句话

//启动服务器
server.listen(80, () => {
    console.log('http server running at http://127.0.0.1')
})
req请求对象和res 响应对象

调用通过 server.on() 为服务器绑定的 request 事件处理函数。示例:

//其他步骤相同,修改request事件部分代码:
//给服务器绑定request事件
server.on('request', (req,res) =>{
   const url = req.url
   const method = req.method
   //这里用的时模板字符串的符号:``
   const str = `Your request url is ${url}, request method is ${method}`
   console.log(str)
    //向客户端发送指定内容,并结束请求
   res.end(str)
})

访问效果图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6wSrAv17-1651665245773)(C:\Users\mi\AppData\Roaming\Typora\typora-user-images\image-20220414103348836.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IRqxD3L9-1651665245774)(C:\Users\mi\AppData\Roaming\Typora\typora-user-images\image-20220414103412867.png)]

解决中文乱码问题
//其他步骤相同,这里省略
//给服务器绑定request事件
server.on('request', (req,res) =>{
   const url = req.url
   const method = req.method
   const str = `你请求的地址是 ${url}, 请求的方式是 ${method}`
   //防治中文乱码
   res.setHeader('Content-Type','text/html; charset=utf-8')
   console.log(str)
   res.end(str)
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GDUF-LZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值