Skip to content

快速开始

在线体验 Vue

  • 要快速了解 Vue,你可以直接在我们的 Playground 中试用。

  • 如果你更喜欢不包含任何构建步骤的纯 HTML 设置,可以将这个 JSFiddle 作为起点。

  • 如果你已经熟悉 Node.js 和构建工具的概念,也可以直接在浏览器中通过 StackBlitz 尝试完整的构建环境。

  • 若想了解推荐配置的完整演示,请观看这个交互式 Scrimba 教程,其中会展示如何运行、编辑并部署你的第一个 Vue 应用。

创建一个 Vue 应用

前置条件

  • 熟悉命令行
  • 安装 Node.js 版本 ^20.19.0 || >=22.12.0

本节将介绍如何在本地机器上搭建一个 Vue 单页应用。创建出的项目将使用基于 Vite 的构建配置,并允许我们使用 Vue 单文件组件(SFC)。

请确保你已安装最新版本的 Node.js,并且当前工作目录就是你打算创建项目的目录。在命令行中运行以下命令(不要带 $ 符号):

sh
$ npm create vue@latest
sh
$ pnpm create vue@latest
sh
# 对于 Yarn (v1+)
$ yarn create vue

# 对于 Yarn Modern (v2+)
$ yarn create vue@latest
  
# 对于 Yarn ^v4.11
$ yarn dlx create-vue@latest
sh
$ bun create vue@latest

该命令将安装并执行 create-vue,这是 Vue 官方的项目脚手架工具。随后你会看到一些可选功能的提示,例如 TypeScript 和测试支持:

 项目名称:<your-project-name>
 添加 TypeScript?No / Yes
 添加 JSX 支持?No / Yes
 为单页应用开发添加 Vue Router?No / Yes
 添加 Pinia 用于状态管理?No / Yes
 添加 Vitest 用于单元测试?No / Yes
 添加端到端测试方案?No / Cypress / Nightwatch / Playwright
 添加 ESLint 进行代码质量检查?… No / Yes
 添加 Prettier 进行代码格式化?No / Yes
 添加用于调试的 Vue DevTools 7 扩展?(实验性)No / Yes

正在 ./<your-project-name> 中搭建项目...
完成。

如果你不确定某个选项,暂时直接按回车选择 No 即可。项目创建完成后,按照说明安装依赖并启动开发服务器:

sh
$ cd <your-project-name>
$ npm install
$ npm run dev
sh
$ cd <your-project-name>
$ pnpm install
$ pnpm run dev
sh
$ cd <your-project-name>
$ yarn
$ yarn dev
sh
$ cd <your-project-name>
$ bun install
$ bun run dev

现在你应该已经运行起你的第一个 Vue 项目了!请注意,生成项目中的示例组件使用的是 组合式 API<script setup>,而不是 选项式 API。下面是一些额外提示:

当你准备好将应用发布到生产环境时,运行以下命令:

sh
$ npm run build
sh
$ pnpm run build
sh
$ yarn build
sh
$ bun run build

这会在项目的 ./dist 目录中生成适用于生产环境的构建版本。查看 生产部署指南 以了解更多关于将应用发布到生产环境的信息。

下一步 >

从 CDN 使用 Vue

你可以通过 script 标签直接从 CDN 使用 Vue:

html
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>

这里我们使用的是 unpkg,但你也可以使用任何提供 npm 包的 CDN,例如 jsdelivrcdnjs。当然,你也可以下载这个文件并自行托管。

当通过 CDN 使用 Vue 时,不涉及任何“构建步骤”。这会让配置简单许多,并且适合增强静态 HTML 或与后端框架集成。不过,你将无法使用单文件组件(SFC)语法。

使用全局构建版本

上面的链接加载的是 Vue 的 全局构建版本,其中所有顶层 API 都作为全局 Vue 对象上的属性暴露出来。下面是一个使用全局构建版本的完整示例:

html
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>

<div id="app">{{ message }}</div>

<script>
  const { createApp } = Vue

  createApp({
    data() {
      return {
        message: 'Hello Vue!'
      }
    }
  }).mount('#app')
</script>

CodePen 演示 >

html
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>

<div id="app">{{ message }}</div>

<script>
  const { createApp, ref } = Vue

  createApp({
    setup() {
      const message = ref('Hello vue!')
      return {
        message
      }
    }
  }).mount('#app')
</script>

CodePen 演示 >

TIP

本指南中许多组合式 API 示例都会使用 <script setup> 语法,这需要构建工具。如果你打算在没有构建步骤的情况下使用组合式 API,请参考 setup() 选项 的用法。

使用 ES 模块构建版本

在本指南的其余部分,我们将主要使用 ES 模块 语法。如今大多数现代浏览器都原生支持 ES 模块,因此我们可以像这样通过原生 ES 模块从 CDN 使用 Vue:

html
<div id="app">{{ message }}</div>

<script type="module">
  import { createApp } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js'

  createApp({
    data() {
      return {
        message: 'Hello Vue!'
      }
    }
  }).mount('#app')
</script>
html
<div id="app">{{ message }}</div>

<script type="module">
  import { createApp, ref } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js'

  createApp({
    setup() {
      const message = ref('Hello Vue!')
      return {
        message
      }
    }
  }).mount('#app')
</script>

请注意,我们使用的是 <script type="module">,而导入的 CDN URL 指向的是 Vue 的 ES 模块构建版本

启用 Import Maps

在上面的示例中,我们是从完整的 CDN URL 导入的,但在本指南的其余部分你会看到如下代码:

js
import { createApp } from 'vue'

我们可以通过使用 Import Maps 让浏览器知道去哪里定位 vue 导入:

html
<script type="importmap">
  {
    "imports": {
      "vue": "https://unpkg.com/vue@3/dist/vue.esm-browser.js"
    }
  }
</script>

<div id="app">{{ message }}</div>

<script type="module">
  import { createApp } from 'vue'

  createApp({
    data() {
      return {
        message: 'Hello Vue!'
      }
    }
  }).mount('#app')
</script>

CodePen 演示 >

html
<script type="importmap">
  {
    "imports": {
      "vue": "https://unpkg.com/vue@3/dist/vue.esm-browser.js"
    }
  }
</script>

<div id="app">{{ message }}</div>

<script type="module">
  import { createApp, ref } from 'vue'

  createApp({
    setup() {
      const message = ref('Hello Vue!')
      return {
        message
      }
    }
  }).mount('#app')
</script>

CodePen 演示 >

你还可以在 import map 中为其他依赖添加条目——但要确保它们指向你打算使用的库的 ES 模块版本。

Import Maps 浏览器支持

Import Maps 是一项相对较新的浏览器特性。请确保使用处于其 支持范围 内的浏览器。尤其需要注意的是,它目前仅在 Safari 16.4+ 中受支持。

关于生产使用的说明

到目前为止的示例使用的是 Vue 的开发版——如果你打算在生产环境中通过 CDN 使用 Vue,请务必查看 生产部署指南

虽然可以在没有构建系统的情况下使用 Vue,但另一个可考虑的方案是使用 vuejs/petite-vue,它可能更适合过去会使用 jquery/jquery 或当下可能会使用 alpinejs/alpine 的场景。

拆分模块

随着我们深入本指南,可能需要将代码拆分为独立的 JavaScript 文件,以便更易于管理。例如:

index.html
html
<div id="app"></div>

<script type="module">
  import { createApp } from 'vue'
  import MyComponent from './my-component.js'

  createApp(MyComponent).mount('#app')
</script>
my-component.js
js
export default {
  data() {
    return { count: 0 }
  },
  template: `<div>计数为:{{ count }}</div>`
}
my-component.js
js
import { ref } from 'vue'
export default {
  setup() {
    const count = ref(0)
    return { count }
  },
  template: `<div>计数为:{{ count }}</div>`
}

如果你直接在浏览器中打开上面的 index.html,会发现它报错了,因为 ES 模块不能通过 file:// 协议工作,而浏览器在打开本地文件时使用的就是这个协议。

出于安全原因,ES 模块只能通过 http:// 协议工作,而浏览器在打开网页时使用的就是这个协议。为了让 ES 模块在本地机器上正常工作,我们需要通过本地 HTTP 服务器以 http:// 协议提供 index.html

要启动本地 HTTP 服务器,首先确保你已安装 Node.js,然后在命令行中、HTML 文件所在的同一目录下运行 npx serve。你也可以使用任何其他能够以正确 MIME 类型提供静态文件的 HTTP 服务器。

你可能已经注意到,导入的组件模板是以内联 JavaScript 字符串的形式写入的。如果你使用 VS Code,可以安装 es6-string-html 扩展,并在字符串前添加 /*html*/ 注释,从而为其提供语法高亮。

下一步

如果你跳过了介绍,我们强烈建议你在继续阅读其余文档之前先阅读它。

快速开始 has loaded