代码整体结构
├── code-server #在线编辑器
│ ├── linux
│ └── macos
├── config #初始化数据库配置文件
│ ├── database.${dev}.json
│ ├── node.development.js #入口文件
├── download #大屏模块文件
├── log #日志
├── migrations_init #数据库初始化
├── runtime #运行时配置存储
├── src #后端项目核心代码
│ ├── common #通用业务配置
│ │ ├── bootstrap #
│ │ ├── config #通用配置
│ │ │ ├── adapter #适配器配置
│ │ │ ├── config #通用配置
│ │ │ ├── extend #拓展配置
│ │ │ ├── middleware #中间件配置
│ │ │ ├── validator #自定义复杂校验规则,在logic中使用
│ │ ├── constants #枚举
│ │ ├── middleware #中间件
│ │ ├── model #Model层---M
│ │ │ ├── baseModel.js #定义了基本的CURD,其它所有的model都继承自它
│ │ ├── service #通用逻辑方法
│ └── web #定制化业务-----实现具体业务逻辑
│ ├── config #业务配置
│ ├── controller #控制器层---C
│ ├── logic #前置后置操作---如字段校验、权限控制,其它通用逻辑
│ ├── model #数据库操作
│ ├── service #业务逻辑---数据处理、格式转换等业务逻辑操作
├── scripts #项目部署脚本
├── storage #
├── template #大屏、组件模板
├── view #html模板
├── www #静态资源
│ ├── solution-platform-web
│ └── static
│ └── upload
├── Dockerfile #dockerFile
├── options.json
├── options.json
├── pm2.json
├── README.md
├── startup.sh #启动项目脚本
以上是代码的基本结构,使用的是基于MVC的thinkJS框架,但是通篇看下来,你是不是注意到,只看到了M(Model)和C(Controller),唯独缺少View,所以View在哪?所以就带着这个问题继续学习下去。
先从thinkJS框架开始学习:
Config:通用配置,如上config所示,可配置项目各种配置,最后会根据运行环境合到一起;
Context:上下文,用户请求、回复数据存储对象以及状态透传;
Middleware:中间件,在配置与使用上类似于webpack的plugins,可使用各项函数(内置或引入)实现各项功能,所有的用户请求处理都是由middleware完成;
Logic:逻辑,其中的action与controller的action一一对应,可定义执行action的前置后置操作;
Controller:控制器,和.net的控制器的使用非常相似,其内会按照路由执行对应的action;
View:视图(这里就是答案了),需要使用拓展来实现视图;
Router:路由,可自定义路由规则;
Adapter:适配器,解决一类功能的多种实现,配合extend,如view、数据库,view可以选择多种模板引擎,数据库可配置多种数据库,通过 think-helper模块中的 parseAdapterConfig解析;
Extend:拓展,支持的扩展类型为:think、application、context、request、response、controller、logic 和 service,框架内置的很多功能也是扩展来实现的,如:Session、Cache。
view是如何生成的
adapter.js里面配置view模板的目录为view里面的html模板,模板引擎为nunjucks,配合extend里面引入的think-view使用。
/**
* view adapter config
* @type {Object}
*/
exports.view = {
type: 'nunjucks', // 这里指定默认的模板引擎是 nunjucks
common: {
viewPath: path.join(think.ROOT_PATH, 'view'),//模板文件的根目录
sep