这里所使用的的框架是express,官网地址:http://www.expressjs.com.cn/
安装命令
npm i express
基本使用
//入口文件
//加载express模块
const express = require('express');
const path = require('path');
//创建一个app对象,类似于创建一个server对象
let app = express();
//通过中间件监听路由请求
app.get('/index', function(req, res){
//epress扩展了end的方法,res.end只能返回string或者Buffer
//send还能返回对象、数组,并且自动在头信息加了uft8的编码
res.send('你好世界');
//返回json,和send(对象)效果一样
// res.jsonp({name : '张三'});
//重定向
//res.redirect('/test');
});
//正则匹配
app.get(/^\/index(\/.+)*$/, function(req, res){
res.send('哈哈');
});
//获取路径中的参数
app.get('/news/:year/:month/:day', function(req, res){
res.send(req.params);
});
//不区分get和post,完全匹配路径
app.all('/txt', function(req, res){
//读取文件并发送到客户端
res.sendFile(path.join(__dirname, 'public', 'test.txt'), function(err){
if(err){
throw err;
}
console.log('ok');
});
});
//use不区分get和post,并且路径只要以/test开头的匹配就可以
app.use('/test', function(req, res){
res.send('ok');
});
//处理静态资源,如/xxx/test.html访问的是项目下的public/test.html文件
//相同的两个虚拟路径注册到了不同的文件夹,访问静态文件的时候会依次寻找
app.use('/xxx', express.static(path.join(__dirname, 'public')));
//启动服务
app.listen(8888, function(){
console.log('服务已启动');
});
模板引擎ejs
ejs并不是express集成的,而是独立并且兼容express,使用的要先安装:npm i ejs
const ejs = require('ejs');
const path = require('path');
//字符模板
var html = '<h1><%=name%></h1>';
var result = ejs.render(html, {name : 'amy'});
console.info(result);
//解析文件模板
ejs.renderFile(path.join(__dirname, 'public', 'temp.html'),{name : 'kim'},function(err, data){
console.log(data);
});
模块化设计
启动模块-app.js
const express = require('express');
const router = require('./router.js');
const config = require('./config.js');
//创建app对象
let app = express();
//关联路由router
//等价于app.use('/',router)
app.use(router);
//启动服务
app.listen(config.port, function(){
console.log('服务已启动,端口号:'+config.port);
});
路由模块-router.js
const express = require('express');
const handler = require('./handler.js');
//创建一个router对象,它既是一个对象,也是一个函数
let router = express.Router();
//挂载路由
router.get('/index', handler.index);
router.post('/add', handler.add);
//返回router对象
module.exports = router;
业务模块-handler.js
module.exports.index = function(req, res){
res.send('主页');
}
module.exports.add = function(req, res){
res.send('添加页');
}
配置模块-config.js
module.exports = {
"port" : 8888
}