zoukankan      html  css  js  c++  java
  • express

    1.开放静态资源 url访问

    2express-art-template

    https://aui.github.io/art-template/express/

    1. response.render()方法只有配置了模板引擎,才会生效

    const express = require('express')
    const path = require('path')
    const app = express()
    app.engine('html', require('express-art-template'));
    app.set('views', path.join(__dirname, 'views'));
    
    app.use(express.static('./public/'))
    
    app.get('/', (request, response) => {
      // response.send('ok')
      response.send('ok')
    
    })
    app.get('/index', (request, response) => {
      // response.render()方法只有配置了模板殷勤,才会生效
      response.render('index.html', {
        title: 'index page',
        tags: ['art', 'template', 'nodejs']
      })
    })
    app.listen(3000, () => {
      console.log('服务正常启动在3000端口');
    })

     3. 批量导入分块路由

    re

    const fs = require('fs')
    let filePathList = fs.readdirSync(__dirname).filter(item => item !== 'index.js').map(item => item.replace('.js', ''))
    //[ 'order', 'user' ]
    
    module.exports = app => filePathList.forEach(item => app.use(`/api/${item}s/`, require(`./${item}`)))

     定义user.js 路由模块增删改查 匹配路由和逻辑控制器

    把路由逻辑处理单独抽离一个文件

    // 用户路由
    const express = require('express')
    const router = express.Router()
    const { getUserList, getUserById, addUser, modifyUserById, deleteUserById } = require('../control/user')
    
    /**
     * 请求用户列表接口
     */
    
    router.get('/', getUserList)
    
    
    /**
     * 请求单个用户接口
     */
    router.get('/:id', getUserById)
    
    /**
     * 增加用户
     */
    router.post('/', addUser)
    
    /**
     * 修改用户信息
     */
    router.put('/:userId', modifyUserById)
    
    
    /**
     * 删除一个用户
     */
    router.delete('/:userId', deleteUserById)
    module.exports = router
    View Code

     

     

    User的数据库模型定义

    const { model, Schema } = require('mongoose')
    const userSchema = new Schema(
      {
        userId: {
          type: String,
          required: true,
          unique: true, //学号唯一
        },
        name: {
          type: String,
          required: true,
        },
        password: {
          type: String,
          required: true,
          select: false //select设置成false 表示从查询结果中不返回该字段值。如果要显示该字段值 T.opt().select('-password')
        },
        age: {
          type: Number,
          required: true,
          min: 0,
          age: 120
    
        },
        gender: {
          type: Number,
          required: true,
          enum: [0, 1], //0 男 1女 默认是男
          default: 0
        },
        hobby: {
          type: [String] //定义字符串类型数组['a','b','c'], 也就是数组类型
    
        },
        desc: {
          type: Schema.Types.Mixed //混合类型数据,任何类型数据都允许
        },
    
        createTime: {
          type: Date,
          default: Date.now
        },
        // 逻辑删除 硬盘还保存
        isActive: {
          type: Boolean,
          default: true
        }
      }, {
      versionKey: false
    })
    module.exports = model('User', userSchema) //model(表(集合)名字首字母大写,schema)
  • 相关阅读:
    C#socket客户端自己输入消息发送到服务端通信实现通信
    C#设计模式:观察者模式(Observer Pattern)
    C#冒泡排序法学习
    强类型和弱类型
    计算机网络基础知识总结
    推荐几个搜索资源网站
    推荐几个搜索资源网站
    前端:闭包的概念
    前端:闭包的概念
    收集12个经典的程序员段子
  • 原文地址:https://www.cnblogs.com/xiaoliziaaa/p/13322809.html
Copyright © 2011-2022 走看看