Javascript

nodejs express后台demo

本文主要是介绍nodejs express后台demo,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.express-generator 是 Express 应用程序生成器工具,我们可以使用它来快速创建应用程序框架。

npm install -g express-generator
windows添加环境变量:E:\node\node_global

2.创建项目
express expressFrame (expressFrame 是项目名)
bin/www 是启动入口文件,在里面可以设置端口号等

3.下载安装依赖
npm i
npm i nodemon --save
npm i winston


4.修改配置
nodemon:监控 node.js 源代码的任何变化和自动重启你的服务器
winston:打印日志文件,在根目录创建文件 logger.js

logger.js :
const { createLogger, format, transports } = require('winston');
const fs = require('fs');
const path = require('path');

const env = process.env.NODE_ENV || 'development';
const logDir = 'log';

// Create the log directory if it does not exist
if (!fs.existsSync(logDir)) {
fs.mkdirSync(logDir);
}

const filename = path.join(logDir, 'results.log');

const logger = createLogger({
// change level if in dev environment versus production
level: env === 'production' ? 'info' : 'debug',
format: format.combine(
format.label({ label: path.basename(process.mainModule.filename) }),
format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' })
),
transports: [
new transports.Console({
format: format.combine(
format.colorize(),
format.printf(
info =>
`${info.timestamp} ${info.level} [${info.label}]: ${info.message}`
)
)
}),
new transports.File({
filename,
format: format.combine(
format.printf(
info =>
`${info.timestamp} ${info.level} [${info.label}]: ${info.message}`
)
)
})
]
});

module.exports = logger;

5.修改 app.js 的配置:
将 const logger = require('morgan'); 改成:
const morgan = require('morgan')
相应的也要把 app.use(logger('dev')); 改成:
app.use(morgan('dev'));
引入 logger.js 文件
const logger = require('./logger')


屏蔽error hander,添加代码:
const _errorHander = (err, req, res, next) => {
logger.error(`${req.method} ${req.originalUrl} ${err.message}`)
const message = err.message
res.status(err.status || 500).json({
code: -1,
success: false,
message,
data: {}
})
}

app.use(_errorHander)

6.安装配置数据库相关
npm install -save knex mysql

在项目根目录下,新建配置信息 config.js
const configs = {
mysql: {
host: '127.0.0.1',
port: '3306',
user: 'root',
password: '123456', // 自己设置的密码
database: 'expressFrame' // 数据库的名字
},
// 打印错误
log: {
error (message) {
console.log('[knex error]', message)
}
}
}

module.exports = configs

 

数据库配置

新建 models/knex.js, 初始化配置 knex

// 引用配置文件
const configs = require('../config');
// 把配置文件中的信息,设置在初始化配置中
module.exports = require('knex')({
  client: 'mysql',
  connection: {
    host: configs.mysql.host,
    port: configs.mysql.port,
    user: configs.mysql.user,
    password: configs.mysql.password,
    database: configs.mysql.database
  },
  // 打印错误
  log: {
    error (message) {
      console.log('[knex error]', message)
    }
  }
})
复制代码
knex 增删改查

在 models 下新建文件 base.js

const knex = require('../models/knex');

class Base{
  constructor(props){
    this.table = props;
  }

  // 查找
  all (){
    return knex(this.table).select();
  }

  // 新增
  insert (params){
    return knex(this.table).insert(params);
  }

  // 更改
  update (id, params){
    return knex(this.table).where('id', '=', id).update(params);
  }

  // 删除
  delete (id){
    return knex(this.table).where('id', '=', id).del();
  }

}

module.exports = Base;
复制代码
新建用户模型

在 models 下新建文件 user.js

const Base = require('./base');

class User extends Base {
  // 定义参数默认值为 user 表
  constructor(props = 'user'){
    super(props);
  }
}

module.exports = new User();
复制代码
新建用户控制器

在根目录新建控制器文件夹 controllers,在 controllers 新建 user.js,并设置 showUser 方法

// 引用用户模版数据
const User = require('../models/user.js');

const userController = {
  // showUser 获取用户数据并返回到页面
  showUser: async function(req,res,next){
    try{
      let userData = await User.all()
      res.json({
        code: 200,
        message: "操作成功",
        data: userData
      })
    }catch(e){
      res.json({ code: 0, message: "操作失败", data: e })
    }
  },
}

module.exports = userController;
复制代码
添加获取用户接口

修改路由 routes/index.js,添加获取用户信息的接口

const userController = require('../controllers/user');

// 获取用户信息
router.get('/get_user', userController.showUser);
测试接口

访问一下 http://localhost:3000/users/get_user


链接:https://juejin.cn/post/6914891222884564999
这篇关于nodejs express后台demo的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!