Node APi学习
fs读取模块
// 1. 引入fs模块 , node里面几乎所有的标准库都要先引入才能使用
const fs = require('fs')
// 2. 调用readFile方法 , 并指定编码
fs.readFile('./page/index.html','utf-8',(error,data)=>{
console.log(data)
})
path模块
path.join
path.resolve
const path = require('path')
const dir = path.join(__dirname,'../page/index.html')
const dir = path.resolve('../page/index.html')
NodeJs服务器开发
服务器代码
ip+端口(NodeJS实现一个服务器的代码)
// 1. 引入http协议,node里面已经帮我们封装好了关于这部分的API
const http = require('http')
// 2. 创建一个服务器对象
const server = http.createServer()
// 3. 绑定ip和端口
server.listen(8080,'127.0.0.1')
// 4. 服务器对象监听浏览器的请求
server.on('request',(request,response)=>{
response.setHeader('Content-Type','text/html;charset=utf-8')//中文乱码问题
// 5. 响应数据回浏览器
fs.readFile('./views/index.html',(err,data)=>{
// 调用 响应回浏览器的方法把页面内容返回浏览器
response.end(data)
})
})
处理静态数据
根据请求url返回不同的静态资源 request.url
统一返回静态资源
server.on('request',(request,response)=>{
// 请求的url要以 /views 开关,才是静态请求
if(/^\/views/.test(request.url)){
fs.readFile(__dirname+request.url,(err,data)=>{
response.end(data)
})
}
})
处理动态数据
server.on('request',(request,response)=>{
// 判断url
if(reqeust.url === '/getArticles'){
// 转JSON
let json = JSON.stringify([
{id:1,title:'标题1',content:'内容1'},
{id:2,title:'标题2',content:'内容2'},
])
response.send(json)
}
})
获取
$.ajax({
url:'http://127.0.0.1:8080/getArticles',
success(res){
// 反序列化 为数组
let arr = JSON.parse(res)
}
})
模块化
CommonJS模块化
module.exports = { 导出的数据 }
或者
module.exports.键 = 导出的数据
或者
exports.键 = 导出的数据
配合动态路由
// 把动态请求的功能放在这个router.js里面
module.exports = function(req,res){
if(req.url === '/getArticle'){
res.end(文章数据)
}else if(req.url==='/login'){
res.end(登录结果)
}
// TODO
}
// 导入router.js里面导入的函数
const router = ruquire('./router.js')
server.listen(8080,'127.0.0.1')
server.on('request',(req,res)=>{
if(/^\/views/.test(req.url)){
}else{
// 调用函数处理动态数据
router(req,res)
}
})
包管理工具
Express
处理get请求
处理post请求
基本使用
初始化
npm init -y
安装
npm i express
// 1、引入express模块并创建express对象
const express = require('express');
const app = express();
// 3、监听端口
app.listen(3000, () => {
//这里的代码服务器刚启动的时候执行1次
//console.log('Example app listening on port 3000!')
});
//请求静态资源
//app.use('/views',express.static('views'))
----//POST
// post请求带回的数据有多种格式,所以我们要先决定好能解决哪种格式
//app.use(express.urlencoded({extened:true})) // 这是解析 key=value&key=value格式的
------
// 2、书写处理请求的方法,来响应请求
app.get('/', (req, res) => {
// 第一个参数req是请求头对象,里面包含请求头信息
// 第二个参数res用来做响应
//console.log(req); //get
//console.log(req.body) //post
res.send({
code:200,msg:'ok',
data : [ {id:1,title:'标题1'},{id:2,title:'标题2'},{id:3,title:'标题3'}, ]
})
});
node app.js 启动应用