Vue3 起步
有了环境和项目骨架,本节正式"起步":亲手写一个可交互的 Vue3 应用,理解数据如何驱动页面。整个过程只需要文本编辑器与浏览器。
准备最小工程
可以继续使用上一节创建的 vue3-demo,也可以新建一个:
npm create vue@latest hello-vue
cd hello-vue
npm install
npm run dev
保持终端运行,浏览器打开终端显示的 Local 地址,之后所有改动都会自动热更新。
写第一个组件
把 src/App.vue 的内容整体替换为:
<!-- src/App.vue -->
<template>
<h1>{{ message }}</h1>
</template>
<script setup>
import { ref } from 'vue'
const message = ref('我的第一个 Vue3 页面')
</script>
<style scoped>
h1 { color: #42b883; }
</style>
保存后浏览器标题显示"我的第一个 Vue3 页面",页面出现绿色大标题,即渲染成功。
理解 ref 与响应式
<script setup> 中的普通变量不会触发界面更新,必须用 ref 包装成响应式数据: ```html <script setup> import { ref } from 'vue' const normal = '我不会引起更新' // 普通常量 const data = ref('我会随数据更新') // 响应式数据 </script>
在模板中使用 data 时无需写 .value(框架自动解包);在脚本里读写则要写 data.value。
## 加上交互
把组件升级为一个点击计数器:
```html
<template>
<p>计数:{{ count }}</p>
<button @click="add">+1</button>
</template>
<script setup>
import { ref } from 'vue'
const count = ref(0)
const add = () => { count.value++ }
</script>
页面显示"计数:0",每点击一次按钮数字加 1。核心逻辑只有三步:声明响应式数据、编写方法、绑定点击事件。
用选项式 API 实现相同功能
<script>
export default {
data() {
return { count: 0 }
},
methods: {
add() { this.count++ }
}
}
</script>
注意选项式写法要使用 this.count。运行效果与组合式完全一致,两种风格 Vue3 都支持。
起步常见问题
- 页面空白:检查终端是否报错,确认 src/main.js 中 mount('#app') 与 index.html 中的 id="app" 对应。
- 修改没生效:确认开发服务器仍在运行,保存文件后应自动刷新。
- 样式不生效:检查 <style> 是否位于 App.vue 内且写法正确。
小结
起步四步走:建项目、写 App.vue、用 ref 声明数据、在模板中用 {{ }} 展示并用 @click 交互。接下来深入学习模板语法与指令。