07-sel-express 框架快速搭建案例
<!doctype html>##07-sel-express 框架快速搭建案例
07-sel-express 框架快速搭建案例
1.服务模块
xxxxxxxxxx
// app.js:启动服务模块
let express = require('express');
let config = require('./config.js');
let router = require('./router.js');
//2,创建app对象
let app = express();
console.log(router.toString());
//3,注册路由
//放在路由模块中
//设置app 与 router 相关联
app.use('/',router);
//4,启动服务
app.listen(config.port, ()=>{
console.log('http://localhost:'+ config.port);
})
2.路由模块
xxxxxxxxxx
//router.js 路由模块
/*---------------------------------
1,创建一个
router 对象(router 对象既是对象,也是函数)
2,通过 router 对象挂载路由
3,返回 router 对象
-------------------------------------*/
let express = require('express');
let path = require('path');
let handler = require('./handler.js');
let router = express.Router();
//2, 通过 router 对象挂载路由
router.get('/',handler.index);
router.get('/index',handler.index);
router.get('/submit',(req,res)=>{
});
router.get('/item',(req,res)=>{
});
router.get('/add',(req,res)=>{
});
router.post('/add',(req,res)=>{
});
/*-----------------------------------------------------
express.static(root,[options])
1,该root参数指定从中提供静态资产的根目录。
该函数通过req.url与提供的root目录组合来确定要提供的文件
2,对 resouces 里面的静态资源请求
router.use('/resouces' 这请求的是虚拟路径。并不是 req.url 的部分
------------------------------------------------------------------*/
router.use('/resouces',express.static(path.join(__dirname,'resouces')));
// 3,返回 router 对象
module.exports = router;
3.业务处理模块
xxxxxxxxxx
//业务模块
//处理新闻列表
let path = require('path');
module.exports.index =(req,res)=>{
res.sendFile(path.join(__dirname,
'views','index1.html'));
};
// {}.index = function(req,res) {
// res.sendFile(path.join(__dirname,
// 'views','index1.html'));
// }
/********************************************
res.sendFile():
读取对应文件,并响应文件
res.render()
能够读取文件并相应,
并且参数2能够输出模板引擎数据,并替换文件里面的模板数据
************************************************/
4.配置信息模块
xxxxxxxxxx
//congfig.js 配置模块
module.exports = {
'port':9090
};
常用api介绍
-
处理请求方式及路由
- app.use() 在请求路由时,只要路由是由 指定url 开头的就可以了。
- app.get() 要完全等于该 指定路由才可以 请求到资源。
相同请求的 url 会覆盖。可以添加 next 参数解决
- app.all() 1,不限定请求方法 2, 请求路径限定
- 正则表达式注册路由 可以由正则表达式写路由
-
res.send()
#express 里面的api。res.send();
- 参数可以是 Buffer ,String, object, Array
- 里面设置了很多响应报文头, 其中就包括 Content-Type:text/html;charset=utf-8;
#nodejs 里面的 res.end()
- 参数只能 Buffer 对象或者 字符串
- 要手动设置响应头
-
res.sendFile() 和 res.render()
- res.sendFile(): 读取对应文件,并响应文件
- es.render() 能够读取文件并相应, 并且参数2能够输出模板引擎数据,并替换文件里面的模板数据
-
处理静态资源
/*-----------------------------------------------------
express.static(root,[options]) 1,该root参数指定从中提供静态资产的根目录。 该函数通过req.url与提供的root目录组合来确定要提供的文件
2,对 resouces 里面的静态资源请求 router.use('/resouces' 这请求的是虚拟路径。并不是 req.url 的部分
------------------------------------------------------------------*/
router.use('/resouces',express.static(path.join(__dirname,'resouces')));