npm i express复制代码
const express = require('express');
const app = express();
app.use('/',(req,res,next)=>{
res.send('Hello World');
})
app.listen(3000);复制代码
const express = require('express');
const app = express();
// 一、获取路由中间件
let router = express.Router();
// 二、配置路由(get、post)
router.get('/',(req,res)=>{
res.end('index Page');
})
router.get('/login',(req,res)=>{
res.end('Login Page');
})
// 将Router中间件应用到 app 上面
app.use(router);
app.listen(3000);复制代码
经常使用的res扩展html
const express = require('express');
const app = express();
// 一、获取路由中间件
let router = express.Router();
// 二、配置路由(get、post)
router.get('/',(req,res)=>{
res.end('index Page');
})
router.get('/login',(req,res)=>{
res.end('Login Page');
})
router.get('/resfunction',(req,res)=>{
res.download('xxxx.png'); //下载文件路径
res.redirect('http://www.baidu.com'); //重定向
//res.redireact(301,'http://www.baidu.com');
res.jsonp({user: 'tobi'}); //jsonp =>foo({"user": "tobi"})
res.json([{name: 'jack'}])
})
// 将Router中间件应用到 app 上面
app.use(router);
app.listen(3000);复制代码
#### 使用art-template模板引擎 react
- 下载express-art-template art-template express
- app.js中配置 npm
- 注册一个模板引擎 json
- `app.engine('.html',express-art-template);` 安全
- 设置默认渲染引擎```app.set('view engine','.html');``` bash
- res.render(文件名,数据对象); 服务器
- express这套使用,默认在当前app.js同级的views目录查找
cookie
npm i express-art-template art-template复制代码
const express = require('express');
let app = express();
// 注册模板引擎
app.engine('.html',require('express-art-template'));
// 设置默认模板引擎
app.set('view engine','.html');
// 区分开发和生产环境的不一样配置
app.set('view options',{
/*
debug: 不压缩,不混淆代码,实时保持最新数据
非debug: 压缩、合并代码,静态数据不实时更新(服务器重启才更新)
*/
debug: precess.env.NODE_ENV !== 'production',
imports: {
num: 1,
uppCase: function(str){
return str.toUpperCase();
}
}
})
let router = express.Router();
router.get('/list',(req,res)=>{
// 渲染模板
res.render('list.html',{
lists: [{
name: 'Jack',
age: 12
},{
name: 'Jonn',
age: 13
}]
}
})
app.use(router);
app.listen(3000);
});复制代码
list.htmlsession
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
lists Page
<hr/>
imports.num: {{ num }}
imports.reverse {{ uppCase('abcde') }} <hr/>
<ul>
<!-- 循环语句(art-template语法) -->
{{each lists}}
<li>{{$value.name}}</li>
{{/each}}
</ul>
</body>
</html>复制代码
const express = require('express');
const fs = require('fs');
let server = express();
server.engine('.html',require('express-art-template'));
server.set('view options', {
debug: process.env.NODE_ENV !== 'production',
});
// 配置默认渲染引擎
server.set('view engine','.html');
let router = express.Router();
router.get('/',(req,res,next) => {
// 假如获取文件
let errorPath = './abc/e.txt';
try {
fs.readFileSync(errorPath);
res.render('index');
} catch (err) {
next(err); // 触发一个具有4个参数的中间件函数
}
})
// 当访问的地址不存在时,提示地址错误
router.all('*',(req,res)=> {
res.send('地址错误');
})
// 要把public下的文件暴露出来
server.use(express.static('./public'));
server.use(router);
// 处理文件不存在错误(参数位置错误优先) -> 优雅的用户体验
server.use((err,req,res,next) => {
res.send('文件不存在');
})
server.listen(8888);复制代码
npm i formidable复制代码
const express = require('express');
const formidable = require('formidable');
let app = express();
let router = express.Router();
router.post('/upload',(req,res)=>{
let form = new formidable.IncomingForm();
form.uploadDir = 'xxx'; // 文件上传的路径
form.keepExtensions = true; //上传文件是否保留扩展名
form.parse(req,(err,fields,files)=>{
// fields 数据相关
// files 文件相关
})
})
app.listen(3000);复制代码
npm i body-parser复制代码
const express = require('express');
const bodyParser = require('body-parse');
let app = express();
app.post(bodyParser.urlencoded({
extends: flase;
});
app.post('post',(req,res)=>{
// bodyParser中间件主要用来解析POST提交方式Body的数据
console.log(req.body);
});
app.listen(8080);复制代码
multer中间件只可以处理文件上传,普通body数据解析不了,一般与body-parser混用,form表单上传时,须要设置提交方式为POST,enctype="multiparty/form-data"
const express = require('express');
const multer = require('multer');
let app = express();
app.listen(3000);
let obj = multer({
dest: './xxx/xxx'; //文件上传的路径
});
app.use(obj.any()); //经过obj能够设置文件上传的类型
app.post('upload',(req,res)=>{
// 上传文件的信息在files里面
console.log(req.files);
});复制代码
npm i cookie-parser复制代码
const express = require('express');
const cookieParser = require('cookie-parser');
let app = express();
app.liten(3000);
app.use(cookieParser(
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' //cookie秘钥
}
app.get('/',(req,res)=>{
console.log('cookie',req.cookies); //获取未签名的cookie
console.log('signedcookie',req.signedCookies); //获取签名的cookie
// 设置cookie
res.cookie('name',value,{
domain: 'baidu.com',
path: '/',
maxAge: 10*86400*1000, //有效期
httpOnly: true,
secure: true, //安全cookie,是否只有https才能使用该cookie
signed: true //是否签名
})
})复制代码
npm i cookie-session
复制代码
const express=require('express');
const cookieSession=require('cookie-session');
let app = express();
app.listen(8080);
//
app.use(cookieSession({
keys: ['asdfwqw4r4r343fdgsdfg', 'safdas454trgtrthdfthd', 'dfsdfgdfyrt6u6t7yit7u'], //循环秘钥
maxAge: 20*60*1000 //20分钟
}));
//
app.get('/a', (req, res)=>{
//console.log(req.session);
if(!req.session['view']){
req.session['view']=1;
}else{
req.session['view']++;
}
req.session['amount']=99.8;
res.send(`欢迎你第${req.session['view']}到访本站,你的余额是:${req.session['amount']}`);
});
复制代码