使用express框架创建服务端

const express=require(`express`)
const morgan=require(`morgan`)
const serveFavicon=require(`serve-favicon`)
const bodyParser=require(`body-parser`)
const app=express() //返回一个应用对象给app
const ejs=require(`ejs`)
const session=require(`express-session`)


//设置端口号
app.set(`port`,8090)
//配置express-session,要放在最前面
app.use(session({
secret:`abcdefg`, //加密的session数据
name:`demo`, //返回给客户端cookie的name值,可以不写
cookie:{maxAge:1000*10}, //失效时间
rolling:false, //更新失效时间,上线时设为true
resave:false , //重新保存,上线时设为true
saveUninitialized:false //是否强制将“未初始化”的会话保存到存储中
}))


app.use(bodyParser.json())//定义数据格式为json格式
app.use(bodyParser.urlencoded({extended:false}))
app.use(morgan('dev'))




//配置ejs
app.set(`views`,__dirname+`/view`)
//app.set(`view engine`,`ejs`)
app.engine(`html`,ejs.__express)
app.set('view engine','html')

//app.use(serveFavicon(__dirname+`/`)),__dirname==my_node(根目录)
app.use(express.static(__dirname+`/public`)) //配置静态资源
app.use(express.static(__dirname+`/public/pages`))

var sc=require(`./routes/scenic`)
app.use(sc)
//监听端口
app.listen(app.get(`port`),function () {
//引用路由模板 //一般要写在全局
console.log("服务器运行,端口号8090")


//配置白名单解决跨域问题
/* app.all('*', function(req, res, next) {
console.log(req.method);
res.header("Access-Control-Allow-Origin", "*");
res.header('Access-Control-Allow-Headers', 'Content-type');
res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS,PATCH");
res.header('Access-Control-Max-Age',1728000);//预请求缓存20天
next();
});*/


var loginRoute=require(`./routes/routeUser`)
var searchRoute=require(`./routes/routePaient`)
var email=require(`./routes/routeTools`)

// 使用路由模板 //一般要写在全局

app.use(function (req, res, next) { //自定义中间件
console.log('req.url:',req.url);
next(); //一定要写next(),数据才会传递给下一下中间件;
})
app.use(loginRoute)
app.use(searchRoute)
app.use(email)
//返回404页面
app.use('*',function (req,res,next) { //*表示根目录下的页面
//如果没有直接
res.status(404)
res.sendFile(__dirname+`/public/404.html`)
//next() app.use放在前面要加next()方法,数据才能传给下一个中间件
})

})
原文地址:https://www.cnblogs.com/wywd/p/13149471.html