1.3.2 • Published 3 years ago

quick-d-cli v1.3.2

Weekly downloads
1
License
Apache-2.0
Repository
github
Last release
3 years ago

quick-d-cli

quick-d 框架的cli工具

如何使用

安装yarn

  • npm install -g cnpm --registry=https://registry.npm.taobao.org

    全局安装淘宝包管理器cnpm

  • cnpm install -g yarn

    全局安装超级快的包管理器yarn

  • yarn config set registry https://registry.npm.taobao.org/

    设置yarn的仓库源为淘宝源

(PS:有关包管理器之间根本区别的文章)

使用quick-d-cli创建一个基于koa的quick-d项目

  • yarn global add quick-d-cli

    全局安装quick-d的cli工具

  • 初始化项目

mkdir project && cd project
quick-d-cli init

选择yarn作为项目的包管理器

npm.io

安装过程会稍微等待比较久的时间,如果安装时出现了网络问题,再在项目下执行一遍yarn命令即可

npm.io

出现上图时表示项目已经创建成功了

  • 启动项目

npm run dev

npm.io

出现该界面表示项目已经,启动成功

访问 该页面

npm.io

可以看到Hello world在屏幕中间展示

控制台输出了

npm.io

项目启动与访问成功,下面对代码进行一定程度的解析,方便开发

如何进行开发

  • 选择一款强大的ide,在这里我选择了webStorm(没办法学生优惠实在是太香了,idea系的软件实在是太好用了)。你可以选择自己喜欢的vscode、atom、subline、notepad++。

  • 项目结构如下(使用的图标插件是'Atom Material File Icons') npm.io

  • node_modules node模块文件

  • src 项目源文件,开发环境下使用(执行完npm run build后会经过babel编译出一个dist文件,用于生产环境)

    • config 一些配置信息

      • alases.js 模仿webpack的路径重命名软件'@'这种的
      • dev.js 开发环境下使用的配置文件 (里面设置了环境访问状态与端口,本地可访问)
      • pro.js 生产环境下使用的配置文件 (里面设置了环境访问状态与端口,服务器上公网可访问,本机内网可访问)
      • index.js 对外输出经过环境选择的配置文件
    • controller 路由层文件

      • HomeController.js 一个很简单的路由文件

        // 从框架中获取请求装饰器与控制器装饰器
        import { GetRequest } from 'quick-d/lib/common/Request'
        import { Controller } from 'quick-d/lib/common/Controller'
        
        // 设置控制器根路由
        @Controller('/home')
        class HomeController {
          // 设置一个行为路由
          @GetRequest('/hello')
          async hello (ctx) {
            // ctx是koa默认的上下文对象
            // 也可以通过@Context() 参数装饰器获取
            // 还有许多更强大的参数装饰器获取请求中的参数
            console.log(ctx)
            // 语法糖,下面相当于 ctx.body = `<h1>Hello world</h1>`
            return `
              <h1>Hello world</h1>
            `
          }
        }
    • listener 监听器(可以是事件监听器,也可以是错误监听器)

      • ServerErrorListener.js 服务器异常信息监听器(可以多个,按照方法的权重处理错误异常)

        import {
          ErrorListener, ErrorsHandler
        } from 'quick-d/lib/common/Handler'
        import ValueNotDeliveredError from 'quick-d/lib/error/ValueNotDeliveredError'
        
        /**
      • 多例模式,每个异常的处理都是独立的 */ class ServerErrorListener extends ErrorListener { // 是否打印堆栈信息,默认不打印 // 该对象必须具有添加ErrorsHandler装饰器的方法 // 当环境为开发环境时才打印调用堆栈信息 isLogStack = process.env.NODE_ENV === 'development'

        // ErrorsHandler(处理的异常列表, 处理权重) // 处理权重越大的先执行 @ErrorsHandler( Error , 1) dealError ( ctx, error ) { console.log('dealError', error) }

        @ErrorsHandler( ValueNotDeliveredError , 10) dealValueNotDeliveredError ( ctx, error ) { console.log('dealValueNotDeliveredError', error) } }

    • app.js 项目入口文件

      import path from 'path'
      import Koa from 'koa'
      import { registerApp } from 'quick-d'
      import config from './config'
      
      // 实例化一个Koa应用
      const app = new Koa()
      
      // 将应用注册到quick-d框架中
      registerApp(app)
      
      // 搜索目录下的控制层文件
      // 让babel检测到其中的装饰器,触发反射机制,将对应的路由数据注入到容器中
      const controllersFileNames = require('fs').readdirSync(
        path.join(__dirname, '/controller')
      )
      
      for (let controllersNameIndex in controllersFileNames) {
        const controllersName = controllersFileNames[controllersNameIndex]
      
        // 检测是否为js文件
        if (/\.js$/.test(controllersName)) {
          // @是项目根文件夹的src文件夹
          // 您可以在src/config/aliases.js中自定义别名
          require(`@/controller/${controllersName}`)
        }
      }
      
      // 引入监听器文件,触发反射机制
      require('@/listener/ServerErrorListener')
      
      // 启动项目
      app.listen(config.server.port, config.server.host, _ => {
          console.log(
            `Server is running in http://${config.server.host}:${config.server.port}`
          )
      })
  • .babelrc babel的配置文件,用于解决js中不支持装饰器、类型校验、类属性三个特性

  • webStorm.config.js由webstorm识别的配置文件,方便ctrl键点到源文件中

  • ...其他均与项目关系不大,不仔细介绍了

写开发文档ing

大家使用中有啥问题欢迎在评论区讨论,我看到就会来解答(毕竟我还只是一个学生,挺闲的)

计划任务

  • 添加eslint选项用来规范代码风格
  • 添加数据库选项用来选择开发数据库
    • mongodb
      • odm (mongoose)
    • mysql
  • 添加log4j选项用来记录日志信息
  • 添加是否自动生成接口文档选项,快速进行接口开发与测试
  • 添加1期开发文档
  • 对接前端开发框架vue与react
  • ejs模板处理(我是想做一个纯api的,但是能支持还是支持)
  • 添加2期开发文档
  • 带图形界面的cli工具
1.3.2

3 years ago

1.3.1

3 years ago

1.3.0

4 years ago

1.2.0

4 years ago

1.2.1

4 years ago

1.1.1

4 years ago

1.1.0

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago