Skip to content

如何使用

前提条件

  1. 因为要用到ts的获取元数据的能力,所以需要安装reflect-metada的支持
shell
yarn add @abraham/reflection
yarn add @abraham/reflection

并且把这段代码放到入口引入,只需引入一次

typescript
import '@abraham/reflection'
import '@abraham/reflection'
  1. 安装依赖注入库 injection-js, 以及本库
shell
yarn add injection-js vue3-oop
yarn add injection-js vue3-oop
  1. 设置 tsconfig.json

主要是涉及到装饰器以及类的设置

json
{
  "compilerOptions": {
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "useDefineForClassFields": false,
  }
}
{
  "compilerOptions": {
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "useDefineForClassFields": false,
  }
}
  1. Vite设置

由于vite内部使用esbuild编译ts, esbuild不支持元数据 metadata, 所以需要使用tsc编译ts

shell
pnpm add @vue3-oop/plugin-vue-jsx -D
pnpm add @vue3-oop/plugin-vue-jsx -D

vite 插件配置

typescript
import vueJsx from '@vue3-oop/plugin-vue-jsx'
export default {
  plugins: [vueJsx()]
}
import vueJsx from '@vue3-oop/plugin-vue-jsx'
export default {
  plugins: [vueJsx()]
}

装饰器

有关装饰器的知识请阅读 https://www.typescriptlang.org/docs/handbook/decorators.html#decorators

模板

vite: https://github.com/agileago/fe-template

webpack: https://github.com/agileago/fe-vue3-template