day21

1-nodejs 中有哪些常用的内置模块

http

http.createServer //注意:https服务需要证书
http.get(str,(res)=>{
let data =''
res.on('data',(chunk)=>{
data += chunk
})//获取数据
res.on('end',()=>{
...
})//数据获取结束进行操作
})

url
该模块用于处理浏览器返回的url字符串,常用方法如下:

url.parse(str,true,true)
//返回一个地址的解析对象,str是地址,
//第二个参数是query是否解析为对象,
//第三个参数是如果没有域名,对象中port,host等参数是否可以正常解析
url.format(urlObj)
//对url进行格式化,可以把parse产生的对象转化为url格式
url.resolve('str1','str2')
//对两个路径进行解析

querystring
常用方法如下:

querystring.parse(query)
//将字符串query解析为对象
querystring.stringfy(queryObj)
//将对象类型的query转化为字符串
querystring.escape(query) //编码
querystring.unescape(str) //解码

fs
用于进行文件操作,主要方法如下:

//创建文件夹
fs.mkdir( '文件夹地址',ErrFn )

//创建文件
fs.writeFile(
'文件地址',
'写入内容',
//错误优先的回调函数
(err)=>{
if(err){
console.log(err.message)
}else{
console.log('文件创建成功')
}
}
)

//给文件追加内容
fs.appendFile( '文件地址', '写入内容', ErrFn)

//读取文件,异步操作
fs.readFile(
'文件地址',
'utf-8',//如果不添加该参数,data必须使用toString方法转化为字符串形式,否则输出格式为Buffer
(err,data)=>{
if(err){
console.log(err.message)
}else{
console.log(data)
}
}
)

//同步读取文件,需要通过try-catch捕获错误
fs.readFileSync( '文件地址', 'utf-8' )

//删除文件
fs.unlink( '文件地址', ErrFn)

//文件或者文件夹改名
fs.rename( '原文件夹名称', '新名称',ErrFn )

//删除文件夹
fs.rmdir( '文件夹地址', ErrFn)

//读取当前以及内部文件及文件夹信息
fs.readdir(
'./',
(err,data)=>{
data.forEach((value,index)=>{
fs.stat(`./${value}`,(err,stats)=>{
value//文件名称
stats.size//文件大小
stats.isDirectory()//文件是文件还是文件夹
})
})
}
)

//fs的promiseAPI,可以把方法作为promise看待,后面可跟then方法
const fsP = require('fs').promises

//监测文件变化,重命名和修改文件内容都可以监测到
fs.watch()

path:拼接路径
2-常用的第三方模块

1.nodemon :命令行工具,用以辅助项目开发,可以实时js文件是否改动,如果有改动,自动重新编译运行 (npm install nodemon)

2.nrm : 下载地址切换工具

             使用步骤:npm install nrm -g

                               nrm ls

                               nrm use 下载地址名称

3.Gulp : 基于node开发的前端构建工具

             使用步骤:npm install gulp

                               在项目根目录下建立gulpfile.js文件

                               重构项目的文件夹结构,src目录存放源代码文件,dist目录放置构建后文件

                               在gulpfile.js文件中编写任务

gulp中提供的一些方法:gulp.src()获取任务要处理的文件  ,gulp.dest()输出文件  ,gulp.task()建立gulp任务,gulp.watch()监控文件的变化

安装gulp命令行工具:npm install gulp-cli -g

gulp的一些常用插件:gulp-htmlmin(html文件压缩),gulp-file-include(公共文件包含),gulp-csso(压缩css),gulp-less(less语法转换),gulp-babel(JavaScript语法转换),gulp-uglify(压缩混淆JavaScript)


3-如何创建一个服务器

//1-加载系统模块,创建http服务
const http = require('http');
// 加载系统模块url
const url = require('url');
//2-创建web服务器
const app = http.createServer()
    // 3-监听客户请求 request事件(当接收到客户端请求时触发)
app.on('request', (req, res) => {
    //req代表客户端请求   res代表服务器端响应对象
    // res.write('Hello World');
    // res.end('ok')

    // 获取请求方式
    // console.log(req.method)
    // if (req.method == 'POST') {
    //     res.end('post')
    // } else if (req.method == 'GET') {
    //     res.end('get')
    // }
    //响应报文
    res.writeHead(200, {
        //返回文本信息
        //纯文本
        // 'content-type': 'text/plain'
        //html文本
        // 'content-type': 'text/html'
        // 字符编码
        'content-type': 'text/html;charset=utf8'
    });
4-http 搭建的服务相应给客户端的数据如果是中文,应该如何处理
 //响应报文
    res.writeHead(200, {
        //返回文本信息
        //纯文本
        // 'content-type': 'text/plain'
        //html文本
        // 'content-type': 'text/html'
        // 字符编码
        'content-type': 'text/html;charset=utf8'
    });
5-第三方 router 模块和 serve-static 如何使用,作用是什么?

router

  作用:实现路由功能

  const getRouter = require('router')
  const router = getRouter();
  router.get('/index', (req, res) => {
    res.end('Hello World!')
  })
  server.on('request', (req, res) => {
    router(req, res, () => {})
  })

  sever-static

  作用:其主要功能是实现静态资源的访问

  引入serve-static模块获取创建静态资源服务功能的方法
  调用方法创建静态资源服务并指定静态资源服务目录
  启用静态资源服务功能
  使用代码如下:

  const serveStatic = require('serve-static')
  const serve = serveStatic('public'); // public为静态文件目录地址
  server.on('request', () => {
    serve(req, res)
  })

posted @ 2021-03-07 17:00  heartru  阅读(46)  评论(0)    收藏  举报