NOTE本教程假设你已经具备基本的 HTML、CSS 和 JavaScript 知识。如果你对这些知识不熟悉,可以先学习相关的教程。
本笔记基于Bilibili课程30分钟学会Vue之核心语法
环境准备
在开始之前,确保你的开发环境已经安装了 Node.js 和 npm。你可以通过以下命令安装 Vue CLI:
npm install -g @vue/cli安装完成后,可以通过以下命令创建一个新的 Vue 项目:
vue create my-vue-projectcd my-vue-projectnpm run serveVue 2.0 基础语法
2.1 响应式数据与插值表达式
Vue 的核心特性之一是响应式数据绑定。通过在模板中使用插值表达式({{ }}),可以将数据动态绑定到 DOM 中。
<div id="app"> <p>{{ title }}</p> <p>{{ content }}</p></div>在 JavaScript 中,通过 Vue 实例的 data 属性定义响应式数据:
new Vue({ el: '#app', data: { title: 'Hello Vue!', content: 'This is a Vue.js project.' }});当 data 中的数据发生变化时,页面上绑定的内容会自动更新。
2.2 方法与插值表达式
Vue 允许在模板中调用方法。通过在 methods 中定义函数,可以在插值表达式中使用。
<div id="app"> <p>{{ output() }}</p></div>在 Vue 实例中定义方法:
new Vue({ el: '#app', data: { title: 'Hello Vue!', content: 'This is a Vue.js project.' }, methods: { output() { return `Title: ${this.title}, Content: ${this.content}`; } }});2.3 计算属性
计算属性是基于依赖的缓存属性。当依赖的响应式数据发生变化时,计算属性会自动重新计算。
<div id="app"> <p>{{ outputContent }}</p></div>在 Vue 实例中定义计算属性:
new Vue({ el: '#app', data: { title: 'Hello Vue!', content: 'This is a Vue.js project.' }, computed: { outputContent() { return `Title: ${this.title}, Content: ${this.content}`; } }});2.4 侦听器(Watchers)
侦听器用于监听数据的变化,并执行特定的操作。通过在 watch 中定义侦听器,可以实现更复杂的逻辑。
new Vue({ el: '#app', data: { title: 'Hello Vue!' }, watch: { title(newVal, oldVal) { console.log(`Title changed from ${oldVal} to ${newVal}`); } }});指令
Vue 提供了一系列指令,用于操作 DOM 和绑定数据。
3.1 条件渲染
v-if 和 v-show 用于根据条件渲染元素。v-if 是真正的条件渲染,而 v-show 只是切换元素的 CSS 属性。
<div id="app"> <p v-if="bool">This is visible when bool is true.</p> <p v-show="bool">This is visible when bool is true.</p></div>在 Vue 实例中定义布尔值:
new Vue({ el: '#app', data: { bool: true }});3.2 列表渲染
v-for 用于渲染列表数据。可以通过数组或对象进行循环。
<div id="app"> <p v-for="item in arr">{{ item }}</p> <p v-for="(item, key, index) in obj">{{ item }} - {{ key }} - {{ index }}</p></div>在 Vue 实例中定义数组和对象:
new Vue({ el: '#app', data: { arr: ['a', 'b', 'c'], obj: { a: 10, b: 20, c: 30 } }});3.3 属性绑定
v-bind 用于动态绑定 DOM 属性。
<div id="app"> <p v-bind:title="title">Hover over me to see the title.</p></div>在 Vue 实例中定义属性值:
new Vue({ el: '#app', data: { title: 'Dynamic Title' }});3.4 事件绑定
v-on 或简写为 @ 用于绑定事件处理器。
<div id="app"> <button @click="output">Click me</button></div>在 Vue 实例中定义事件处理方法:
new Vue({ el: '#app', methods: { output() { alert('Button clicked!'); } }});3.5 表单绑定
v-model 用于实现双向数据绑定,将表单输入与数据绑定在一起。
<div id="app"> <input type="text" v-model="inputValue"> <p>{{ inputValue }}</p></div>在 Vue 实例中定义绑定的数据:
new Vue({ el: '#app', data: { inputValue: 'Default Value' }});修饰符
Vue 提供了一些修饰符,用于增强指令的功能。
4.1 事件修饰符
.trim 修饰符用于去除输入值的首尾空格。
<div id="app"> <input type="text" v-model.trim="inputValue"></div>在 Vue 实例中定义绑定的数据:
new Vue({ el: '#app', data: { inputValue: '' }});示例代码
以下是完整的示例代码,展示了上述功能的综合应用。
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Vue 2.0 Quick Start</title></head><body> <div id="app"> <h1>{{ title }}</h1> <p>{{ content }}</p> <p>{{ outputContent }}</p> <p v-if="bool">This is visible when bool is true.</p> <p v-show="bool">This is visible when bool is true.</p> <p v-for="item in arr">{{ item }}</p> <p v-for="(item, key, index) in obj">{{ item }} - {{ key }} - {{ index }}</p> <p v-bind:title="title">Hover over me to see the title.</p> <button @click="output">Click me</button> <input type="text" v-model.trim="inputValue"> <p>{{ inputValue }}</p> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.min.js"></script> <script> new Vue({ el: '#app', data: { title: 'Hello Vue!', content: 'This is a Vue.js project.', bool: true, arr: ['a', 'b', 'c'], obj: { a: 10, b: 20, c: 30 }, inputValue: 'Default Value' }, methods: { output() { alert('Button clicked!'); } }, computed: { outputContent() { return `Title: ${this.title}, Content: ${this.content}`; } }, watch: { title(newVal, oldVal) { console.log(`Title changed from ${oldVal} to ${newVal}`); } } }); </script></body></html>总结
通过以上内容,你已经掌握了 Vue 2.0 的基本语法和功能,包括响应式数据、插值表达式、指令、计算属性、侦听器和修饰符。这些功能将帮助你快速构建动态的用户界面。接下来,你可以通过阅读官方文档和实践更多项目,进一步提升你的 Vue.js 技能。