node基础
fs
fs是node内置的模块,处理文件要么读取要么写入,fs提供了这两个方法。
// fs.readFile(文件路径,读取格式,回调函数)
// 读取一个文件
const fs = require('fs')
fs.readFile('./text.txt','utf-8',(err,dataStr)=>{
// err 为读取错误的数据
if(err) return console.log(err)
console.log('读取成功',dataStr)
})
// fs.writeFile(文件路径,写入内容,回调函数)
const fs = require('fs')
fs.writeFile('./text.txt','我是写入的数据',(err)=>{
// err 为读取错误的数据
if(err) return console.log(err)
console.log('写入成功',dataStr)
})
// 写入文件
path
path是node内置的模块,专用于处理路径。
// path.join(目录,目录,...) 拼接路径
const path = require('path')
path.join('a','b') // a\b
// path.resolve(__dirname,'b') 拼接路径 返回绝对路线
path.resolve(__dirname,'b') // C:\Users\Gjb.win\Desktop\学习\node\02.path\b
其中“__dirname”返回一个当前文件所在的绝对路径。
// path.basename(文件位置,ext(扩展名)?):获取路径中的文件名
const path = require('path')
const fpath = '/a/b/c/index.html'
// let fullName = path.basename(fpath) // 获取文件名包含扩展名
let fullName = path.basename(fpath, '.html') // 获取文件名去掉扩展名
console.log(fullName) // index
path.basename(path,ext?):如果不提供第二个参数(扩展名),就会返回一个带扩展名的文件名。
// path.extname(文件位置):获取文件的扩展名
const path = require('path')
const fpath = '/a/b/c/index.html'
console.log(path.extname(fpath)) // 结果:html
HTTP WEB 服务器
node内置的http模块可以创建一个简单的web服务器:
const http = require('http')
// 创建app应用
const app = http.createServer()
app.on('request', (request, response) => {
console.log(request) // 请求体对象
console.log(response) // 响应体对象
})
// 设置端口号
app.listen(8080, () => {
console.log('app running at http://127.0.0.1:8080')
})
app会注册一个请求事件来监听客户端发送的请求,下面了解request和response对象。
app.on('request', (req) => {
// req.url :客户端请求的地址
// req.method: 请求方法
// res.setHeader(): 设置响应头
// res.end():向客户端发送数据
console.log(req.url)
console.log(req.method)
// 解决中文乱码需要设置响应头
res.setHeader('Content-Type', 'text/html;charset=utf-8')
res.end('你好')
})
模块化
node中的模块(包)分为三类:
- 内置模块
- 第三方模块
- 自定义模块
下面使用一个第三方模块 moment ,它是一个时间格式化模块处理时间的:
安装
npm i moment
使用
// 导入
const moment = require('moment')
// 调用moment中format方法,传入一要转换的格式,就可以得到对应的时间格式
var dt = moment().format('YYYY-MM-DD HH:mm:ss')
console.log(dt);
moment中的format方法默认是将当前时间日期转换对应的格式,具体使用参考官方文档
自定义一个包
准备自定义一个提供时间格式化 、处理html中特殊字符的包
我们需要在一个目录创建以下结构
|-- myPackage
|-- src
|-- dataFormat.js
|-- htmlEscape.js
|-- index.js
|-- package.json
|-- README.md 使用说明文档
// package.json文件中
{
"name": "myPaackage", // 包名
"version": "1.0.0", // 版本
"main": "index.js", // 入口文件
"description": "提供时间格式化,html特殊字符处理", // 包的说明
"keywords": ["gjb","util","dateFormat"], // 搜索关键字
"license": "ICS" // 协议 npm一般采用ICS
}
// src/dateFormat.js
// 定义时间格式化方法
function dateFormat(dateStr) {
const date = new Date(dateStr)
const y = date.getFullYear()
const m = addZero(date.getMonth() + 1)
const d = addZero(date.getDate())
const hh = addZero(date.getHours())
const mm = addZero(date.getMinutes())
const ss = addZero(date.getSeconds())
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
// 补零的方法
function addZero(n) {
return n > 9 ? n : '0' + n
}
module.exports = {
dateFormat
}
// src/htmlEscape.js
// 定义转义HTML字符串方法
function htmlEscape(htmlStr) {
return htmlStr.replace(/<|>|"|&/g, (match) => {
switch (match) {
case '<':
return '<'
case '>':
return '>'
case '"':
return '"'
case '&':
return '&'
}
})
}
// 定义还原html字符串的方法
function htmlUnEscape(str) {
return str.replace(/<|>|"|&/g, (match) => {
switch (match) {
case '<':
return '<'
case '>':
return '>'
case '"':
return '"'
case '&':
return '&'
}
})
}
module.exports = {
htmlEscape,
htmlUnEscape
}
// index.js
// 这是包的入口
const date = require('./src/dateFormat')
const escape = require('./src/htmlEscape')
module.exports = {
...date,
...escape
}
这样我们新建一个js文件就可以去使用了
const myPackage = require('./myPackage')
const dt = gjbUtil.dateFormat(new Date())
console.log(dt) // 2022-02-27 23:12:18
let htmlStr = `<h1>你好 <span>张三</span></h1>`
let str = myPackage.htmlEscape(htmlStr)
console.log(str) // <h1>你好&nbsp<span>张三</span></h1>
console.log(myPackage.htmlUnEscape(str)) // <h1>你好 <span>张三</span></h1>
版权声明:本文为weixin_52907628原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。