Express是一个基于Node.js平台的web应用开发框架,在Node.js基础之上扩展了web应用开发所需要的基础功能,从而使得我们开发Web应用更加方便、更加快捷。
注意:我们用jQuery时,jquery对象和dom对象 方法是不能混用的。但Express中,可以用一些原生node。
比如在express中用了get方法,res.send 可以写成 res.end。
不过send中是不需要转成str或者buffer的,并且不区分大小写。
下载Express
npm install express --save
创建一个express应用:
let express = require("express");
let app = express();
模板引擎 ejs/jade 下面使用ejs
在Express中推荐使用模板引擎
用前也需要下载 npm install ejs --save
模板引擎的使用:
var ejs = require("ejs"); //模板 var string = "今天星期<%= day %>,天气真好"; //数据 var data = { day : "三" } // 数据绑定 var html = ejs.render(string,data); console.log(html); //今天星期三,天气真好
通过ejs模板:
1.在后台写好数据
var express = require("express"); var app = express(); //不需要引入ejs、fs、http app.set("view engine","ejs"); app.get("/",function(req,res){ var data = { day:"三", news:[ {"title":"haha","num":300}, {"title":"xixi","num":100}, {"title":"hehe","num":100}, ] } res.render("haha",data) }) app.listen(3000);
2.创建views文件夹,在views文件夹中创建 haha.ejs 文件
3.在haha.ejs文件中写模板
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <h1>今天星期<%= day %>,天气真好</h1> <ul> <% for(var i = 0;i < news.length;i++){ %> <li><%= news[i].title %></li> <li><%= news[i].num %></li> <% } %> </ul> </body> </html>
模板中语法格式如上。
在页面中显示结果:
今天星期三,天气真好
- haha
- 300
- xixi
- 100
- hehe
- 100
Express中间件
用中间件中的内置方法static来配置静态伺服
app.use(express.static(__dirname + '
/app'
))
浏览器中访问: http://localhost:3000/ 展示的/app/index.html内容
浏览器中访问: http://localhost:3000/hello.html 展示的/app/hello.html内容
中间件基本用法:
在下面这种情况下,第二个地址永远进不去,因为下面地址的路由满足上面的正则,所以按照代码执行顺序,到上面get方法就停止了。只会显示 用户+编号界面
var express = require("express"); var app = express();
app.get("/:username/:id",function(req,res,next){
res.send("用户+编号界面")
})
app.get("/admin/login",function(req,res){ //这个地方永远进不去
res.send("管理员登录界面")
})
app.listen(3000);
但如果给上面的get方法中加上next()
app.get("/:username/:id",function(req,res,next){ next() })
再在/admin/login中显示的就是 管理员登录界面
如果在第一个get方法打印1,第二个get方法打印2,则都可以打印出来。
用Express获取get参数
var express = require("express"); var app = express(); app.get("/",function(req,res){ console.log(req.query); res.send("OK") }) app.listen(3000)
原生获取方法:url.parse(req.url,true).query
用Express获取post参数
1.设置post请求的请求头
var bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({ extended: false })); //post请求的请求头
2.在post方法中打印 req.body 即可
req.body 输出的是 一个对象
比如 {name:"123456",age:"4156789"}