NEK 的服务端,包含了页面拖拽构建以及数据库交互
前端只依赖 nek-ui (定制的 regular-ui),如果有需求,直接在这里修改
开发方式跟 Regular 基本一致,需要注意的事项:
- 用的 CommonJS 管理依赖,最终由 Webpack 打包
- 因为人少,规范就没什么可强制的了,使用的是 Airbnb 的 ESLint 规范,也可以部分参考 RGUI 那一套,见这里
- 文件名和组件名用小写+点,导出的类名还是大驼峰
- 每个组件 config 里建议用
this.defaults
指明默认值,这样比较容易理解
- upsert = update + insert,通常由是否有 _id 来决定行为
- 所有的 upsert 接口在更新的时候,不传的字段是不会被更新的,其实这更符合使用逻辑
- 返回都是直接可用对象,不会返回 code message 等冗余信息,如果错误会统一触发 HTTP status code 500
- 请求的 Content-Type 同时支持 application/json 和 application/x-www-form-urlencoded,不过建议统一用前者
注:文档写得略简陋,暂时将就看吧,有问题可以问我
接口 | 方法 | 描述 | 参数 | 返回 |
---|---|---|---|---|
/template | GET | 获取模板文件 | file(文件的id),name(下载后显示的名字) | 二进制文件 |
/template/upload | POST | 批量上传文件 | 随意 | 文件信息列表,主要是用里面的 id 和 originalname 字段 |
/project | GET | 获取项目信息 | project(项目id) | 项目信息 |
/project/list | GET | 所有项目 | 无 | 项目列表 |
/project/upsert | POST | 新增/更新项目 | project(项目id,无则新增),name(项目名),desc(描述) | |
/project/tpl/upsert | POST | 新增/更新项目模板 | project(项目id),name(模板文件名,不存在则新增),file(文件id),type(模板类型) | |
/project/tpl/delete | POST | 删除项目模板 | project(项目id),name(模板文件名) | |
/page | GET | 获取页面数据 | project(项目id),page(页面id) | 页面数据 |
/page/list | GET | 获取页面列表 | project(项目id) | 页面列表 |
/page/upsert | POST | 新增/更新页面 | page(页面id,无则新增),project(项目id),name(页面名),url(页面url),data(页面组件数据),sync(页面数据,用于恢复页面) | |
/component/list | GET | 获取组件数据 | project(项目id) | 组件列表 |
/component/upsert | POST | 新增/更新组件 | project(项目id),component(组件id,无则新增),... | |
/category/list | GET | 获取所有分类 | project(项目id) | 分类列表 |
/category/upsert | POST | 新增/更新类目信息 | project(项目id),category(类目id) |
- 在 .nekrc 里加上
projectId
字段,接下来的请求会用到 GET /api/project?project={projectId}
会得到项目的信息- 遍历
result.templates
里的file
和name
,通过GET /api/template?file={file}&name={name}
即可下载到模板文件 - 为了正确填充模板,需要
GET /api/page?project={projectId}&page={pageId}
获取页面的 JSON 数据,meta 放在result.data
字段下的
├── app // 后端
│ ├── controllers // 路由控制逻辑
│ └── models // 数据库
├── config.js // 后端路由及部分配置
├── package.json
├── pm2.json
├── public // 前端
│ ├── images // 静态图片
│ ├── index.js // 前端路由
│ ├── modules // 页面模块
│ └── sass // 样式
├── README.md
├── server.js // 后端入口
├── webpack.config.js
└── webpack.production.config.js
node >= 7.0(如果是从旧版本升级到 7,请删除 node_modules 后重新
npm i
)
npm run dev
npm i
(只有修改了包才需执行)npm run build
(如果仅仅修改 projects 下文件则无需执行)npm -g pm2
(如果部署机已经装,就不需要执行)pm2 restart nek