实战Node—幼教平台项目重构和优化
发布日期:2021-06-30 15:46:09
浏览次数:3
分类:技术文章
本文共 2496 字,大约阅读时间需要 8 分钟。
后端
async/await
概念
- 现在最常用的异步编程方案
- async 函数是 Generator 函数的语法糖
- 具备特点 ① 内置执行器:Generator 函数的执行必须依靠执行器,而 async 函数自带执行器,调用方式跟普通函数的调用一样 ② 更好的语义:async 和 await 相较于 * 和 yield 更加语义化 ③ 更广的适用性:co 模块约定,yield 命令后面只能是 Thunk 函数或 Promise对,而 async 函数的 await 命令后面则可以是 Promise 或者 原始类型的值(Number,string,boolean,但这时等同于同步操作) ④ 返回值是 Promise:async 函数返回值是 Promise 对象,比 Generator 函数返回的 Iterator 对象方便,可以直接使用 then() 方法进行调用
使用
- async 是“异步”的简写, async function 用于申明一个 function 是异步的; await,可以认为是async wait的简写,用于等待一个异步方法执行完成;
- async/await是一个用同步思维解决异步问题的方案(等结果出来之后,代码才会继续往下执行)
- 可以通过多层 async function 的同步写法代替传统的callback嵌套
在项目中如果要使用async/await,需要安装和配置transform-runtime
步骤
npm i babel-plugin-transform-runtime -D
配置.babelrc
"plugins": [ "transform-runtime"]
不安装则会报错
编译代码时报 regeneratorRuntime is not defined
错误
MVC模式设计
- 在Controller文件夹中新建SowingController.js
- 将sowing.js中业务逻辑抽到SowingController.js中 在SowingController.js中新建函数insertOneSowing()并将插入一条新纪录业务逻辑从sowing.js中转移到该函数中,通过
async
声明该函数是异步函数。 - 用
async/await
的方式替换callback() 替换后的数据库操作 - sowing.js中引入SowingController.js
- 修改之前的路由
端口号配置
各个环境下,nodejs可以通过process.env.PORT去设置端口号
比如
-
linux环境下
PORT=1234 node app.js
使用上面命令每次都需要重新设置,如果想设置一次永久生效,使用下面的命令export PORT=1234
node app.js
-
windows环境下
set PORT=1234
node app.js
package.json配置文件"scripts": { "start": "set PORT=8888 && node ./bin/www" },
实操
-
config.js
port: parseInt(process.env.PORT, 10) || 3000,
-
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
- 简介:chalk是一个颜色的插件。可以通过 比如: chalk.blue(‘hello world’)之类的方法来改变颜色
- 使用
下载:$ npm install chalk
引入:import chalk form 'chalk'
显示:console.log(chalk.blue('Hello world!'));
封装数据库连接
-
简介:全局连接数据库
-
实操代码
首先新建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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月18日 00时26分32秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux常用的安全工具
2019-05-01
Iphone5S 体验(视频+截图)
2019-05-01
python 多进程之进程池的操作
2019-05-01
flask整理之 flask程序中的debug模式
2019-05-01
比特币,父母这一辈能接受吗?
2019-05-01
为什么要反对比特币,这不代表是空气币
2019-05-01
我们提出了DeFi项目如何成为聚合器,有两种路径
2019-05-01
SnapEx的新感觉,对新手很友好
2019-05-01
首个聚合器怎么产生的,并运用领域在什么
2019-05-01
区块链的优势和劣势的对比
2019-05-01
区块链技术应用,最先医疗行业
2019-05-01
新币上市旧币会降价吗
2019-05-01
为什么币圈的基础设施越来越多
2019-05-01
市场套利策略是什么
2019-05-01
跨市场套利怎么处理
2019-05-01
当博士进入币圈会怎么样
2019-05-01
以太坊技术分解
2019-05-01
以太坊技术怎么提供安全性
2019-05-01
如何验证以太坊技术安全性
2019-05-01