diff --git a/.umirc.ts b/.umirc.ts index 5471ee3..4e846c5 100644 --- a/.umirc.ts +++ b/.umirc.ts @@ -1,7 +1,7 @@ import { defineConfig } from 'dumi'; export default defineConfig({ - title: 'Malagu', + title: 'Cell', mode: 'site', // hash: true, // more config: https://d.umijs.org/config @@ -9,7 +9,7 @@ export default defineConfig({ // locales: [['zh-CN', '中文'], ['en-US', 'English'] ], locales: [['zh-CN', '中文']], - logo: 'https://cellbang-lib.oss-cn-hangzhou.aliyuncs.com/Malagu%20Logo%20Green.svg', + logo: 'https://cellbang-lib.oss-cn-hangzhou.aliyuncs.com/Cell%20Logo%20Green.svg', menus: { // 需要自定义侧边菜单的路径,没有配置的路径还是会使用自动生成的配置 @@ -98,7 +98,7 @@ export default defineConfig({ ] }, { - title: 'Malagu Blog 项目', + title: 'Cell Blog 项目', children: [ 'learn/blog-intro.md', 'learn/blog-create-project.md', @@ -139,23 +139,23 @@ export default defineConfig({ // path: '链接是可选的', // 可通过如下形式嵌套二级导航菜单,目前暂不支持更多层级嵌套: children: [ - { title: '学习 Malagu', path: '/learn' }, + { title: '学习 Cell', path: '/learn' }, { title: 'Vite 适配', path: '/learn/vite-intro'}, { title: 'Package 文档', path: '/package' }, - { title: '参与贡献', path: '/malagu' }, + { title: '参与贡献', path: '/cell' }, ], }, // { // title: '更多文档', - // path: 'https://www.yuque.com/cellbang/malagu', + // path: 'https://www.yuque.com/cellbang/cell', // }, { title: 'API 参考', - path: 'https://cellbang.github.io/malagu/docs/next/', + path: 'https://cellbang.github.io/cell/docs/next/', }, { title: 'GitHub', - path: 'https://github.com/cellbang/malagu', + path: 'https://github.com/cellbang/cell', }, ], diff --git a/README.md b/README.md index 3548fb8..5f63746 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# Malagu Framework 文档 +# Cell Framework 文档 -本项目为 Malagu Framework 文档项目,欢迎大家一起共建。 +本项目为 Cell Framework 文档项目,欢迎大家一起共建。 ## 交流群 diff --git a/docs/cloud/AWS Lambda.md b/docs/cloud/AWS Lambda.md index 3cc9637..20a85a8 100644 --- a/docs/cloud/AWS Lambda.md +++ b/docs/cloud/AWS Lambda.md @@ -6,7 +6,7 @@ toc: menu # AWS Lambda -我们可以使用 `@malagu/lambda-adapter` 和 `@malagu/lambda-plugin` 组件把应用部署到 aws lambda 平台,其中 `@malagu/lambda-adapter` 适配平台运行时接口,比如函数入口;`@malagu/lambda-plugin` 负责适配平台部署接口。基于约定大于配置原则,零配置,开箱即用。 +我们可以使用 `@celljs/lambda-adapter` 和 `@celljs/lambda-plugin` 组件把应用部署到 aws lambda 平台,其中 `@celljs/lambda-adapter` 适配平台运行时接口,比如函数入口;`@celljs/lambda-plugin` 负责适配平台部署接口。基于约定大于配置原则,零配置,开箱即用。 ## 云资源 @@ -21,7 +21,7 @@ toc: menu ## 环境隔离 -在 Malagu 框架中,提供了一个顶级配置属性 `stage` 表示环境。而在 `@malagu/lambda-plugin` 组件约定的部署规则中,使用 `mode` 属性映射 `stage` 属性。默认提供了三套环境:测试、预发和生产。表达式规则如下: +在 Cell 框架中,提供了一个顶级配置属性 `stage` 表示环境。而在 `@celljs/lambda-plugin` 组件约定的部署规则中,使用 `mode` 属性映射 `stage` 属性。默认提供了三套环境:测试、预发和生产。表达式规则如下: ```yaml stage: "${'test' in mode ? 'test' : 'pre' in mode ? 'pre' : 'prod' in mode ? 'prod' : cliContext.prod ? 'prod' : 'test'}" # test, pre, prod ``` @@ -36,13 +36,13 @@ stage: "${'test' in mode ? 'test' : 'pre' in mode ? 'pre' : 'prod' in mode ? 'pr 通过指定特殊的 `mode` 表示不同的部署环境: ```bash # 部署到测试环境 -malagu deploy -m test # 或者 malagu deploy +cell deploy -m test # 或者 cell deploy # 部署到预发环境,我们也可以直接跳过预发环境的部署,直接部署到生产环境 -malagu deploy -m pre +cell deploy -m pre # 部署到生成环境 -malagu deploy -m prod +cell deploy -m prod ``` @@ -54,14 +54,14 @@ malagu deploy -m prod `stage` 属性值与函数别名关联(以下是默认规则,无需配置): ```yaml -malagu: +cell: cloud: alias: name: ${stage} ``` API 网关的 `stage` 关联(以下是默认规则,无需配置): ```yaml -malagu: +cell: cloud: apiGateway: stage: @@ -90,11 +90,11 @@ mode: #### 默认规则 -默认规则定义在 `@malagu/lambda-plugin` 组件的 `malagu-*.yml` 配置文件中。 +默认规则定义在 `@celljs/lambda-plugin` 组件的 `cell-*.yml` 配置文件中。 #### 自定义部署模式 ```yaml -malagu: +cell: mode: - api-gateway # 默认值是 api-gateway,目前支持 api-gateway、timer ``` @@ -104,7 +104,7 @@ malagu: #### 自定义函数名 ```yaml -malagu: +cell: cloud: function: name: xxxx # 默认值是 ${pkg.name} diff --git "a/docs/cloud/Vercel \345\271\263\345\217\260.md" "b/docs/cloud/Vercel \345\271\263\345\217\260.md" index 8c94b19..73c2d10 100644 --- "a/docs/cloud/Vercel \345\271\263\345\217\260.md" +++ "b/docs/cloud/Vercel \345\271\263\345\217\260.md" @@ -6,7 +6,7 @@ toc: menu # Vercel 平台 -[Vercel](https://vercel.com/) 是国外一个用户体验很棒的 Serverless 平台。我们可以使用 `@malagu/vercel-adapter` 组件把应用部署到 Vercel 平台。基于约定大于配置原则,零配置,开箱即用。适配器组件基于 Vercel CLI 工具实现部署,所有部署的体验与该工具是一样的,甚至部署规则也是简单适配该工具的配置,只是采用了框架的配置文件方式。 +[Vercel](https://vercel.com/) 是国外一个用户体验很棒的 Serverless 平台。我们可以使用 `@celljs/vercel-adapter` 组件把应用部署到 Vercel 平台。基于约定大于配置原则,零配置,开箱即用。适配器组件基于 Vercel CLI 工具实现部署,所有部署的体验与该工具是一样的,甚至部署规则也是简单适配该工具的配置,只是采用了框架的配置文件方式。 #### 云资源 @@ -18,15 +18,15 @@ toc: menu #### 部署规则 -我们可以通过同名覆盖自定义部署规则。默认规则定义在 `@malagu/vercel-adapter` 组件的 `malagu-remote.yml` 配置文件中。部署规则的配置项与 Vercel CLI 工具的配置文件 [`vercel.json`](https://vercel.com/docs/configuration) 是相同的。默认配置如下: +我们可以通过同名覆盖自定义部署规则。默认规则定义在 `@celljs/vercel-adapter` 组件的 `cell-remote.yml` 配置文件中。部署规则的配置项与 Vercel CLI 工具的配置文件 [`vercel.json`](https://vercel.com/docs/configuration) 是相同的。默认配置如下: ```yaml -malagu: +cell: vercel: config: version: 2 frontend: - malagu: + cell: vercel: config: builds: @@ -37,7 +37,7 @@ frontend: dest: frontend/$1 backend: - malagu: + cell: vercel: config: builds: diff --git "a/docs/cloud/\344\272\221\345\271\263\345\217\260\351\200\202\351\205\215.md" "b/docs/cloud/\344\272\221\345\271\263\345\217\260\351\200\202\351\205\215.md" index e54c430..3fa3f2d 100644 --- "a/docs/cloud/\344\272\221\345\271\263\345\217\260\351\200\202\351\205\215.md" +++ "b/docs/cloud/\344\272\221\345\271\263\345\217\260\351\200\202\351\205\215.md" @@ -6,29 +6,29 @@ toc: menu # 云平台适配 -Malagu 框架是平台无关的,可以部署在各种 Serverless 平台、传统服务器之上。Malagu 框架抽象了一套统一的后端接口,不同平台只需要适配统一的后端接口即可。一般一个平台对应着一个适配器组件(可以多个),使用不同平台的适配组件,适配并部署到不同的平台。**适配器组件屏蔽掉平台底层细节,让平台的学习成本几乎为零**。目前框架已经适配的平台: +Cell 框架是平台无关的,可以部署在各种 Serverless 平台、传统服务器之上。Cell 框架抽象了一套统一的后端接口,不同平台只需要适配统一的后端接口即可。一般一个平台对应着一个适配器组件(可以多个),使用不同平台的适配组件,适配并部署到不同的平台。**适配器组件屏蔽掉平台底层细节,让平台的学习成本几乎为零**。目前框架已经适配的平台: -- `express-adapter` [传统服务器](https://malagu.cellbang.com/cloud/%E4%BC%A0%E7%BB%9F%E6%9C%8D%E5%8A%A1%E5%99%A8) -- `scf-adapter` 和 `scf-plugin` [腾讯云函数](https://malagu.cellbang.com/cloud/%E8%85%BE%E8%AE%AF%E4%BA%91%E4%BA%91%E5%87%BD%E6%95%B0) -- `fc-adapter` 和 `fc-plugin` [阿里云函数计算](https://malagu.cellbang.com/cloud/%E9%98%BF%E9%87%8C%E4%BA%91%E5%87%BD%E6%95%B0%E8%AE%A1%E7%AE%97) -- `lambda-adapter` 和 `lambda-plugin` [AWS Lambda](https://malagu.cellbang.com/cloud/aws%20lambda) -- `vercel-adapter` [Vercel 平台](https://malagu.cellbang.com/cloud/vercel%20%E5%B9%B3%E5%8F%B0) +- `express-adapter` [传统服务器](https://cell.cellbang.com/cloud/%E4%BC%A0%E7%BB%9F%E6%9C%8D%E5%8A%A1%E5%99%A8) +- `scf-adapter` 和 `scf-plugin` [腾讯云函数](https://cell.cellbang.com/cloud/%E8%85%BE%E8%AE%AF%E4%BA%91%E4%BA%91%E5%87%BD%E6%95%B0) +- `fc-adapter` 和 `fc-plugin` [阿里云函数计算](https://cell.cellbang.com/cloud/%E9%98%BF%E9%87%8C%E4%BA%91%E5%87%BD%E6%95%B0%E8%AE%A1%E7%AE%97) +- `lambda-adapter` 和 `lambda-plugin` [AWS Lambda](https://cell.cellbang.com/cloud/aws%20lambda) +- `vercel-adapter` [Vercel 平台](https://cell.cellbang.com/cloud/vercel%20%E5%B9%B3%E5%8F%B0) ## 使用方法 -首先,确定我们需要运行和部署的平台,选择合适的适配器组件添加到项目依赖中。比如 `@malagu/express` 、 `@malagu/fc-adapter` 、`@malagu/fc-plugin` 、 `@malagu/scf-adapter` 、`@malagu/scf-plugin` 、`@malagu/lambda-adapter` 、`@malagu/lambda-plugin`、 `@malagu/vercel-adapter` 。Malagu 组件是一个普通的 npm 包,可以通过以下命令安装: +首先,确定我们需要运行和部署的平台,选择合适的适配器组件添加到项目依赖中。比如 `@celljs/express` 、 `@celljs/fc-adapter` 、`@celljs/fc-plugin` 、 `@celljs/scf-adapter` 、`@celljs/scf-plugin` 、`@celljs/lambda-adapter` 、`@celljs/lambda-plugin`、 `@celljs/vercel-adapter` 。Cell 组件是一个普通的 npm 包,可以通过以下命令安装: ```bash # 安装腾讯云函数计算适配器组件 -yarn add @malagu/scf-adapter -yarn add -D @malagu/scf-plugin +yarn add @celljs/scf-adapter +yarn add -D @celljs/scf-plugin # 或者 -npm i @malagu/scf-adapter -npm i -D @malagu/scf-plugin +npm i @celljs/scf-adapter +npm i -D @celljs/scf-plugin ``` -安装好后,默认不需要任何配置,我们也不必知道该组件与函数计算的底层细节。当我们使用 `malagu deploy` 命令进行部署的时候,该组件会按照约定的部署规则将我们的代码部署到对应的平台。 +安装好后,默认不需要任何配置,我们也不必知道该组件与函数计算的底层细节。当我们使用 `cell deploy` 命令进行部署的时候,该组件会按照约定的部署规则将我们的代码部署到对应的平台。 对于腾讯云函数计算,约定的部署规则是创建的服务名为项目名称,函数名为项目的名称,别名为 test 等等。约定的部署规则可以通过组件之间的属性覆盖自定义。 @@ -40,14 +40,14 @@ npm i -D @malagu/scf-plugin 在框架的 2.0 版本中,我们手动安装适配平台的包,我们只需通过模式属性指定我们需要部署到什么平台,框架会自动全局安装相关的包,并且这些包全局共享,其他项目可以复用,避免重复下载。我们也无需担心全局共享的这些包版本升级的问题,框架会在正确的时机自动升级,并且不同版本的包可以共存,框架保证使用的包版本是正确的。 ```bash -malagu deploy -m scf # 部署到腾讯云函数 -malagu deploy -m fc # 部署到阿里云函数计算 -malagu deploy -m lambda # 部署到亚马逊云 Lambda -malagu deploy -m vercel # 部署到 Vercel 平台 -malagu build -m server # 构建部署到传统服务器产物 -malagu config -m scf # 配置腾讯云账号信息 -malagu config -m lambda # 配置亚马逊云账号信息 -malagu config -m fc # 配置阿里云账号信息 +cell deploy -m scf # 部署到腾讯云函数 +cell deploy -m fc # 部署到阿里云函数计算 +cell deploy -m lambda # 部署到亚马逊云 Lambda +cell deploy -m vercel # 部署到 Vercel 平台 +cell build -m server # 构建部署到传统服务器产物 +cell config -m scf # 配置腾讯云账号信息 +cell config -m lambda # 配置亚马逊云账号信息 +cell config -m fc # 配置阿里云账号信息 ``` @@ -73,4 +73,4 @@ malagu config -m fc # 配置阿里云账号信息 ## 平台部署插件 -腾讯云函数的部署插件是 `@malagu/scf-plugin`;阿里云函数计算的部署插件是 `@malagu/fc-plugin`;AWS Lambda 的部署插件是 `@malagu/lambda-plugin`。部署插件主要应用部署相关逻辑。它不关心平台函数入口细节差异,它只负责将构建的代码部署到相应的平台。 +腾讯云函数的部署插件是 `@celljs/scf-plugin`;阿里云函数计算的部署插件是 `@celljs/fc-plugin`;AWS Lambda 的部署插件是 `@celljs/lambda-plugin`。部署插件主要应用部署相关逻辑。它不关心平台函数入口细节差异,它只负责将构建的代码部署到相应的平台。 diff --git "a/docs/cloud/\344\274\240\347\273\237\346\234\215\345\212\241\345\231\250.md" "b/docs/cloud/\344\274\240\347\273\237\346\234\215\345\212\241\345\231\250.md" index e657b64..7dfa09a 100644 --- "a/docs/cloud/\344\274\240\347\273\237\346\234\215\345\212\241\345\231\250.md" +++ "b/docs/cloud/\344\274\240\347\273\237\346\234\215\345\212\241\345\231\250.md" @@ -6,20 +6,20 @@ toc: menu # 传统服务器 -如果我们想把应用部署在传统服务器上,我们可以选择 `@malagu/express-adapter` 组件。构建输出产物在 `.malagu/dist` 目录下,其中 `backend` 为后端构建目标输出目录; `frontend` 为前端构建目标输出目录。运行后端应用直接使用 `node` 命令即可: +如果我们想把应用部署在传统服务器上,我们可以选择 `@celljs/express-adapter` 组件。构建输出产物在 `.cell/dist` 目录下,其中 `backend` 为后端构建目标输出目录; `frontend` 为前端构建目标输出目录。运行后端应用直接使用 `node` 命令即可: ```bash -node .malagu/dist/backend/index.js +node .cell/dist/backend/index.js ``` 如果是前后端一体化应用,需要在切到 `backend` 的上级目录 `dist`: ```bash -cd .malagu/dist +cd .cell/dist node backend/index.js ``` 因为静态文件的根目录默认是: ```yaml -malagu: +cell: serve-static: root: frontend # 相对执行目录计算 ``` diff --git "a/docs/cloud/\345\271\263\345\217\260\350\264\246\345\217\267\351\205\215\347\275\256.md" "b/docs/cloud/\345\271\263\345\217\260\350\264\246\345\217\267\351\205\215\347\275\256.md" index d3ff505..81fd5a2 100644 --- "a/docs/cloud/\345\271\263\345\217\260\350\264\246\345\217\267\351\205\215\347\275\256.md" +++ "b/docs/cloud/\345\271\263\345\217\260\350\264\246\345\217\267\351\205\215\347\275\256.md" @@ -6,21 +6,21 @@ toc: menu ## 平台账号配置方式 -当我们需要把 Malagu 应用部署到不同的云厂商的时候,我们需要通过一些方式提供 AKSK 给框架,框架使用 AKSK 部署到对应的云计算平台。不同的云厂商,会有不同的适配器,但是在 AKSK 的配置上会尽可能保持统一。框架提供如下方式配置 AKSK:全局配置文件 < 项目根下的 < `.env` 文件 < 环境变量 < 组件属性配置文件。框架提供了一个 `malagu config` 命令方便我们快速配置全局配置文件。 +当我们需要把 Cell 应用部署到不同的云厂商的时候,我们需要通过一些方式提供 AKSK 给框架,框架使用 AKSK 部署到对应的云计算平台。不同的云厂商,会有不同的适配器,但是在 AKSK 的配置上会尽可能保持统一。框架提供如下方式配置 AKSK:全局配置文件 < 项目根下的 < `.env` 文件 < 环境变量 < 组件属性配置文件。框架提供了一个 `cell config` 命令方便我们快速配置全局配置文件。 ### 全局云账号配置文件 -全局云账号配置文件,一般不需要我们手动创建。当我们在执行部署命令的时候,框架发现当前环境下没有配置 AKSK,命令行将主动提示我们需要输入 AKSK 相关的信息,输入完后,自动保存到全局配置文件中。全局配置文件位置为 `~/.malagu` ,不同云厂商分别对于着不同的目录。如下所示: +全局云账号配置文件,一般不需要我们手动创建。当我们在执行部署命令的时候,框架发现当前环境下没有配置 AKSK,命令行将主动提示我们需要输入 AKSK 相关的信息,输入完后,自动保存到全局配置文件中。全局配置文件位置为 `~/.cell` ,不同云厂商分别对于着不同的目录。如下所示: -- 阿里云: `~/.malagu/alibaba/profile.yml`  -- 腾讯云: `~/.malagu/tencent/profile.yml` -- AWS: `~/.malagu/aws/profile.yml` +- 阿里云: `~/.cell/alibaba/profile.yml`  +- 腾讯云: `~/.cell/tencent/profile.yml` +- AWS: `~/.cell/aws/profile.yml` -绝大部分情况下,我们无需手动去配置全局配置文件,Malagu 的命令行工具提供了一个命令 `malagu config` 方便我们配置, `malagu config` 会根据项目的依赖情况,自动选择合适的云平台配置文件进行配置。例如,项目中依赖了 `@malagu/fc-plugin` 模块,则自动配置为阿里云函数计算平台的账号信息。 +绝大部分情况下,我们无需手动去配置全局配置文件,Cell 的命令行工具提供了一个命令 `cell config` 方便我们配置, `cell config` 会根据项目的依赖情况,自动选择合适的云平台配置文件进行配置。例如,项目中依赖了 `@celljs/fc-plugin` 模块,则自动配置为阿里云函数计算平台的账号信息。 ### 项目下的 `.env` 文件 @@ -50,9 +50,9 @@ MALAGU_TOKEN=xxxxx ### 组件属性 -Malagu 框架的组件属性是通过 `malagu-[mode].yml` 配置,配置方式如下: +Cell 框架的组件属性是通过 `cell-[mode].yml` 配置,配置方式如下: ```yaml -malagu: +cell: cloud: credentials: accessKeyId: xxxxxx @@ -77,7 +77,7 @@ malagu: ### 阿里云部署 -当首次运行 malagu deploy 时需要配置**Account Id、Access Key Id、Access Key Secret**, +当首次运行 cell deploy 时需要配置**Account Id、Access Key Id、Access Key Secret**, ** #### 如何获取AccessKey ID、AccessKey Secret、**Account Id?** diff --git "a/docs/cloud/\350\205\276\350\256\257\344\272\221\344\272\221\345\207\275\346\225\260.md" "b/docs/cloud/\350\205\276\350\256\257\344\272\221\344\272\221\345\207\275\346\225\260.md" index 1f9a9b5..645fe51 100644 --- "a/docs/cloud/\350\205\276\350\256\257\344\272\221\344\272\221\345\207\275\346\225\260.md" +++ "b/docs/cloud/\350\205\276\350\256\257\344\272\221\344\272\221\345\207\275\346\225\260.md" @@ -6,7 +6,7 @@ toc: menu # 腾讯云函数 -我们可以使用 `@malagu/scf-adapter` 和 `@malagu/scf-plugin` 组件把应用部署到腾讯云函数计算平台,其中 `@malagu/scf-adapter` 适配平台运行时接口,比如函数入口;`@malagu/scf-plugin` 负责适配平台部署接口。基于约定大于配置原则,零配置,开箱即用。 +我们可以使用 `@celljs/scf-adapter` 和 `@celljs/scf-plugin` 组件把应用部署到腾讯云函数计算平台,其中 `@celljs/scf-adapter` 适配平台运行时接口,比如函数入口;`@celljs/scf-plugin` 负责适配平台部署接口。基于约定大于配置原则,零配置,开箱即用。 ## 云资源 @@ -21,7 +21,7 @@ toc: menu ## 环境隔离 -在 Malagu 框架中,提供了一个顶级配置属性 `stage` 表示环境。而在 `@malagu/scf-plugin` 组件约定的部署规则中,使用 `mode` 属性映射 `stage` 属性。默认提供了三套环境:测试、预发和生产。表达式规则如下: +在 Cell 框架中,提供了一个顶级配置属性 `stage` 表示环境。而在 `@celljs/scf-plugin` 组件约定的部署规则中,使用 `mode` 属性映射 `stage` 属性。默认提供了三套环境:测试、预发和生产。表达式规则如下: ```yaml stage: "${'test' in mode ? 'test' : 'pre' in mode ? 'pre' : 'prod' in mode ? 'prod' : cliContext.prod ? 'prod' : 'test'}" # test, pre, prod ``` @@ -36,13 +36,13 @@ stage: "${'test' in mode ? 'test' : 'pre' in mode ? 'pre' : 'prod' in mode ? 'pr 通过指定特殊的 `mode` 表示不同的部署环境: ```bash # 部署到测试环境 -malagu deploy -m test # 或者 malagu deploy +cell deploy -m test # 或者 cell deploy # 部署到预发环境,我们也可以直接跳过预发环境的部署,直接部署到生产环境 -malagu deploy -m pre +cell deploy -m pre # 部署到生成环境 -malagu deploy -m prod +cell deploy -m prod ``` @@ -54,7 +54,7 @@ malagu deploy -m prod `stage` 属性值与服务别名关联(以下是默认规则,无需配置): ```yaml -malagu: +cell: cloud: alias: name: ${stage} @@ -85,7 +85,7 @@ mode: #### 默认规则 -默认规则定义在 `@malagu/scf-plugiin` 组件的 `malagu-*.yml` 配置文件中。 +默认规则定义在 `@celljs/scf-plugiin` 组件的 `cell-*.yml` 配置文件中。 #### 自定义部署模式 @@ -95,7 +95,7 @@ mode: ``` #### 自定义命名空间 ```yaml -malagu: +cell: cloud: namespace: name: xxxx # 默认值是 default @@ -105,7 +105,7 @@ malagu: #### 自定义函数名 ```yaml -malagu: +cell: cloud: function: name: xxxx # 默认值是 ${pkg.name} @@ -114,7 +114,7 @@ malagu: #### 自定义域名 ```yaml -malagu: +cell: cloud: customDomain: name: xxx # 待绑定的自定义的域名 @@ -132,7 +132,7 @@ malagu: ```yaml -malagu: +cell: cloud: namespace: name: diff --git "a/docs/cloud/\351\230\277\351\207\214\344\272\221\345\207\275\346\225\260\350\256\241\347\256\227.md" "b/docs/cloud/\351\230\277\351\207\214\344\272\221\345\207\275\346\225\260\350\256\241\347\256\227.md" index 13689b8..878494b 100644 --- "a/docs/cloud/\351\230\277\351\207\214\344\272\221\345\207\275\346\225\260\350\256\241\347\256\227.md" +++ "b/docs/cloud/\351\230\277\351\207\214\344\272\221\345\207\275\346\225\260\350\256\241\347\256\227.md" @@ -6,7 +6,7 @@ toc: menu # 阿里云函数计算 -我们可以使用 `@malagu/fc-adapter` 和 `@malagu/fc-plugin` 组件把应用部署到阿里云函数计算平台,其中 `@malagu/fc-adapter` 适配平台运行时接口,比如函数入口;`@malagu/fc-plugin` 负责适配平台部署接口。基于约定大于配置原则,零配置,开箱即用。 +我们可以使用 `@celljs/fc-adapter` 和 `@celljs/fc-plugin` 组件把应用部署到阿里云函数计算平台,其中 `@celljs/fc-adapter` 适配平台运行时接口,比如函数入口;`@celljs/fc-plugin` 负责适配平台部署接口。基于约定大于配置原则,零配置,开箱即用。 ## 云资源 @@ -21,7 +21,7 @@ toc: menu ## 环境隔离 -在 Malagu 框架中,提供了一个顶级配置属性 `stage` 表示环境。而在 `@malagu/fc-plugin` 组件约定的部署规则中,为了简化环境配置,使用 `mode` 属性映射 `stage` 属性。默认提供了三套环境:测试、预发和生产。表达式规则如下: +在 Cell 框架中,提供了一个顶级配置属性 `stage` 表示环境。而在 `@celljs/fc-plugin` 组件约定的部署规则中,为了简化环境配置,使用 `mode` 属性映射 `stage` 属性。默认提供了三套环境:测试、预发和生产。表达式规则如下: ```yaml stage: "${'test' in mode ? 'test' : 'pre' in mode ? 'pre' : 'prod' in mode ? 'prod' : cliContext.prod ? 'prod' : 'test'}" # test, pre, prod ``` @@ -36,13 +36,13 @@ stage: "${'test' in mode ? 'test' : 'pre' in mode ? 'pre' : 'prod' in mode ? 'pr 通过指定特殊的 `mode` 表示不同的部署环境: ```bash # 部署到测试环境 -malagu deploy -m test # 或者 malagu deploy +cell deploy -m test # 或者 cell deploy # 部署到预发环境,我们也可以直接跳过预发环境的部署,直接部署到生产环境 -malagu deploy -m pre +cell deploy -m pre # 部署到生成环境 -malagu deploy -m prod +cell deploy -m prod ``` @@ -53,14 +53,14 @@ malagu deploy -m prod `stage` 属性值与服务别名关联(以下是默认规则,无需配置): ```yaml -malagu: +cell: cloud: alias: name: ${stage} ``` 如果我们使用 API 网关的方式部署函数,与 API 网关的 `stage` 关联(以下是默认规则,无需配置): ```yaml -malagu: +cell: cloud: apiGateway: stage: @@ -94,7 +94,7 @@ mode: **默认规则** -默认规则定义在 `@malagu/fc-adapter` 组件的 `malagu-*.yml` 配置文件中。 +默认规则定义在 `@celljs/fc-adapter` 组件的 `cell-*.yml` 配置文件中。 **自定义部署模式** ```yaml @@ -105,17 +105,17 @@ mode: **自定义服务名** ```yaml -malagu: +cell: cloud: service: - name: xxxx # 默认值是 malagu + name: xxxx # 默认值是 cell ``` 服务的其他属性也是类似的方式配置。 **自定义函数名** ```yaml -malagu: +cell: cloud: function: name: xxxx # 默认值是 ${pkg.name} diff --git "a/docs/concepts/IoC \345\222\214\344\276\235\350\265\226\346\263\250\345\205\245.md" "b/docs/concepts/IoC \345\222\214\344\276\235\350\265\226\346\263\250\345\205\245.md" index 70a1d11..65a9422 100644 --- "a/docs/concepts/IoC \345\222\214\344\276\235\350\265\226\346\263\250\345\205\245.md" +++ "b/docs/concepts/IoC \345\222\214\344\276\235\350\265\226\346\263\250\345\205\245.md" @@ -7,7 +7,7 @@ toc: menu # IoC 和依赖注入 -Malagu 框架中大量使用了 IoC 和依赖注入,在使用 Malagu 框架的时候,不可避免会使用到 IoC 和依赖注入。如果您以前没有接触过 IoC 和依赖注入,本篇文档将带您了解什么是 IoC 和依赖注入?为什么我们需要它。如果您在其他框架中已经接触过,可以跳过。 +Cell 框架中大量使用了 IoC 和依赖注入,在使用 Cell 框架的时候,不可避免会使用到 IoC 和依赖注入。如果您以前没有接触过 IoC 和依赖注入,本篇文档将带您了解什么是 IoC 和依赖注入?为什么我们需要它。如果您在其他框架中已经接触过,可以跳过。 ## 什么是 IoC 和依赖注入 @@ -21,7 +21,7 @@ IoC 是面向对象编程的一种设计原则。所有它与具体框架和 jav ## 为什么我们需要 IoC -对象的创建托管给 IoC,可以解耦,也让 [AOP](https://www.yuque.com/cellbang/malagu/agvzcl) 这样能力得以方便实现。一个普通项目中,绝大部分的 bean 对象都是单例的,创建一个单例对象是简单的,但是创建一堆相互之间有依赖关系的单例对象是很复杂的。这时候 DI(依赖注入)就发挥作用了。DI 不仅仅解决复杂依赖关系自动构建,而且性能上也做了极致的优化。比如 DI 并不会在项目启动的时候创建所有对象实例,而是按照项目实际运行情况,按需创建和注入对象。 +对象的创建托管给 IoC,可以解耦,也让 [AOP](https://www.yuque.com/cellbang/cell/agvzcl) 这样能力得以方便实现。一个普通项目中,绝大部分的 bean 对象都是单例的,创建一个单例对象是简单的,但是创建一堆相互之间有依赖关系的单例对象是很复杂的。这时候 DI(依赖注入)就发挥作用了。DI 不仅仅解决复杂依赖关系自动构建,而且性能上也做了极致的优化。比如 DI 并不会在项目启动的时候创建所有对象实例,而是按照项目实际运行情况,按需创建和注入对象。 面向对象编程有一个很重要的原则是面向抽象编程,或者说依赖倒置。好处是接口是抽象不变的,而接口的实现是多样可变的。因为我们将对象托管给了 IoC,IoC 能让我们无侵入式地替换默认的实现。这对于开发框架和应用模块至关重要,因为只有这样,你的框架或模块才能更加容易实现低耦合,可扩展的能力。 diff --git "a/docs/concepts/Serverless \346\230\257\344\273\200\344\271\210.md" "b/docs/concepts/Serverless \346\230\257\344\273\200\344\271\210.md" index c411d16..c65298c 100644 --- "a/docs/concepts/Serverless \346\230\257\344\273\200\344\271\210.md" +++ "b/docs/concepts/Serverless \346\230\257\344\273\200\344\271\210.md" @@ -40,7 +40,7 @@ Serverless 与 FaaS(函数即服务)通常被视为可以互换的术语, ## 相关链接 -- [Malagu 是基于 TypeScript 的 Serverless First、组件化、平台无关的渐进式应用框架](https://github.com/cellbang/malagu) +- [Cell 是基于 TypeScript 的 Serverless First、组件化、平台无关的渐进式应用框架](https://github.com/cellbang/cell) - [[译]简化云编程:伯克利关于Serverless计算的观点](https://zhuanlan.zhihu.com/p/76180907) - [What is Serverless Architecture? What are its Pros and Cons?](https://hackernoon.com/what-is-serverless-architecture-what-are-its-pros-and-cons-cc4b804022e9) - [Knative](https://cloud.google.com/knative/) diff --git "a/docs/concepts/\347\273\204\344\273\266.md" "b/docs/concepts/\347\273\204\344\273\266.md" index 4b2f260..66fc78c 100644 --- "a/docs/concepts/\347\273\204\344\273\266.md" +++ "b/docs/concepts/\347\273\204\344\273\266.md" @@ -6,32 +6,32 @@ toc: menu # 组件 -**被用于运行时和应用程序的模块化功能。**Malagu 使用模块化设计,将功能作为组件来提供。一个应用随着业务的发展往往会变得越来越复杂和臃肿,不同应用之间又往往存在不同维度的共性。组件化能很好的解决上面的问题: +**被用于运行时和应用程序的模块化功能。**Cell 使用模块化设计,将功能作为组件来提供。一个应用随着业务的发展往往会变得越来越复杂和臃肿,不同应用之间又往往存在不同维度的共性。组件化能很好的解决上面的问题: - 通过将复杂和臃肿的应用横向拆分成一个个业务组件 - 通过把存在共性的不同应用纵向提炼抽象成一个个基础组件 -另外,Malagu 框架本身也是一个特别复杂的项目,Malagu 框架同样可以基于自身的组件机制来实现,让 Malagu 框架更具活力。 +另外,Cell 框架本身也是一个特别复杂的项目,Cell 框架同样可以基于自身的组件机制来实现,让 Cell 框架更具活力。 ​ ## 加载机制 -Malagu 组件本质上就是一个 npm 包,我们只需要在一个普通的 npm 包的 `package.json` 文件的 `keywords` 属性中添加 `malagu-component` 关键字,则被 Malagu 的命令行工具识别为一个 Malagu 组件,Malagu 的命令行工具则按照组件的加载机制进行加载。其中,加载机制主要包含两部分:属性加载和模块加载。使用 Malagu 命令行工具加载,可以极大简化组件的组装,当然,我们也可以手动组装 Malagu 组件,这时候,`package.json` 中的 `keywords` 属性无需做任何配置了。 +Cell 组件本质上就是一个 npm 包,我们只需要在一个普通的 npm 包的 `package.json` 文件的 `keywords` 属性中添加 `cell-component` 关键字,则被 Cell 的命令行工具识别为一个 Cell 组件,Cell 的命令行工具则按照组件的加载机制进行加载。其中,加载机制主要包含两部分:属性加载和模块加载。使用 Cell 命令行工具加载,可以极大简化组件的组装,当然,我们也可以手动组装 Cell 组件,这时候,`package.json` 中的 `keywords` 属性无需做任何配置了。 ​ ## 组件种类 -Malagu 组件设计是一种高度抽象的设计,模型足够的简单。我们可以实现编译时组件,干预 Malagu 应用的运行、构建与部署。也可以开发前端、后端和前后端一体化组件。对于 Malagu 来说,不关心组件类型是什么,Malagu 有一套统一且简单的模型来抽象这一切。 +Cell 组件设计是一种高度抽象的设计,模型足够的简单。我们可以实现编译时组件,干预 Cell 应用的运行、构建与部署。也可以开发前端、后端和前后端一体化组件。对于 Cell 来说,不关心组件类型是什么,Cell 有一套统一且简单的模型来抽象这一切。 ​ ## Core 组件 -框架默认基础组件都在 `@malagu` npm 组织下,例如安装 Core 组件可以通过 `npm install @malagu/core` 安装。Core 组件主要包含如下能力: +框架默认基础组件都在 `@celljs` npm 组织下,例如安装 Core 组件可以通过 `npm install @celljs/core` 安装。Core 组件主要包含如下能力: - 应用生命周期管理 - 依赖注入装饰器 @@ -53,7 +53,7 @@ Malagu 组件设计是一种高度抽象的设计,模型足够的简单。我 ## Web 组件 -Web 组件,即 `@malagu/web` ,依赖 Core 组件。Malagu 并非只是一个 Web 应用开发框架,我们可以使用Malagu 开发非 Web 应用类型,比如命令行工具、桌面应用等等。如果我们开发的是一个 Web 应用,Web 组件一般是必不可少。Web 组件对 Web 应用场景常用能力的抽象与封装。具体包含如下能力: +Web 组件,即 `@celljs/web` ,依赖 Core 组件。Cell 并非只是一个 Web 应用开发框架,我们可以使用Cell 开发非 Web 应用类型,比如命令行工具、桌面应用等等。如果我们开发的是一个 Web 应用,Web 组件一般是必不可少。Web 组件对 Web 应用场景常用能力的抽象与封装。具体包含如下能力: - 中间件(可以方便对接 Express 中间件) - CORS 管理 @@ -67,8 +67,8 @@ Web 组件,即 `@malagu/web` ,依赖 Core 组件。Malagu 并非只是一个 Web 组件只是偏底层的抽象,如果单独使用 Web 组件开发 Web 应用比较低效。所有我们一般情况下会与 Web 组件的子组件 MVC 组件和 RPC 组件结合在一起使用。 -- MVC 组件,即 `@malagu/mvc`,基于 Web 组件的扩展接口,实现了一套装饰器风格的 REST API 定义方式 -- RPC 组件,即 `@malagu/rpc`,基于 Web 组件的扩展接口,实现了一套 RPC 风格 API 定义方式 +- MVC 组件,即 `@celljs/mvc`,基于 Web 组件的扩展接口,实现了一套装饰器风格的 REST API 定义方式 +- RPC 组件,即 `@celljs/rpc`,基于 Web 组件的扩展接口,实现了一套 RPC 风格 API 定义方式 @@ -78,7 +78,7 @@ Web 组件只是偏底层的抽象,如果单独使用 Web 组件开发 Web 应 ## 云组件 -Malagu 是一个 Serverless Frist 应用开发框架,不仅体现在 Serverless 场景中的冷启动优化、数据库连接管理、Session 管理等等方面,还体现在 Malagu 应用对云计算资源的分层抽象与解耦,从而实现平台不锁定。而云组件,即 `@malagu/cloud`,是一个云计算资源的底层抽象以及云计算通用的能力,目的是为了屏蔽不同云厂商之间的差异。具体实现由子组件实现。其中,`@malagu/faas-adapter` 组件就是云组件的一个子组件,`@malagu/faas-adapter` 组件是对 FaaS 能力的抽象,属于第二层抽象,在它下面才是真正的具体实现,如 `@malagu/scf-adapter` 、`@malagu/fc-adapter` 、`@malagu/lambda-adapter` 、`@malagu/vercel-adapter` 和 `@malagu/express-adapter` 。这些具体实现就与具体的云厂商相关了。云组件主要包含一下能力: +Cell 是一个 Serverless Frist 应用开发框架,不仅体现在 Serverless 场景中的冷启动优化、数据库连接管理、Session 管理等等方面,还体现在 Cell 应用对云计算资源的分层抽象与解耦,从而实现平台不锁定。而云组件,即 `@celljs/cloud`,是一个云计算资源的底层抽象以及云计算通用的能力,目的是为了屏蔽不同云厂商之间的差异。具体实现由子组件实现。其中,`@celljs/faas-adapter` 组件就是云组件的一个子组件,`@celljs/faas-adapter` 组件是对 FaaS 能力的抽象,属于第二层抽象,在它下面才是真正的具体实现,如 `@celljs/scf-adapter` 、`@celljs/fc-adapter` 、`@celljs/lambda-adapter` 、`@celljs/vercel-adapter` 和 `@celljs/express-adapter` 。这些具体实现就与具体的云厂商相关了。云组件主要包含一下能力: - 各种云计算资源接口定义 - 云账号接口 @@ -89,5 +89,5 @@ Malagu 是一个 Serverless Frist 应用开发框架,不仅体现在 Serverles -**更多基础组件介绍,请移步于**[**基础组件**](https://malagu.cellbang.com/guide/%E5%9F%BA%E7%A1%80%E7%BB%84%E4%BB%B6)**。** +**更多基础组件介绍,请移步于**[**基础组件**](https://cell.cellbang.com/guide/%E5%9F%BA%E7%A1%80%E7%BB%84%E4%BB%B6)**。** diff --git "a/docs/concepts/\350\277\220\350\241\214\346\227\266.md" "b/docs/concepts/\350\277\220\350\241\214\346\227\266.md" index 0fb1da7..951680a 100644 --- "a/docs/concepts/\350\277\220\350\241\214\346\227\266.md" +++ "b/docs/concepts/\350\277\220\350\241\214\346\227\266.md" @@ -6,23 +6,23 @@ toc: menu # 运行时 -运行时是一个或或多个组件组成,以根组件形式存在,也就是 Malagu 应用。当我们创建一个 Malagu 应用的时候,其实就是创建了一种运行时。你可能已经发现了,当你在一个 Malagu 应用的根目录下执行 `malagu -h` 往往会多出来一个 `malagu config` 命令,其实,该命令是由 `@malagu/faas-adapter` 组件提供。默认情况会以当前命令行工作目录作为运行时目录。所有命令行工具才能正确加载当前应用中的组件,并动态扩展命令 `malagu config` 。 +运行时是一个或或多个组件组成,以根组件形式存在,也就是 Cell 应用。当我们创建一个 Cell 应用的时候,其实就是创建了一种运行时。你可能已经发现了,当你在一个 Cell 应用的根目录下执行 `cell -h` 往往会多出来一个 `cell config` 命令,其实,该命令是由 `@celljs/faas-adapter` 组件提供。默认情况会以当前命令行工作目录作为运行时目录。所有命令行工具才能正确加载当前应用中的组件,并动态扩展命令 `cell config` 。 ​ -最开始,Malagu 不支持指定或者管理全局运行时,为了能让 Malagu 组件进一步提升一个维度的复用能力。Malagu 支持了管理全局运行时。也就是说,我们可以把多个组件的能力组合起来,以运行时的方式安装为全局运行时。从而实现开发语言无关。你可以定义一种运行时,开发者在使用时,可以完全不用关系 Malagu 组件的实现细节。 +最开始,Cell 不支持指定或者管理全局运行时,为了能让 Cell 组件进一步提升一个维度的复用能力。Cell 支持了管理全局运行时。也就是说,我们可以把多个组件的能力组合起来,以运行时的方式安装为全局运行时。从而实现开发语言无关。你可以定义一种运行时,开发者在使用时,可以完全不用关系 Cell 组件的实现细节。 ​ -我们可以针对一些特定场景,提供特定的运行时,给用户提供极致的开发、部署体验。目前,Malagu 提供了一个内置运行时 `serve-static` ,通过它,我们可以一键运行、部署一个静态网站到云计算平台。操作步骤如下: +我们可以针对一些特定场景,提供特定的运行时,给用户提供极致的开发、部署体验。目前,Cell 提供了一个内置运行时 `serve-static` ,通过它,我们可以一键运行、部署一个静态网站到云计算平台。操作步骤如下: -1. 安装运行时:`malagu runtime install serve-static` -1. 使用运行时:`malagu runtime use serve-static` +1. 安装运行时:`cell runtime install serve-static` +1. 使用运行时:`cell runtime use serve-static` 1. 进入静态网站文件根目录 -1. 本地运行静态网站:`malagu serve` -1. 一键部署(第一次部署需要配置云账号 AKSK):`malagu deploy` +1. 本地运行静态网站:`cell serve` +1. 一键部署(第一次部署需要配置云账号 AKSK):`cell deploy` ​ -Malagu 运行时管理更多操作如下: +Cell 运行时管理更多操作如下: ​ ```bash @@ -34,14 +34,14 @@ Malagu 运行时管理更多操作如下: \ \_\\ \_\ \__/.\_\/\____\ \__/.\_\ \____ \ \____/ \/_/ \/_/\/__/\/_/\/____/\/__/\/_/\/___L\ \/___/ /\____/ - @malagu/cli@1.30.0 \_/__/ + @celljs/cli@1.30.0 \_/__/ ╭──────────────────────────────────────────────────╮ │ Serverless Frist Development Framework │ │ Runtime │ ╰──────────────────────────────────────────────────╯ -Usage: malagu runtime [options] [command] [command] [command] +Usage: cell runtime [options] [command] [command] [command] management runtime diff --git "a/docs/concepts/\351\205\215\347\275\256.md" "b/docs/concepts/\351\205\215\347\275\256.md" index a97b34a..fd1d570 100644 --- "a/docs/concepts/\351\205\215\347\275\256.md" +++ "b/docs/concepts/\351\205\215\347\275\256.md" @@ -6,42 +6,42 @@ toc: menu # 配置 -在 Malagu 的世界里:“一切皆组件”。Malagu 应用也是一个组件,是根组件。根组件依赖一个或者多个基础组件。组件机制将应用与组件统一:一个或多个组件组合成更复杂的高阶组件,如果这个高级组件不再被其他组件复用,则该组件本质上就是一个应用。 +在 Cell 的世界里:“一切皆组件”。Cell 应用也是一个组件,是根组件。根组件依赖一个或者多个基础组件。组件机制将应用与组件统一:一个或多个组件组合成更复杂的高阶组件,如果这个高级组件不再被其他组件复用,则该组件本质上就是一个应用。 ​ 组件本质上是 npm 包,在 npm 包之上多出了属性和模块概念。其中,属性就是扩展组件的一种常用的扩展机制。属性配置是一种无需写任何代码就能实现扩展的方式。 ​ -在 Malagu 组件中,我们只需要在组件根目录下添加 `malagu.yml` 组件属性配置文件即可,默认该文件都会被加载,也可以通过模式属性配置文件:`malagu-[mode].yml` ,只有在特定模式被激活的时候,该配置文件才会被加载。 +在 Cell 组件中,我们只需要在组件根目录下添加 `cell.yml` 组件属性配置文件即可,默认该文件都会被加载,也可以通过模式属性配置文件:`cell-[mode].yml` ,只有在特定模式被激活的时候,该配置文件才会被加载。 ​ -Malagu 命令行工具负责加载组件的属性配置文件,安装组件依赖的拓扑排序进行加载与合并,同一种类别的属性,子组件的属性配置文件优先级高于父组件。所有,子组件除了实现自身逻辑意外,还可以通过属性配置覆盖父组件的默认属性值,从而定制父组件行为逻辑,增强组件的复用能力。 +Cell 命令行工具负责加载组件的属性配置文件,安装组件依赖的拓扑排序进行加载与合并,同一种类别的属性,子组件的属性配置文件优先级高于父组件。所有,子组件除了实现自身逻辑意外,还可以通过属性配置覆盖父组件的默认属性值,从而定制父组件行为逻辑,增强组件的复用能力。 ​ 组件属性配置示例如下: ​ ```yaml -malagu: +cell: session: autoCommit: true maxAge: 86400000 - sessionIdKey: malagu:sessionId - sessionKey: malagu:session + sessionIdKey: cell:sessionId + sessionKey: cell:session ``` 定义好的属性可以很方便在代码中使用,使用方式如下: ​ ```typescript -import { Component, Value } from '@malagu/core'; +import { Component, Value } from '@celljs/core'; @Component() export class A { - @Value('malagu.session.maxAge') + @Value('cell.session.maxAge') protected maxAge: number; } ``` -**更多有关 Malagu 组件属性介绍,请移步于**[**组件属性**](https://malagu.cellbang.com/guide/%E7%BB%84%E4%BB%B6%E8%AE%BE%E8%AE%A1#%E7%BB%84%E4%BB%B6%E5%B1%9E%E6%80%A7)**。** +**更多有关 Cell 组件属性介绍,请移步于**[**组件属性**](https://cell.cellbang.com/guide/%E7%BB%84%E4%BB%B6%E8%AE%BE%E8%AE%A1#%E7%BB%84%E4%BB%B6%E5%B1%9E%E6%80%A7)**。** diff --git a/docs/dev/react.md b/docs/dev/react.md index 1d9cf91..0a86e51 100644 --- a/docs/dev/react.md +++ b/docs/dev/react.md @@ -6,7 +6,7 @@ toc: menu # React 开发 -Malagu 框架是前端框架不绑定的,我们可以使用任意流行的前端框架。目前,框架对 React 框架集成度最好,提供了一个相对完整的解决方案。国际化、主框架布局、Widget 实现、路由定义、主题和多款前端 UI 框架等等开箱即用的能力。React 开发相关组件依赖情况如下: +Cell 框架是前端框架不绑定的,我们可以使用任意流行的前端框架。目前,框架对 React 框架集成度最好,提供了一个相对完整的解决方案。国际化、主框架布局、Widget 实现、路由定义、主题和多款前端 UI 框架等等开箱即用的能力。React 开发相关组件依赖情况如下: @@ -15,18 +15,18 @@ Malagu 框架是前端框架不绑定的,我们可以使用任意流行的前 ## 如何开始 -Malagu 命令行工具提供了一些列的应用开发模板,我们不需要完全从零开始创建项目。基于模块快速创建项目,然后再根据情况增减相关组件。模板内提供示例代码,让我们快速学习上手。 +Cell 命令行工具提供了一些列的应用开发模板,我们不需要完全从零开始创建项目。基于模块快速创建项目,然后再根据情况增减相关组件。模板内提供示例代码,让我们快速学习上手。 ```bash -$ malagu init -o project-name # 基于模板初始化项目,并知道项目名称 +$ cell init -o project-name # 基于模板初始化项目,并知道项目名称 ``` ## 选择 UI 框架 -目前,框架提供三款 UI 框架的集成:antd、material ui 和 grommet。我们可以根据自己的喜好选择任意一款。如果您想集成其他 UI 框架,可以参考现有集成方案,集成工作比较简单。未来,Malagu 框架也会去集成越来越多的前端 UI 框架。 +目前,框架提供三款 UI 框架的集成:antd、material ui 和 grommet。我们可以根据自己的喜好选择任意一款。如果您想集成其他 UI 框架,可以参考现有集成方案,集成工作比较简单。未来,Cell 框架也会去集成越来越多的前端 UI 框架。 ## 路由 @@ -35,7 +35,7 @@ $ malagu init -o project-name # 基于模板初始化项目,并知道项目名 框架对 React 集成提供新的路由定义方式,当然,我们仍然可以使用传统路由定义方式。使用新的路由定义方式的益处: - 路由定义与路由组件定义在一处,增加代码的可读性 -- 路由离散式定义,方便路由拆分到不同 Malagu 组件 +- 路由离散式定义,方便路由拆分到不同 Cell 组件 @@ -79,7 +79,7 @@ export class RouterImpl extends React.Component { ```yaml frontend: - malagu: + cell: react: path: /xxx ``` @@ -93,7 +93,7 @@ frontend: ```yaml frontend: - malagu: + cell: react: router: type: hash @@ -136,7 +136,7 @@ export class DefaultLayout extends React.Component<{}, {}> { ```typescript -import { View, EmptyLayout } from '@malagu/react'; +import { View, EmptyLayout } from '@celljs/react'; @View({ path: '/page1', layout: EmptyLayout }) export class Page1 extends React.Component { ... } @@ -151,10 +151,10 @@ export class Page1 extends React.Component { ... } ```typescript import * as React from 'react'; -import { Context } from '@malagu/react'; +import { Context } from '@celljs/react'; import { ThemeProvider as Provider, THEME_REACT_CONTEXT_PRIORITY } from './theme-protocol'; import { ThemeProvider } from '@material-ui/core'; -import { Autowired } from '@malagu/core/lib/common/annotation/detached'; +import { Autowired } from '@celljs/core/lib/common/annotation/detached'; @Context() export class ThemeContext extends React.Component { static priority = THEME_REACT_CONTEXT_PRIORITY; // 上下文组件包裹的优先级 @@ -177,7 +177,7 @@ export class ThemeContext extends React.Component { ## Widget 与插槽 -在 Malagu 后端开发,我们把后端几乎所有的对象都托管给 IoC 容器管理。好处是可以让我们的代码实现解耦,便于替换和扩展。我们可以通过 IoC rebind 能力,无侵入式替换任意默认实现。IoC 容器让框架变得更易扩展。既然前端开发也使用了 IoC 容器,如何将 IoC 容器的扩展能力引入到前端领域呢?通过 Widget 把前端组件注入到 IoC 容器,通过插槽组件把 IoC 容器中合适的 Widget 注入其他前端组件中。这样,我们就可以像后端一样,无侵入式地扩展前端组件能力。**我们可以选择 React 组件实现 Widget,Widgt 是前端框架无关的。**Widget 前端开发哲学:**Widgt 嵌套 Widget,Widget 组成页面,页面形成应用。** +在 Cell 后端开发,我们把后端几乎所有的对象都托管给 IoC 容器管理。好处是可以让我们的代码实现解耦,便于替换和扩展。我们可以通过 IoC rebind 能力,无侵入式替换任意默认实现。IoC 容器让框架变得更易扩展。既然前端开发也使用了 IoC 容器,如何将 IoC 容器的扩展能力引入到前端领域呢?通过 Widget 把前端组件注入到 IoC 容器,通过插槽组件把 IoC 容器中合适的 Widget 注入其他前端组件中。这样,我们就可以像后端一样,无侵入式地扩展前端组件能力。**我们可以选择 React 组件实现 Widget,Widgt 是前端框架无关的。**Widget 前端开发哲学:**Widgt 嵌套 Widget,Widget 组成页面,页面形成应用。** #### 定义 Widget @@ -186,14 +186,14 @@ export class ThemeContext extends React.Component { 定义 Widget 的方式有很多种:配置文件定义、数据库记录定义、装饰器定义等等。以下是装饰器定义 Widget 方式: ```typescript import * as React from 'react'; -import { ConfigUtil } from '@malagu/core'; -import { Widget } from '@malagu/widget'; +import { ConfigUtil } from '@celljs/core'; +import { Widget } from '@celljs/widget'; import { AreaType } from '../area'; -import { NavItemProps, NavItem } from '@malagu/grommet'; -import { Icon } from '@malagu/grommet'; +import { NavItemProps, NavItem } from '@celljs/grommet'; +import { Icon } from '@celljs/grommet'; export function Logo(props: NavItemProps) { - const { label, icon, ...rest } = ConfigUtil.get('malagu.shell.logo'); + const { label, icon, ...rest } = ConfigUtil.get('cell.shell.logo'); props = { ...rest, ...props }; return (} hoverIndicator={false} activatable={false} {...props}/>); } @@ -210,13 +210,13 @@ export default class {} ```typescript import * as React from 'react'; import { Box, Nav, BoxProps } from 'grommet'; -import { ConfigUtil } from '@malagu/core'; +import { ConfigUtil } from '@celljs/core'; import { AreaType } from '../area-protocol'; -import { Slot } from '@malagu/react'; -import { Widget } from '@malagu/widget'; +import { Slot } from '@celljs/react'; +import { Widget } from '@celljs/widget'; export function TopArea(props: BoxProps) { - props = { ...ConfigUtil.get('malagu.shell.topArea'), ...props }; + props = { ...ConfigUtil.get('cell.shell.topArea'), ...props }; return (