lampkid / blog

the Source of My blog generated by hexo
1 stars 0 forks source link

Node框架中的目录结构设计 #3

Open lampkid opened 5 years ago

lampkid commented 5 years ago

generator-koa-rest

image

generator-koa

.
├── app.js     // 各种中间件和bootstrap,路由的聚合也在这个文件里,只有一级路由
├── controllers  // controllers
│   └── messages.js 
├── package.json
├── public    // 静态文件
│   ├── scripts
│   └── styles
│       └── main.css
├── test // unittest
│   └── routeSpec.js
└── views  template
    ├── layout.html
    └── list.html

generator-k

.
├── app.js  各种中间件以及路由中间件入口 bootstrap
├── config 各类环境的配置信息
│   ├── config.js
│   └── local.js
├── controller
│   └── index.js
├── log 
├── model 
├── package.json
├── public
│   ├── css
│   └── js
├── router // 具体路由映射controller
│   └── index.js
├── test
│   └── index-router-spec.js
└── view 模板
    ├── index.xtpl
    └── layout
        ├── footer.xtpl
        ├── header.xtpl
        └── layout.xtpl

node-koa-api

https://github.com/mjhea0/node-koa-api

.
├── LICENSE
├── README.md
├── knexfile.js 数据库配置信息
├── package.json
├── src
│   └── server
│       ├── auth.js 用户登录认证
│       ├── db
│       │   ├── connection.js // 创建数据库连接
│       │   ├── migrations // 数据表设计
│       │   │   ├── 20170817152841_movies.js
│       │   │   └── 20171231115201_users.js
│       │   ├── queries // 数据库DAO
│       │   │   ├── movies.js
│       │   │   └── users.js
│       │   └── seeds
│       │       ├── movies_seed.js
│       │       └── users.js
│       ├── index.js // app路由、中间件、启动
│       ├── routes // 不同模块的路由文件
│       │   ├── _helpers.js
│       │   ├── auth.js
│       │   ├── index.js
│       │   └── movies.js
│       ├── session.js session redis存储
│       └── views 模板
│           ├── admin.html
│           ├── login.html
│           ├── register.html
│           └── status.html
└── test
    ├── integration
    │   ├── routes.auth.stub.test.js
    │   ├── routes.auth.test.js
    │   ├── routes.index.test.js
    │   └── routes.movies.test.js
    └── unit
        └── sample.test.js

egg

> https://github.com/eggjs/examples/tree/master/sequelize

├── README.md
├── README.zh-CN.md
├── app
│   ├── controller controller
│   │   ├── post.js action
│   │   └── user.js
│   ├── extend  // 扩展
│   │   └── helper.js
│   ├── model // 数据表定义与DAO
│   │   ├── post.js
│   │   └── user.js
│   ├── router.js // 路由聚合
│   └── service // 服务层,调用model的DAO完成业务层逻辑
│       ├── post.js
│       └── user.js
├── config // 配置信息
│   ├── config.default.js
│   ├── config.unittest.js
│   └── plugin.js
├── database // 数据库配置信息
│   ├── config.json
│   └── migrations
│       ├── 20180813112934-user.js
│       └── 20180813112942-post.js
├── package.json
└── test
    ├── app
    │   ├── controller
    │   │   ├── post.test.js
    │   │   └── user.test.js
    │   └── service
    │       └── post.test.js
    └── factories.js

yog2

.
├── LICENSE
├── README.md
├── app
│   └── README.md
├── app.js
├── conf
│   ├── plugins
│   │   ├── dispatcher.js
│   │   ├── http.js
│   │   ├── log.js
│   │   ├── ral.js
│   │   ├── recv-reload.default.js
│   │   ├── reqlimit.js
│   │   └── views.js
│   └── ral
│       └── demo.js
├── home
│   ├── client
│   │   ├── page
│   │   │   ├── index.tpl
│   │   │   └── layout.tpl
│   │   ├── static
│   │   │   └── js
│   │   │       ├── README.md
│   │   │       ├── bigpipe.js
│   │   │       ├── index.js
│   │   │       ├── lazyload.js
│   │   │       ├── mod.js
│   │   │       └── page.js
│   │   └── widget
│   │       └── message
│   │           └── message.tpl
│   ├── fis-conf.js
│   ├── package.json
│   └── server
│       ├── action
│       │   ├── book.js
│       │   └── index.js
│       ├── lib
│       │   └── util.js
│       ├── model
│       │   └── index.js
│       └── router.js
├── package.json
├── plugins
│   └── README.md
├── static
└── views

总结

lampkid commented 5 years ago

细节思考:实际项目中,都会使用哪些中间件?

lampkid commented 5 years ago

session是如何实现的?SSO了解多少?

lampkid commented 5 years ago

HttpClient、Proxy的实现

lampkid commented 5 years ago

Redis、MongoDB、MySQL在Node中有哪些客户端,ORM实现有哪些? http://docs.sequelizejs.com/manual/installation/getting-started.html

lampkid commented 5 years ago

常用模板有哪些?ejs、pug、swig

lampkid commented 5 years ago

路由分发如何根据controller和action名实现、node中有autoload吗? Object.getOwnPropertyNames(Object.getPrototypeOf(instance))

lampkid commented 5 years ago

服务怎么运行?PM2?cluster?cluster模式如何实现?

lampkid commented 5 years ago

如何使用ES6做Node开发?

lampkid commented 5 years ago

如何使用typescript做Node开发

lampkid commented 5 years ago

session的设计与实现

lampkid commented 5 years ago

API error code规范: 参考HTTP status的分类:https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

lampkid commented 5 years ago

数据库连接池的配置,比如如何设置最大连接数等 数据库连接单例模式

lampkid commented 5 years ago

如何设计缓存系统提高性能?redis?

lampkid commented 5 years ago
lampkid commented 5 years ago

Model/DAO/Service/Controller三层的边界如何处理? DAO是否要聚合所有Model的查询,完成多表操作?容易通过事务处理一组操作。 还是由Service聚合各个DAO,完成多表操作? 不能处理事务操作。