一、简介
Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。使用 Express 可以快速地搭建一个完整功能的网站。
二、安装与运行
终端输入命令安装,这与其他模块一样
sudo npm install express
运行并初始化express
var express = require("express");var app = express();//初始化
三、核心功能
路由
引入一下模块,body-parser是post请求方式封装的模块,get请求不可用。
var express = require("express");var app = express();var querystring = require("querystring");// 只是post请求方式取参var bodyParser = require("body-parser");var app = express();// 引入bodyParserapp.use(bodyParser.urlencoded({ extended:true}));
获取请求参数* req.host:返回请求头里取的主机名(不含端口号)* req.path:返回请求的url的路径名* req.query:是一个可获取客户端get请求路径参数的对象属性,包含着被解析过的请求参数对象,默认为{}* req.params:获取路由的parameters
返回参数
- res.send();返回数据,默认会转为字符串,编码为utf8* res.sendFile();返回文件* res.sendStatus();返回状态码
- get请求
app.get(path,cb);
- path:为请求的路径
- cb :第二个参数为处理函数的回调,有两个参数request和response,代表请求信息和响应信息
- 使用res.sendFile()方法加载post提交页面
- 使用res.send()方法传输数据,
使用express模板比原生的node传输方便了很多,不需要去获取pathname,判断pathname的值...,只需要用app.get()就能实现数据交互的功能了。
app.get("/",function (req,res) { // res.send("<h1>我是主页</h1>"); // 加载post提交页面 res.sendFile(__dirname+"/post.html");})app.get("/goods",function (req,res) { res.send("我是商品页");})
- post请求
使用app.post()来处理post请求;
原生node获取数据的方法,用流的方式读取数据,读完后获得数据,而使用body-parser模板时,post传输的数据便在req.body中,直接取就可以了,简化了读文档流的步骤。body-parser的配置看上面的已经配置了。
app.post("/post",function (req,res) {// 原生node获取post参数的写法 // var str = ""; // req.on("data",function (chunk) { // str += chunk; // }) // req.on("end",function () { // var data = querystring.parse(str); // console.log(data); // res.send(`<h1>姓名是:${data.username}年龄是:${data.age}</h1>`); // }) // 通过body-parser获取到参数 console.log(req.body); res.send(`<h1>姓名是:${req.body.username}年龄是:${req.body.age}</h1>`);});
- post或者get请求
express模板封装了一个all方法,来处理不管是任何方式发送的请求,*为任意路径。
// get请求或者是post请求;app.all("/*",function (req,res) { // console.log(req._parsedUrl.pathname); var pathname = req._parsedUrl.pathname; if(pathname=="/get"){ var data = req.query; res.send(JSON.stringify(data)); }else if(pathname!="/favicon.ico"){ res.sendFile(__dirname+pathname); }});
注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。