美文网首页
【除草】拾荒基础叉-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

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