Static
在 VonaJS 框架中,每个模块都可以提供静态资源,可以通过 URL 访问
初始化代码骨架
1. Cli命令
bash
$ vona :init:static demo-student2. 菜单命令
TIP
右键菜单 - [模块路径]: Vona Init/Assets Static
3. 添加静态资源
执行上述命令会自动创建目录: assets/static
根据业务需求添加静态资源,比如添加两张图片:
bash
src/module/demo-student/assets/static/img/vona.png
src/module/demo-student/assets/static/img/vona.svg4. URL
可以通过如下 URL 访问静态资源:
bash
http://localhost:7102/api/static/demo/student/img/vona.png
http://localhost:7102/api/static/demo/student/img/vona.svg可以使用meta.static通过类型化的方式获取静态资源的 URL 地址
创建meta.static
比如,在模块 demo-student 中创建meta.static
1. Cli命令
bash
$ vona :create:bean meta static --module=demo-student2. 菜单命令
TIP
右键菜单 - [模块路径]: Vona Meta/Static
meta.static定义
typescript
export type TypeStaticGetPath = 'img/vona.png' | 'img/vona.svg';
@Meta()
export class MetaStatic extends BeanStaticBase<TypeStaticGetPath> {}TypeStaticGetPath: 定义静态资源的类型
获取静态资源Path
typescript
class ControllerStudent {
test() {
const path = this.scope.static.get('img/vona.png');
assert.equal(path, '/api/static/demo/student/img/vona.png');
}
}static.get:传入静态资源img/vona.png,生成 Path/api/static/demo/student/img/vona.png
获取静态资源URL
typescript
class ControllerStudent {
test() {
const url = this.scope.static.getURL('img/vona.png');
assert.equal(url, 'http://localhost:7102/api/static/demo/student/img/vona.png);
}
}static.getURL:传入静态资源img/vona.png,生成 URLhttp://localhost:7102/api/static/demo/student/img/vona.png
URL配置
http://localhost:7102是系统根据当前 API 的上下文动态推断出来的。在一些应用场景,API Server 的 URL 与对外提供服务的域名可能并不相同。这时可以通过App Config或者Instance Config修改 URL 配置
1. App Config
src/backend/config/config/config.ts
typescript
// server
config.server = {
serve: {
protocol: 'https',
host: 'cabloy.com',
},
};这时再执行方法static.getURL,得到的 URL 是https://cabloy.com/api/static/demo/student/img/vona.png
2. Instance Config
VonaJS 支持多实例/多租户,可以为具体的实例指定不同的配置
src/backend/config/config/config.ts
typescript
// instance
config.instance = {
instances: {
'': {
password: '',
title: '',
config: {
server: {
serve: {
protocol: 'https',
host: 'cabloy.com',
},
},
},
},
},
};