序
无论你的应用界面上过多少次《xxx个优秀界面设计》,无论你的交互上过多少次《xxx个炫酷交互设计》最终落地还是数据,说白了核心就是对数据的处理。
大用户规模的没搞过,小来小去的倒是没事就搭搭,这篇总结一下去年拾荒2个月里用node mysql做的小后台。
为什么选 node
答案:别的不溜
可别跟我聊php node java python asp.net go ruby 哪个更适合做服务 哪个更适合做哪种服务……
哪个手头最熟悉就来哪个 几年不搞java 怎么配环境都忘差不多了 就直接node吧起码语法 api不用再温习。
所以想知道具体什么语言适合什么业务 去搜吧 知识的获取越来越廉价 实践正变得昂贵起来。
搭配点什么
这年头程序员不随嘴拽个技术栈 都不配称为猴子了。就像王者荣耀,出招就得连,套路。
选技能、装备都有遵循你的目的,我的目的是二话不说就能搭出来能用的东西
so:
1技能-koa
2技能-vue
3技能-mysql
koa 建议选装
- koa2
- koa-router
- koa-better-body
vue干嘛
vue主要是用来迅速构建后台视图,单文件组件、数据绑定、超好用的文档是选择它最重要的理由。
why not react?
会增加一些上手成本 选择可以遵循一个原则 如果该库的产物是由简单的基础物件作为输入得到的 那么可以优选,比如 vue一个组件就是由完全一致的css\html(template)\js构成 完全可以应用已有知识迅速编写,而react你得把jsx语法说明看看吧?
拾荒阶段孤狼最怕两件事:
- mb英文看不懂❓
- mb中文看不明白❓
koa小套装 为啥还用2??
router,body 不自己写真是不知道心累,时间一下子拉到大三 用HttpRequest写servlet 再去接触struts这类的 真是轻松多了……
习惯用express的也可以 koa api就一页……看着轻松 为什么用2呢?
因为 async / await
回调缩的手疼、promise then的头疼、generator 搞得我yield疼
我终究是个人类 编程思维还是倾向于同步流 async / await 带给我的体验:
- 从数据库查询数据
- 等拿到数据 输出execl
- 等输出完execl response回去
const results = await db.excute(sql);
const exportResult = await fs.writeFile(...);//对返回值封装下
return exportResult;
对…… 我就喜欢这个关键字 await……蜜汁好用 人工书写的代码还是有可观减少的~
ps 对于一些自定义过程或者不支持promise的api 还是要用promise去封装下~
const excute = (sqlString, query) => {
return new Promise((resolve, reject) => {
pool.getConnection((err, connection) => {
if(err){
logger.debug("debug:获取数据库连接错误:" + err);
}
logger.debug("pool-success")
connection.query(sqlString,query, (err, rows) => {
if (err) {
logger.debug("debug:数据库操作错误:" + err);
reject(err);
} else {
logger.debug('rows:'+JSON.stringify(rows));
resolve(rows);
connection.release();
}
})
})
})
}
项目结构
叨叨完 进入正篇,拾荒最重要的就是服务端也就是接口相关的一些开发。着重来说下这部分。
普通的不能再普通的分为
- model dao层
- controller 业务逻辑层
- router 对外暴露接口
- tool 这你随便起名字 放一些工具 比如数据库连接 签名算法等
- data 放建库sql 不会提到线上
- db 数据库配置文件 //配置连接池
- config 全局配置文件 //比如配置token签名
- server.js 主程 堆中间件 挂载路由 启动服务的
当然如果做的好 沉淀下来 可以挂上日志、重启等功能。
埋坑:
- 处理泳道图
- 基础版源码
- orm集成
未完。。。我去再开个另一个文章头……
=========更新===========
这几个月一直是写sql来着……所以发现一开始懒 是错误的……
所以要么你自己封装个orm要么就抓紧选一个
更新点:
- 将数据库操作从mysql库更新到了sequelize
- 增加了token验证集成
基础流程
httprequest-->server-->router-->eg:get/post-->verifyToken-->controller-->model-->controller-->httpresponse
千百年来 从asp.net java servlet 到j2ee 乃至node-server 再怎么新的东西……思路都这样 请求进来 filter 路由分发 业务处理数据 要么计算 要么通信 要么持久化 然后再把屎盆子扣回去。