express中间件使用
express使用步骤
//加载模块
const express = require('express');
const app = express();//相当于http 的createserver
//设置路由
app.get('/', (req, res) => res.send('Hello World!'));
//设置访问的端口号
app.listen(3000, function () {
console.log('server is runing port 3000');
});
开放静态目录
app.use('/public/',express.static('./public/'));
//两个参数时当用/public/来访问路由时 ,默认进入public目录中,为了对应,前后一般一样
//当省略第一个参数时,就不用通过public去访问,而是直接写文件名
art-template
在express
中配合使用art-template
模板引擎
安装模板引擎
npm install --save art-template
npm install --save express-art-template
配置
app.engine('art',require('express-art-template'));
//当渲染以.art结尾的文件的时候 使用模板引擎
//渲染文件的类是可以修改的,但是在加载模板引擎的时候必须有这句话,
//因为这是固定写法
express为response响应对象提供了一个方法 render
render默认是不可以用的,但是如果配置了模板引擎就可以使用了
render用法:
res.render('模板文件名',{模板数据});
//渲染模板不一定要有数据,第二个参数有数据的时候可以写,没有的时候可以不写
注意:第一个参数路径是相当于views的,默认会去views文件下查找文件,相当于一个默认行为;
如果想要更改默认的views目录,则可以使用
app.set('views','要修改的目录的路径');
使用(此示例括号使用不正确,请注意);
var express = require('express');
var app = express();
//查看引擎设置
app.engine('art',require('express-art-template'));
app.set('views',path.join(__ dirname,'views'));
app.set('view engine','art');
//路由
app.get('/',function(req,res) {
res.render('index.art',{
user:{
name:'aui',
tags:[ 'art','template',' nodejs' ]
}
});
});
请求数据的获取
get获取url数据 req.query
express获取post提交的数据
使用中间件(相当于插件)body-parser
来获取
安装
npm install body-parser --save
配置
var express = require('express')
var bodyParser = require('body-parser')//重点
var app = express()
//重点配置,只要加入这根配置,请求对象就会多一个属性:body
//也就是说可以再直接通过req.body来获取表单post提交的数据
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())
app.use(function (req, res) {
res.setHeader('Content-Type', 'text/plain')
res.write('you posted:\n')
res.end(JSON.stringify(req.body, null, 2))
})
请求重定向;res.redirect(‘要定向的路由’);
项目模块划分
1.入口模块:
创建服务
做一些相关服务的配置
模板引擎
body-parser解析post表单请求体
提供静态资源服务
挂载路由
监听端口启动服务
2.路由模块
根据不同的根据不同的请求处理函数
epress挂载路由容器
//router.js文件中
//搭建开发环境
const express = require('express');
/*路由模块 ,创建一个路由容器,把路由都挂载到router路由容器中*/
const router=express.Router();
router.get('/',function (req,res) {
res.send('345');
});
//想要在别的模块访问路由,需要导出路由并且在别的模块引入
module.exports=router;
//index.js中
//搭建开发环境
const express = require('express');
const app = express(); //创建服务相当于http的createserver
const router = require('./route.js'); //加载路由模块
//把路由挂载到app服务中
app.use(router); //当接时收到请求时,指向路由模块,
app.listen(3000, function () { //添加监听端口号
console.log('server is runing port 3000');
});