mp_soa-cli
v1.0.2
Published
这是用来构建mm_soa服务端用的脚手架工具,用于快速搭建自动化智能网站
Downloads
2
Readme
mm_soa-cli
这是用来构建mm_soa服务端用的脚手架,用于快速搭建自动化智能网站
一、起步
1.安装mp_soa-cli
npm i mp_soa-cli -g
2.创建mm-soa项目
mp init <project_name>
根据指示填写相关信息,最后确认创建信息如下:
{
name: 'test',
author: 'diggar',
version: '0.1.0',
web_title: '网站标题',
web_description: '网站描述',
web_language: 'zh',
cache: 'redis',
timed_task: true,
db: 'mysql',
host: '127.0.0.1',
port: 3306,
database: 'mm',
user: 'root',
password: 'asd123'
}
创建时,会出现
\ Project creating...
这是正在安装依赖,mm_expand和mm_soa,如果觉得安装太久,也可以Ctrl+C结束,然后手动安装npm i mm_expand mm_soa
4.启动项目
创建完成后提示如下:
Please install the tool for the first development:
npm i cross-env nodemon -g
To get started:
npm run dev
To start for production:
npm run start
npm i cross-env nodemon -g
是用于安装我们开发时所需要的模块npm run dev
是启动开发模式npm run start
是启动生产模式
5.创建应用
mp create-app <app_name>
创建应用命令,其实就是在项目 根目录/app 目录下创建一个文件夹,并在该文件夹下面创建空的app.json配置文件,然后mm-soa就会为自动创建好app.json配置信息,并生成了一个index.js的脚本文件。
配置信息是一个模板,部分的信息还需要我们手动修改
5.创建插件
mp create-plugin <plugin_name> <app_name>
创建插件命令,其实就是在项目 根目录/app/app_name 目录下创建一个plugin文件夹,然后在 根目录/app/app_name/plugin 文件夹下再创建名为plugin_name的文件夹,并在该文件夹下面创建空的plugin.json配置文件,然后mm-soa就会为自动创建好plugin.json配置信息,并生成了一个index.js的脚本文件。
和创建应用一样,配置信息是一个模板, 部分的信息还需要我们手动修改
5.创建API接口
mp create-api <api_name> <app_name>
创建API命令,会帮助我们在 /app/app_name/plugin/main/event_app_name目录下创建一个名为api_name的文件夹,并且在该文件夹下创建了一个空的api.json的文件。然后mm-soa就会为自动创建好api.json配置信息,并生成了一个index.js的脚本文件以及param.json、sql.json文件。
同样的,配置信息是一个模板, 部分的信息还需要我们手动修改
param.json 配置文件是用来校验请求API时的参数 sql.json 配置文件则时辅助使用mysql数据库的SQL模板
6.根据数据库自动创建API及文档
当我们创建项目时,会携带有一个dev的app,这是一个辅助开发的用用。
当我们启动程序后,可以通过 域名/api/dev/db?method=update_config&table=demo_*
来动态创建API,
需要注意的是
table=demo_*
,demo_*是表名,代表了以demo_开头的所有表,同时表的第一个前缀demo会被当作是应用
创建完成后会在指定的应用下创建server的插件(例如:/app/demo/plugin/server),同时里面创建了api_demo_client、api_demo_manage、db文件夹,并且里面包含了许多文件
另外,如果已经创建有了API,但数据表发生了减少字段或增加字段行为,最好删除相关的API
备注:动态创建会节省很多开发时间,但是对于数据表的设计也有严格要求,要求如下:
- 数据表采用_命名方式,例如:user_account、user_group、user_admin
- 数据表必须包含主键,主键最好用后缀名+_id命名,例如:user_group的主键group_id、user_admin的主键user_id