一、初识Node.js
JavaScript作为前端的主流开发语言经久不衰,但是前端程序员往往因此受限,常常因为等不到后端人员的接口延误工期。Node.js则允许前端程序员以ECMAScript语法来编写后端程序,极大地扩充了前端程序员的能力范围,并催生了许多全栈工程师的出现。如果不想另外学一门后端语言,那加入Node.js绝对是不二之选。
二、Node.js的内置模块
Node.js有几个常用的内置模块:fs模块,path模块,http模块。模块化也是Node.js的一大特点。Node.js的模块化遵循CommonJS的标准。就是用require进行模块的导入,用module.exports对外暴露模块的接口。
fs模块:
读文件
const fs = require('fs')
fs.readFile('./data.txt',(err,dataStr)=>{
})
写文件
fs.writeFile('./data.txt',ObjectStr,(err)=>{
})
写文件会覆盖原来的内容
path模块:
const path = require('path')
const fs = require('fs')
fs.readFile(path.join(__dirname,'./data.txt'),(err,dataStr)=>{
})
path模块提供了路径拼接的方法以及__dirname这个变量。该变量指代的是当前的文件路径。用以上语法代替 './data.txt'的好处是可以避免路径出错的问题。
从完整路径中截取文件名和扩展名
path.basename(filepath)
path.extname(filename)
http模块:
创建本地服务器,进行request请求的事件监听
const http = require('http')
const server = http.createServer()
server.on('request',(req,res)=>{
})
server.listen(80,()=>{
})
可以调用res.end()方法,传入字符串或者对象,客户端就会收到传入的信息。
调用res.setHeader方法,可以设置字符集,解决中文乱码问题。
三、自定义模块
创建新的js文件,然后在文件里用module.exports暴露接口,然后用require导入。
问题:为什么要自定义模块?
1,增强代码的可读性
2.提高项目的可维护性
3.解决变量污染的问题
四、第三方模块
可以使用npm进行对应模块的下载。
比如moment包是有关时间的模块。express是有关服务器搭建的模块。
五、express介绍
express是对http模块的进一步封装,使用起来更加简便。
搭建并启动本地服务器
const express = require('express')
const app = express()
app.listen(80,()=>{
})
监听get,post请求
app.get('/user',(req,res)=>{
res.send('Message OK!')
})
app.post('/user',(req,res)=>{
res.send('Post OK!')
})
往app上挂载这个两个请求即可,用req和res接受回调。res.send方法可以传输数据。
第一个参数可以省略。如果有参数,实际请求地址为根路径拼接上该参数。
客户端可以用三种方式给服务器传递数据。
第一种,直接在网址后面填写参数
如www.baidu.com?name=zs&age=40
可以从req.query中得到(需要注意的是,应该先进行一些数据格式解析配置)
第二种,在网址后面直接填写参数。服务器端的app.get函数应该变为下面这样
app.get('/user/:id/:name',(req,res)=>{
req.params
})
这样我们就匹配了两个参数,这两个参数可以在req.params中得到。
第三种,直接将数据包含在数据体中(post)
可以在req.body中接收