Vue3 基础语法

Vue.js 是一个渐进式 JavaScript 框架,主要用于构建用户界面。

Vue.js 基于组件化和响应式数据的理念,提供了一种简单高效的方式来构建用户界面。

Vue 单文件组件

Vue 单文件组件(Single File Component,简称 SFC)是 Vue.js 框架的文件格式,它允许开发者将 HTML、JavaScript 和 CSS 代码放在一个文件中,通常以 .vue 为文件后缀。

单文件组件是一种可复用的代码组织形式,它将从属于同一个组件的 HTML、CSS 和 JavaScript 封装在使用 .vue 后缀的文件中。

以下是一些常见的 Vue.js 基础语法和概念,包括模板语法、指令、事件处理、计算属性和组件等,在后面章节还会详细说明。

1. 创建 Vue 实例

创建 Vue 实例是开始使用 Vue.js 的第一步,通常你会在一个 HTML 文件中创建一个 Vue 实例并将其挂载到一个 DOM 元素上。

实例

<div id="hello-vue" class="demo">
  {{ message }}
</div>

<script>
const HelloVueApp = {
  data() {
    return {
      message: 'Hello Vue!!'
    }
  }
}

Vue.createApp(HelloVueApp).mount('#hello-vue')
</script>


尝试一下 »

HTML 部分说明:

<div id="hello-vue" class="demo">:

  • 这是一个 <div> 元素,它具有 id 为 hello-vue 和 class 为 demo
  • 在 Vue 应用中,这个 <div> 将会被 Vue 实例管理,并且会在数据发生变化时更新内容。

{{ message }}:

  • 这是 Vue.js 的模板语法,用于将 Vue 实例中的 message 数据绑定到页面上。
  • 当 Vue 实例中的 message 数据变化时,页面上的内容也会随之更新。

JavaScript 部分说明:

Vue 实例定义:

const HelloVueApp = {
  data() {
    return {
      message: 'Hello Vue!!'
    }
  }
}
  • HelloVueApp 是一个普通的 JavaScript 对象,包含了 Vue 组件选项。
  • data() 方法返回一个包含 message 属性的对象,这个属性的初始值是 'Hello Vue!!'

创建并挂载 Vue 应用:

  • Vue.createApp() 方法用于创建一个 Vue 应用实例,参数是一个包含组件选项的对象(这里是 HelloVueApp)。
  • .mount('#hello-vue') 方法将 Vue 应用实例挂载到页面中具有 id="hello-vue" 的 DOM 元素上。

执行过程

  • 页面加载时,浏览器解析 HTML 和 JavaScript。
  • Vue.js 脚本执行时,创建了一个 Vue 应用实例,并将其绑定到 <div id="hello-vue"> 元素上。
  • Vue 应用实例根据 data() 中的初始数据,将 message 的值渲染到页面上的 {{ message }} 处。
  • 当 message 数据发生变化时(例如通过用户交互或异步操作),页面会自动更新以反映这些变化。

2. 模板语法

插值

Vue.js 使用双大括号 {{ }} 来表示文本插值:

实例

<div>{{ message }}</div>

指令

指令是带有前缀 v- 的特殊属性,用于在模板中表达逻辑。

v-bind: 动态绑定一个或多个特性,或一个组件 prop。

<a v-bind:href="url">Link</a>

简写:

<a :href="url">Link</a>

v-if / v-else-if / v-else: 条件渲染。

<p v-if="visible">内容可见</p>
<p v-else>内容不可见</p>

v-for: 列表渲染。

<ul>
  <li v-for="item in items" :key="item.id">{{ item.text }}</li>
</ul>

v-model: 双向数据绑定。

<input v-model="message" placeholder="edit me">
<p>Message is: {{ message }}</p>

v-on: 事件监听器。

<button v-on:click="doSomething">Click me</button>

简写:

<button @click="doSomething">Click me</button>

3. 事件处理

在 Vue.js 中,你可以使用 v-on 指令来监听 DOM 事件,并在触发时执行一些 JavaScript 代码。

实例

<div id="app">
  <button @click="greet">Greet</button>
</div>

<script>
  createApp({
    methods: {
      greet() {
        alert('Hello!');
      }
    }
  }).mount('#app');
</script>

4. 计算属性

计算属性是基于其依赖进行缓存的属性。计算属性只有在其相关依赖发生变化时才会重新计算。

实例

<div id="app">
  <p>{{ reversedMessage }}</p>
</div>

<script>
  createApp({
    data() {
      return {
        message: 'Hello'
      };
    },
    computed: {
      reversedMessage() {
        return this.message.split('').reverse().join('');
      }
    }
  }).mount('#app');
</script>

5. 组件

组件是 Vue.js 最强大的功能之一。组件允许你使用小型、独立和通常可复用的组件构建大型应用。

实例

const app = createApp({});

app.component('my-component', {
  template: '<div>A custom component!</div>'
});

使用组件

实例

<div id="app">
  <my-component></my-component>
</div>

<script>
  const app = createApp({});

  app.component('my-component', {
    template: '<div>A custom component!</div>'
  });

  app.mount('#app');
</script>

6. Props 和事件

Props

Props 用于在组件之间传递数据。

实例

<div id="app">
  <blog-post title="My journey with Vue"></blog-post>
</div>

<script>
  const app = createApp({
    data() {
      return {};
    }
  });

  app.component('blog-post', {
    props: ['title'],
    template: '<h3>{{ title }}</h3>'
  });

  app.mount('#app');
</script>

事件

子组件通过 $emit 触发事件,父组件可以监听这些事件。

实例

<div id="app">
  <button-counter @increment="incrementTotal"></button-counter>
  <p>Total clicks: {{ total }}</p>
</div>

<script>
  const app = createApp({
    data() {
      return {
        total: 0
      };
    },
    methods: {
      incrementTotal() {
        this.total++;
      }
    }
  });

  app.component('button-counter', {
    template: '<button @click="increment">You clicked me {{ count }} times.</button>',
    data() {
      return {
        count: 0
      };
    },
    methods: {
      increment() {
        this.count++;
        this.$emit('increment');
      }
    }
  });

  app.mount('#app');
</script>

### Vue3 基础语法教程 #### 1. 模板基础 Vue3 使用 HTML 语法来定义组件的结构和内容。模板中可以包含多种类型的元素,包括但不限于 HTML 元素(如 `<div>`、`<h1>` 和 `<p>`)、Vue3 指令以及 Vue3 特定的语法[^1]。 以下是常见的 Vue3 模板语法: - **插值表达式**:通过 `{{ }}` 插入动态数据。 ```html <template> <div>{{ message }}</div> </template> <script> export default { data() { return { message: &#39;Hello, Vue!&#39; }; } }; </script> ``` - **条件渲染**:使用 `v-if` 或 `v-else` 控制 DOM 显示逻辑。 ```html <template> <div v-if="isVisible">This is visible</div> <div v-else>This is hidden</div> </template> <script> export default { data() { return { isVisible: true }; } }; </script> ``` #### 2. 指令系统 Vue 提供了一组内置指令,用于操作 DOM。常见指令包括: - **`v-bind`**:绑定属性值。 ```html <img v-bind:src="imageSrc"> <!-- 动态设置图片路径 --> ``` - **`v-on`**:监听事件并触发方法。 ```html <button v-on:click="handleClick">点击我</button> <script> export default { methods: { handleClick() { alert(&#39;按钮被点击了!&#39;); } } }; </script> ``` - **`v-model`**:实现双向数据绑定。 ```html <input type="text" v-model="value"> <script> export default { data() { return { value: &#39;&#39; }; } }; </script> ``` #### 3. 数据响应机制 Vue3 的核心特性之一是其强大的数据响应能力。当我们将一个普通 JavaScript 对象传递给 Vue 实例的数据对象时,Vue 会自动将其所有属性转换为 getter 和 setter,从而能够实时追踪变化[^4]。 示例代码展示如何创建具有响应性的数据模型: ```javascript export default { data() { return { count: 0, name: &#39;Vue&#39; }; }, watch: { count(newVal, oldVal) { console.log(`count changed from ${oldVal} to ${newVal}`); } } }; ``` #### 4. 组件化开发 Vue 推崇基于组件化的应用架构设计模式。开发者可以通过编写 `.vue` 文件构建独立可重用的 UI 零件,并将它们组合成复杂的界面[^3]。 简单例子演示单文件组件 (SFC) 结构: ```vue <!-- MyComponent.vue --> <template> <div class="my-component">{{ title }}</div> </template> <script> export default { props: [&#39;title&#39;], mounted() { console.log(&#39;MyComponent 已加载&#39;); } }; </script> <style scoped> .my-component { color: blue; } </style> ``` --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
OSZAR »