一、什么是开发环境与生产环境
环境,就是指项目运行的地方,当项目处于开发阶段,项目运行在开发人员的电脑上,项目所处的环境就是开发环境。当项目开发完成以后,要将项目放到真实的网站服务器电脑中运行,项目所处的环境就是生产环境。
二、为什么要区分开发环境与生产环境
因为在不同的环境中,项目的配置是不一样的,需要在项目代码中判断当前项目运行的环境,根据不同的环境应用不同的项目配置。
三、如何区分开发环境与生产环境
通过电脑操作系统中的系统环境变量区分当前是开发环境还是生产环境。
四、Morgan是一个node.js关于http请求的日志中间件
- 安装
npm install morgan --save #保存到package.json的依赖列表
app.js :
// 引用express框架
const express = require('express');
// 处理路径的模块
const path = require('path');
// 引入body-parser模块 用来处理post请求参数
const bodyParser = require('body-parser')
// 引入 express-session模块
const session = require('express-session')
// 引入 art-template模板引擎
const template = require('art-template')
// 引入dateformate第三方模块
const dateFormate = require('dateformat')const morgan = require('morgan')// 创建网站服务器
const app = new express()// 数据库连接
require('./model/connect.js')// 处理post请求参数
app.use(bodyParser.urlencoded({extended: false}))// 配置session
app.use(session({secret: 'zepzep'}))// 开放静态资源文件
var static_path = path.join(__dirname, 'public')
app.use(express.static(static_path))// 获取系统环境变量,返回值是对象
// console.log(process.env.NODE_ENV)
if(process.env.NODE_ENV == "development") {// 当前是开发环境 将客户端发送到服务器端的请求信息打印到控制台中console.log('当前是开发环境')// 在开发环境中app.use(morgan('dev'))
} else {// 当前是生产环境console.log('当前是生产环境')
}// 告诉express框架模板所在的位置
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'html')
// 当渲染后缀为html的模板时,所使用的模板引擎是什么
// 设置模板引擎的后缀名为html
app.engine('html', require('express-art-template'))// 向模板内导入dateFormate变量
template.defaults.imports.dateFormate = dateFormate// 引入路由模块
const home = require('./route/home.js')
const admin = require('./route/admin.js')// 写在路由之前
// 拦截请求 判断用户登录状态
app.use('/admin', require('./middleware/loginGuard.js'))// 为路由匹配请求路径
app.use('/home', home)
app.use('/admin', admin)// 错误处理中间件
app.use((err, req, res, next) => {// JSON.parse() 将字符串对象转换为对象类型const result = JSON.parse(err)let params = []for(let attr in result) {if(attr != 'path') {params.push(attr + '=' + result[attr])}}res.redirect(`${result.path}?${params.join('&')}`)
})// 监听端口
app.listen(3000)
console.log('网站服务器启动成功,请访问http://127.0.0.1:3000/')
- 运行结果
每次http请求,express实例都会输出日志,并且使用一致的格式