• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

qddegtya/let-us-koa: Just another koa-seed-project.

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

qddegtya/let-us-koa

开源软件地址:

https://github.com/qddegtya/let-us-koa

开源编程语言:

JavaScript 97.9%

开源软件介绍:

let-us-koa

Just another koa-seed-project.

Preview

let-us-koa

Why

搭建一个 koa 的脚手架并不困难,但就如其他"体力活"一样,

  • 我们并不想重复劳动
  • 其他脚手架生成出来的项目目录结构可能并不是我们想要的
  • 一些基于 Express 和 Koa 类型的框架型项目集成了 ORM 等重量级组件,当然,这本身无可厚非,大家的定位不一样

What we need

我希望只通过一个最小化的"容器"去启动一个应用,它大概只需要以下几个功能就可以了,重要的是,它的目录结构应该是清晰的,可维护的:

核心思想:模块即同名文件

  • 自动根据模块级目录生成路由
  • 模块可插拔
  • 支持路由级中间件自动加载
  • 脚手架只需要支持 router, render, debug 就可以了

所以,let-us-koa 的原理非常简单,如果你想快速跑起来一个 koa 应用,你可以这么做:

Play

Install

$ git clone https://github.com/qddegtya/let-us-koa
$ cd let-us-koa
$ npm install

Run!

$ npm run start

新增一个模块

在 modules 下面新建目录即可,目录名称就是模块加载器自动 prefix 的一级路由名称,比如我们这里的 api 和 home

分别对应

/api
/home

模块必须包含的文件

app.conf.json // 模块配置文件
controllers.js // 控制器

app.conf.json

{
  "routes": [
    // 路由规则
    // [HTTP 方法]#[/your route]#[controller]
    "GET#/version#getApiVersion"
  ],
  "active": true // 模块是否激活
}

模块下的controllers

'use strict'

// 只需要导出对应的方法即可
module.exports = {
  getApiVersion: function* () {
    this.body = {
      'version': 'v1'
    }
  }
}

全局配置

{
  // 子模块目录
  "modules": "modules",

  // 上传目录
  "upLoadDir": "public/uploads",

  // 自定义中间件存放目录
  "middlewareDir": "middlewares",

  // 子模块渲染服务的 view path
  "subModuleViewPathName": "views",

  // 全局渲染选项
  "renderSettings": {
    "autoescape": true,
    "cache": "memory",
    "ext": "html"
  }
}

中间件

应用级中间件

推荐把加载逻辑写进 middleware.js 里

路由级中间件

let-us-koa 自动为你处理了这块中间件的加载逻辑

你可以参考下面的配置:

{
  "routes": [
    "time|log|GET#/version#getApiVersion"
  ],
  "active": true
}

它表示,该路由将经过 time, log 中间件,对应的源文件就是 middlewares 下的同名文件,当然,你可以在全局的 app.conf.g.json 中更改这个配置

关于渲染方法的挂载

如果你的某个子模块需要挂载渲染方法,那你必须显式地在子模块 app.conf.json 中声明 needRender 选项

{
  "routes": [
    "GET#/#getHomePage"
  ],
  "active": true,
  "needRender": true
}

这样,let-us-koa 就会自动为你挂载这个 render 方法。

idea: 比如一些 API 服务模块,可能不需要渲染服务,那就没有必要构建 render

静态资源托管

默认托管在种子项目根目录下的 public


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap