nodejs的基本使用(一)

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中的模块(包)分为三类:

  1. 内置模块
  2. 第三方模块
  3. 自定义模块

下面使用一个第三方模块 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 '&lt'
      case '>':
        return '&gt'
      case '"':
        return '&quot'
      case '&':
        return '&amp'
    }
  })
}
// 定义还原html字符串的方法
function htmlUnEscape(str) {
  return str.replace(/&lt|&gt|&quot|&amp/g, (match) => {
    switch (match) {
      case '&lt':
        return '<'
      case '&gt':
        return '>'
      case '&quot':
        return '"'
      case '&amp':
        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>你好&nbsp<span>张三</span></h1>`
let str = myPackage.htmlEscape(htmlStr)
console.log(str) // &lth1&gt你好&ampnbsp&ltspan&gt张三&lt/span&gt&lt/h1&gt
console.log(myPackage.htmlUnEscape(str)) // <h1>你好&nbsp<span>张三</span></h1>

版权声明:本文为weixin_52907628原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。