Skip to content

现在开始

🚨 注意

在开始使用之前,您应该了解以下约定:

  • Vine 只支持 Vue 3.0+
  • 我们提供了对 ViteRspack 的支持。
  • Vine 仅支持 TypeScript,JavaScript 用户无法使用完整功能。

欢迎加入用另一种方式编写 Vue 的探索旅程!

首先请在你的项目中安装 Vue Vine npm

bash
pnpm i vue-vine

Vine 提供了构建工具集成(Vite 插件和 Rspack loader)以及 VSCode 扩展来支持基础功能。

除此之外,我们还提供了其他一些开发或配置时可能会需要用到的库,你可以在下一节 周边生态 中了解更多细节。

安装 Vite 插件

vite.config.ts 中导入插件:

vite.config.ts
ts
import { VineVitePlugin } from 'vue-vine/vite'

export default defineConfig({
  plugins: [
    // ...其他插件
    VineVitePlugin()
  ],
})

安装 Rsbuild 插件

🧪 Beta 功能

Rsbuild 支持目前处于 beta 阶段。

请安装 beta 版本并报告您遇到的任何问题

rsbuild.config.ts 中使用插件:

rsbuild.config.ts
ts
import { defineConfig } from '@rsbuild/core'
import { pluginVueVine } from 'vue-vine/rsbuild'

export default defineConfig({
  plugins: [
    pluginVueVine({
      // 可选的编译器选项
      // compilerOptions: { ... }
    })
  ],
})

为什么使用插件?

Rsbuild 插件相比 Rspack loader 提供了更简单、更高层次的集成方式。它会自动:

  • 配置 .vine.ts 文件所需的 loader
  • 设置样式处理规则
  • 通过 DefinePlugin 注入 Vue 运行时标志

对于需要细粒度控制 loader 配置的高级用户,仍可以直接使用 Rspack loader(见下一节)。

安装 Rspack loader(高级用法)

🧪 Beta 功能

Rspack 支持目前处于 beta 阶段。

请安装 beta 版本并报告您遇到的任何问题

安装 Rspack loader:

bash
pnpm add -D @vue-vine/rspack-loader@beta

rspack.config.ts 中配置 loader:

rspack.config.ts
ts
import { defineConfig } from '@rspack/cli'
import { rspack } from '@rspack/core'

// 目标浏览器配置,用于代码转译
const targets = ['last 2 versions', '> 0.2%', 'not dead']

export default defineConfig({
  module: {
    rules: [
      // 使用链式 loader 处理 .vine.ts 文件
      // Loader 从右到左(从下到上)执行:
      // 1. @vue-vine/rspack-loader:将 Vine 组件转换为 TypeScript
      // 2. builtin:swc-loader:将 TypeScript 转换为 JavaScript
      {
        test: /\.vine\.ts$/,
        resourceQuery: { not: [/vine-style/] }, // 排除样式虚拟模块
        use: [
          {
            loader: 'builtin:swc-loader',
            options: {
              jsc: {
                parser: { syntax: 'typescript' },
              },
              env: { targets },
            },
          },
          {
            loader: '@vue-vine/rspack-loader',
          },
        ],
      },
      // 处理 Vine 样式虚拟模块
      {
        resourceQuery: /vine-style/,
        use: [
          {
            loader: '@vue-vine/rspack-loader/style-loader',
          },
        ],
        type: 'css',
      },
      // ...其他 rules
    ],
  },
  plugins: [
    // Vue 运行时所需
    new rspack.DefinePlugin({
      __VUE_OPTIONS_API__: JSON.stringify(true),
      __VUE_PROD_DEVTOOLS__: JSON.stringify(false),
      __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: JSON.stringify(false),
    }),
  ],
})

为什么需要链式 loader?

Vine 编译器输出的是 TypeScript 代码,需要转换为 JavaScript。Rspack 内置的 builtin:swc-loader 用于进行 TypeScript 到 JavaScript 的转换,通过 Rust 原生实现提供了卓越的性能。

resourceQuery: { not: [/vine-style/] } 确保 Vine 样式块中的 CSS 内容不会被 TypeScript/JavaScript loader 处理。

通过项目脚手架创建项目

你可以渐进式地将 Vue Vine 集成到现有的 Vue 3 项目中,但如果你想要启动一个新项目,放弃 SFC,只想使用 Vue Vine,我们也为你提供了一个创建项目模板的脚手架工具。

运行以下命令来创建一个新项目:

bash
# 你没有全局安装 CLI 的话
pnpx create-vue-vine my-vine-project

# 你已经全局安装 CLI 的话
create-vue-vine my-vine-project
或者:也可以选择全局安装 CLI
bash
pnpm i -g create-vue-vine
点击这里预览运行 CLI 后的后续操作
text
> pnpx create-vue-vine my-vine-project

...

┌  Vue Vine - Another style of writing Vue components

◇  Use Vue Router?
│  Yes

◇  Use Pinia as state management?
│  Yes

◇  Using atomized css?
│  - UnoCSS
│  - Tailwind
│  - No

◇  Install all dependencies for the project now?
│  Yes

◇  Project created at: /path/to/my-vine-project


...

◇  Dependencies installed!

└  You're all set! Now run:

   cd my-vine-project
   pnpm dev

   Happy hacking!

安装 VSCode 扩展

在市场中搜索 "Vue Vine" 并安装。

image

使用 macro 类型

Vine 提供了一个 typescript 声明文件,以帮助你使用宏时获得智能提示。

tsconfig.json
json
{
  "compilerOptions": {
    "types": ["vue-vine/macros"]
  }
}

下一步

现在你已经成功安装了 Vue Vine,以下是一些推荐的后续步骤:

  • 学习基础概念:阅读规范文档了解 Vine 的核心概念和语法
  • 探索宏函数:查看宏函数指南,学习 vinePropvineEmitsvineSlots 等的使用
  • 状态管理:了解 Vibe,Vine 的跨组件状态管理方案
  • 查看示例:访问我们的 GitHub 仓库查看实际应用示例