美文网首页
【除草】拾荒基础叉-miniadmin

【除草】拾荒基础叉-miniadmin

作者: 懒先森 | 来源:发表于2017-01-07 18:11 被阅读23次

无论你的应用界面上过多少次《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 带给我的体验:

  1. 从数据库查询数据
  2. 等拿到数据 输出execl
  3. 等输出完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 路由分发 业务处理数据 要么计算 要么通信 要么持久化 然后再把屎盆子扣回去。

相关文章

  • 【除草】拾荒基础叉-miniadmin

    序 无论你的应用界面上过多少次《xxx个优秀界面设计》,无论你的交互上过多少次《xxx个炫酷交互设计》最终落地还是...

  • 拾荒

    在我爷爷那一辈人当中,曾经有很多拾荒者。 他们去外地村庄帮别人收庄稼,除草,拉犁。 有的也讨饭。 也有村姑小媳妇们...

  • 9.6-9.7

    9.6 阵雨 21°-29 除草 手动除草真的是太慢了,我讨厌除草,讨厌除草,讨厌除草 9.7 小雨 20°-27...

  • LeetCode基础算法-树

    LeetCode基础算法-树 LeetCode 树 基础算法 1. 二叉树的最大深度 给定一个二叉树,找出其最大深...

  • 二叉树系列之初探

    声明,本文不涉及基础的树知识,主要详解的是二叉树相关的基础知识,为后续了解指定树的结构时奠定基础知识。 什么是二叉...

  • 二叉搜索树的前驱、后驱

    二叉搜索树(Binary Search Tree) 简称BST,也叫二叉排序树, 它是学习平衡树的基础.二叉搜索树...

  • 树数据结构-力扣刷树题需要知道的(Python)

    树是一种重要的数据结构,而二叉树是其中的重点和难点,有关二叉树的基础知识,读者可移步【二叉树基础】查看更多内容。这...

  • 除草

    继春耕之后,除草就成了惯常的农事活动。在农村看谁家的媳妇是否勤快,只要到他家的地里看上两眼,就见分晓…… 在这里,...

  • 除草

  • 除草

    去年来了新书记,很抓环境,譬如办公楼下不能停车,必须停到指定位置,另外楼下绿地的草必须除掉。小张刚入职没几天就和同...

网友评论

      本文标题:【除草】拾荒基础叉-miniadmin

      本文链接:https://www.haomeiwen.com/subject/fkefbttx.html