实战Node—幼教平台项目重构和优化
发布日期:2021-06-30 15:46:09 浏览次数:3 分类:技术文章

本文共 2496 字,大约阅读时间需要 8 分钟。

后端

async/await

概念

  1. 现在最常用的异步编程方案
  2. async 函数是 Generator 函数的语法糖
  3. 具备特点
    ① 内置执行器:Generator 函数的执行必须依靠执行器,而 async 函数自带执行器,调用方式跟普通函数的调用一样
    ② 更好的语义:async 和 await 相较于 * 和 yield 更加语义化
    ③ 更广的适用性:co 模块约定,yield 命令后面只能是 Thunk 函数或 Promise对,而 async 函数的 await 命令后面则可以是 Promise 或者 原始类型的值(Number,string,boolean,但这时等同于同步操作)
    ④ 返回值是 Promise:async 函数返回值是 Promise 对象,比 Generator 函数返回的 Iterator 对象方便,可以直接使用 then() 方法进行调用

使用

  1. async 是“异步”的简写, async function 用于申明一个 function 是异步的; await,可以认为是async wait的简写,用于等待一个异步方法执行完成;
  2. async/await是一个用同步思维解决异步问题的方案(等结果出来之后,代码才会继续往下执行)
  3. 可以通过多层 async function 的同步写法代替传统的callback嵌套

在项目中如果要使用async/await,需要安装和配置transform-runtime

步骤

npm i babel-plugin-transform-runtime -D

配置.babelrc

"plugins": [   "transform-runtime"]

在这里插入图片描述

不安装则会报错

编译代码时报 regeneratorRuntime is not defined 错误

MVC模式设计

  1. 在Controller文件夹中新建SowingController.js
    V
  2. 将sowing.js中业务逻辑抽到SowingController.js中
    在SowingController.js中新建函数insertOneSowing()并将插入一条新纪录业务逻辑从sowing.js中转移到该函数中,通过async声明该函数是异步函数。 在这里插入图片描述
  3. async/await的方式替换callback()
    替换后的数据库操作
    在这里插入图片描述
  4. sowing.js中引入SowingController.js
    在这里插入图片描述
  5. 修改之前的路由
    在这里插入图片描述

端口号配置

各个环境下,nodejs可以通过process.env.PORT去设置端口号

比如

  1. linux环境下

    PORT=1234 node app.js
    使用上面命令每次都需要重新设置,如果想设置一次永久生效,使用下面的命令
    export PORT=1234
    node app.js

  2. windows环境下

    set PORT=1234
    node app.js
    package.json配置文件

    "scripts": {
    "start": "set PORT=8888 && node ./bin/www" },

实操

  1. config.js

    port: parseInt(process.env.PORT, 10) || 3000,
  2. app.js

    app.listen(config.port, () => {
    console.log(`server is running, port:${
    config.port}`)});

中间件session抽取

config.js

实操

secret: 'itlike.com',name: 'likeid',maxAge:  365 * 24 * 60 * 60 * 1000,db_url:'mongodb://localhost:27017/school'

在这里插入图片描述

集成插件chalk

  1. 简介:chalk是一个颜色的插件。可以通过 比如: chalk.blue(‘hello world’)之类的方法来改变颜色
  2. 使用
    下载:$ npm install chalk
    引入:import chalk form 'chalk'
    显示:console.log(chalk.blue('Hello world!'));

封装数据库连接

  1. 简介:全局连接数据库

  2. 实操代码

    首先新建db.js,并在app.js中导入db.js,使每一次访问时首先连接数据库

    在这里插入图片描述

    在这里插入图片描述

    'use strict';import mongoose from 'mongoose';import config from './../src/config';mongoose.connect(config.db_url, {
    useNewUrlParser: true});mongoose.Promise = global.Promise;const db = mongoose.connection;db.once('open' ,()=>{
    console.log('连接数据库成功');});db.on('error', (error)=>{
    console.error('连接数据库时发生错误: ' + error); mongoose.disconnect();});db.on('close', function() {
    console.log('数据库断开,重新连接数据库'); mongoose.connect(config.db_url, {
    server:{
    auto_reconnect:true}});});export default db;

在这里插入图片描述

前端

全局配置服务器地址

新建config.js,并在其中利用闭包进行配置

在这里插入图片描述
在这里插入图片描述

(function (window) {
window.LK = {
}; LK.SERVER = 'http://localhost:3000/'})(window);

转载地址:https://kaisarh.blog.csdn.net/article/details/105573111 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Vue:基础知识
下一篇:SQL:postgresql一条sql语句查询多个count

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月18日 00时26分32秒