# 安装

# Vue CLI 设置

您可以使用 Vue CLI 轻松设置您的 Vue 类组件项目。运行以下命令创建一个新项目

$ vue create hello-world

系统会询问您是否使用预设。选择“手动选择功能”

选中 TypeScript 功能以使用 Vue 类组件。如果需要,您还可以添加其他功能

对于问题“使用类样式组件语法?”,请按 y

您可以根据自己的喜好回答剩余的问题。完成此设置过程后,Vue CLI 会创建一个包含已安装 Vue 类组件的新项目目录。

# 手动设置

如果您更喜欢手动设置,请通过 npm 安装它并配置您的构建工具。

# npm

您可以使用 npm 命令安装 Vue 类组件。请确保也安装 Vue 核心库,因为 Vue 类组件依赖于它

$ npm install --save vue vue-class-component

如果您更喜欢,可以使用 yarn 命令

$ yarn add --save vue vue-class-component

# 构建设置

要使用 Vue 类组件,您需要在您的项目中配置 TypeScriptBabel,因为它依赖于 ECMAScript 阶段 1 装饰器,这是在浏览器上运行所需的转译。

警告

它尚不支持阶段 2 装饰器,因为 TypeScript 转译器仍然只支持旧的装饰器规范。

# TypeScript

在您的项目根目录上创建 tsconfig.json 并指定 experimentalDecorators 选项,以便它转译装饰器语法

{
  "compilerOptions": {
    "target": "es5",
    "module": "es2015",
    "moduleResolution": "node",
    "strict": true,
    "experimentalDecorators": true
  }
}

# Babel

安装 @babel/plugin-proposal-decorators@babel/plugin-proposal-class-properties

$ npm install --save-dev @babel/plugin-proposal-decorators @babel/plugin-proposal-class-properties

然后在您的项目根目录上配置 .babelrc

{
  "plugins": [
    ["@babel/proposal-decorators", { "legacy": true }],
    ["@babel/proposal-class-properties", { "loose": true }]
  ]
}

请注意,需要 legacyloose 选项,因为 Vue 类组件目前只支持阶段 1(legacy)装饰器规范。

# CDN

unpkg.com 提供基于 npm 的 CDN 链接。您可以通过替换 url 中的 @latest 部分来选择 Vue 类组件的特定版本(例如,https://unpkg.com/vue-class-component@7.2.2/dist/vue-class-component.js 用于使用版本 7.2.2)。

<!-- UMD build -->
<script src="https://unpkg.com/vue-class-component@latest/dist/vue-class-component.js"></script>

<!-- UMD minified build -->
<script src="https://unpkg.com/vue-class-component@latest/dist/vue-class-component.min.js"></script>

<!-- ES Module build -->
<script src="https://unpkg.com/vue-class-component@latest/dist/vue-class-component.esm.browser.js"></script>

<!-- ES Module minified build -->
<script src="https://unpkg.com/vue-class-component@latest/dist/vue-class-component.esm.browser.min.js"></script>

# 不同版本

Vue 类组件以不同版本的形式提供,适用于不同的环境和用途。

  • 用于开发
    • vue-class-component.js (UMD)
    • vue-class-component.common.js (CommonJS)
    • vue-class-component.esm.js (用于捆绑器的 ES 模块)
    • vue-class-component.esm.browser.js (用于浏览器的 ES 模块)
  • 用于生产(最小化)
    • vue-class-component.min.js (UMD)
    • vue-class-component.esm.browser.min.js (用于浏览器的 ES 模块)