应用场景
我们知道EggJS通过插件egg-static
可以在后端提供静态资源
(如js、css、image等)供前端访问。与EggJS不同的是,EggBornJS采用模块化体系
,每个业务模块可以提供自己的静态资源,然后由系统统一向前端提供访问服务
模块静态资源的存放路径
EggBornJS约定了业务模块中静态资源的存放路径:{module path}/backend/static
,比如模块a-base
提供了一个缺省的avatar
图标,其路径为:src/module-system/a-base-sync/backend/static/img/avatar_user.png
如何访问模块的静态资源
同样,EggBornJS也约定了业务模块中静态资源的访问路径:{domain}/api/static/{module path}/{static path}
,比如上面的avatar
图标,其访问路径就是:https://test.cabloy.com/api/static/a/base/img/avatar_user.png
名称 | 说明 |
---|---|
domain | https://test.cabloy.com |
静态资源前缀 | /api/static |
模块路径 | /a/base/ |
静态资源 | img/avatar_user.png |
API
为了方便构造静态资源的访问路径,在前端和后端均提供了辅助方法:
1. 前端
通过this.$meta.util.combineStaticPath
构造,如:
src/suite-vendor/test-party/modules/test-party/front/src/kitchen-sink/pages/markdownEditor.vue
- 1this.$meta.util.combineStaticPath('a-base', 'img/avatar_user.png')
2. 后端
通过ctx.bean.base.getStaticUrl
构造,如:
src/module-system/a-dingtalk/backend/src/service/contacts.js
- 1const msg = {
- 2 msgtype: 'link',
- 3 link: {
- 4 messageUrl: this.ctx.bean.base.getAbsoluteUrl('/#!/a/login/migrate'),
- 5 picUrl: this.ctx.bean.base.getStaticUrl('/a/base/img/cabloy.png'),
- 6 title: this.ctx.text('AccountMigration'),
- 7 text: this.ctx.text('AccountMigrationDesp'),
- 8 },
- 9};
评论: