vue3-quickstart

教程官方quickstart


Vue 组件实例  !!!!!!
Vue 组件实例的创建
在 Vue.js 中,创建一个组件实例通常通过 createApp 方法和组件选项对象来实现。

组件选项对象可以包含如下属性:

data: 数据对象,用于存储组件的响应式数据。
props: 属性数组或对象,用于接收父组件传递的数据。
computed: 计算属性对象,根据响应式依赖进行动态计算。
methods: 方法对象,包含组件内部的函数和操作。
watch: 监听器对象,用于监听数据变化并做出响应。
template: 字符串,定义组件的模板结构。
render: 函数,用于渲染组件的虚拟 DOM。
setup: 函数,用于设置组件的初始状态、数据、计算属性和监听器等(Vue 3 中)。



v-text <p v-text="message"></p> 更新元素的 textContent,类似于插值 {{ }},但是是单向绑定。
v-html <div v-html="htmlContent"></div> 更新元素的 innerHTML,用于输出 HTML。
v-model <input v-model="value"> 在表单控件元素上创建双向数据绑定,将输入字段与数据属性同步。
v-show <div v-show="isVisible"></div> 根据表达式的真假切换元素的显示与隐藏,使用 CSS 的 display 属性。
v-if <p v-if="isVisible">Visible</p> 根据表达式的真假条件性地渲染元素,当条件为假时元素将从 DOM 中移除。
v-else <p v-if="isVisible">Visible</p><p v-else>Not Visible</p> v-if 的补充指令,用于显示条件为假时的备用内容。
v-else-if <template v-if="type === 'A'"><p>Type A</p></template><template v-else-if="type === 'B'"><p>Type B</p></template> 连续使用于 v-if 和 v-else 之后,用于多条件判断。
v-for <li v-for="(item, index) in items" :key="index">{{ item }}</li> 遍历数组或对象的每个元素,生成相应数量的元素。
v-on <button v-on:click="handleClick">Click me</button> 绑定事件监听器,用于监听 DOM 事件,可以简写为 @。
v-bind <img v-bind:src="imageSrc"> 动态绑定 HTML 属性,可以简写为 :。
v-slot <template v-slot:header><h2>Header</h2></template> 用于具名插槽的语法,提供插入子组件内容的位置。
v-pre <div v-pre>{{ message }}</div> 跳过这个元素和它的所有子元素的编译过程,用于显示原始 Mustache 标签。
v-cloak [v-cloak] { display: none; } 在 Vue 实例编译完成前隐藏模板内容,避免显示未编译的 Mustache 标签。
v-once <p v-once>{{ message }}</p> 只渲染元素和组件一次,不会随后续数据变化而更新。


Vue 中的选项是使用 Options API 时在 Vue 实例上可用的不同选项。

Vue 实例的一些常见选项:

el - 指定 Vue 实例挂载的 DOM 元素。如果不提供,则 Vue 实例不会自动挂载。

data - 定义了 Vue 实例的数据对象。Vue 实例的模板和计算属性、方法、观察者等都可以访问这些数据。

computed - 包含计算属性,这些属性的值是基于它们的依赖进行缓存的,只有当依赖发生变化时,计算属性才会重新计算。

methods - 定义了 Vue 实例的方法,可以在模板中通过事件监听器调用。

watch - 包含一个或多个观察者,用于观察和响应 Vue 实例中数据的变化。

props - 定义了组件可以接收的外部数据。

components - 允许在 Vue 实例中注册自定义组件。

directives - 允许注册全局自定义指令。

filters - 定义了过滤器,可以在模板中使用,用于文本的格式化。

model - 指定组件使用的自定义 v-model 属性和事件。

provide/inject - 提供依赖注入的能力,允许跨组件传递数据。

lifecycle hooks - 包括 onMounted, onUpdated, onUnmounted 等生命周期钩子,用于在 Vue 实例的不同阶段执行代码。

template - 定义了 Vue 实例的 HTML 模板。

render function - 允许使用 JavaScript 函数来渲染组件,提供了更高级的自定义能力。

errorCaptured - 用于全局捕获 Vue 实例的错误。

emits - 定义了组件可以触发的事件。

setup - Vue 3 的 Composition API 中的入口函数,用于组织组件的逻辑。



Vue.js 中的生命周期钩子函数是指在组件实例的创建、更新、销毁等过程中,Vue 自动调用的一系列方法。在这些步骤中,组件会触发一系列称为"生命周期钩子"的函数,允许开发者在特定时机执行自定义代码。




1.首先页面中引入 vue.global.js 文件来测试学习
<html>
    <head>
        <title>test with vue.global.js</title>
        <script type="text/javascript" src="vue.global.js" ></script>
    </head>
    <body>
        <div id="hello-vue" class="demo">
          {{message}}
        </div>
        <script type="text/javascript" >
            const HelloVueApp = {
              data() {
                return {
                  message: 'Hello Vue World'
                }
              }
            }
            Vue.createApp(HelloVueApp).mount('#hello-vue')
        </script>
    </body>
</html>

创建应用: 
Vue3 中的应用是通过使用 createApp 函数来创建的,语法格式如下:
const app = Vue.createApp({ /* 选项 */ })

传递给 createApp 的选项用于配置根组件。在使用 mount() 挂载应用时,该组件被用作渲染的起点。

一个简单的实例:
Vue.createApp(HelloVueApp).mount('#hello-vue')
createApp 的参数是根组件(HelloVueApp),在挂载应用时,该组件是渲染的起点

一个应用需要被挂载到一个 DOM 元素中,以上代码使用 mount('#hello-vue') 将 Vue 应用 HelloVueApp 挂载到 <div id="hello-vue"></div> 中。


输出对象属性和函数返回值:
{{ }} 用于输出对象属性和函数返回值。{{ message }} 对应应用中 message 的值。



data 选项
data 选项是一个函数。Vue 在创建新组件实例的过程中调用此函数。它应该返回一个对象,然后 Vue 会通过响应性系统将其包裹起来,并以 $data 的形式存储在组件实例中。

以下实例属性仅在实例首次创建时被添加,所以你需要确保它们都在 data 函数返回的对象中

const app = Vue.createApp({
  data() {
    return { count: 4 }
  }
})

const vm = app.mount('#app')

document.write(vm.$data.count) // => 4
document.write("<br>")
document.write(vm.count)       // => 4
document.write("<br>")
// 修改 vm.count 的值也会更新 $data.count
vm.count = 5
document.write(vm.$data.count) // => 5
document.write("<br>")
// 反之亦然
vm.$data.count = 6
document.write(vm.count) // => 6

示例代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 菜鸟教程(runoob.com)</title>
<script src="https://cdn.staticfile.net/vue/3.2.36/vue.global.min.js"></script>
</head>
<body>
<div id="app" class="demo"></div>

<script>
const app = Vue.createApp({
  data() {
    return { count: 0x91 }
  }
})

const vm = app.mount('#app')

document.write(vm.$data.count) // => 4
document.write("<br>")
document.write(vm.count)       // => 4
document.write("<br>")
// 修改 vm.count 的值也会更新 $data.count
vm.count = 5
document.write(vm.$data.count) // => 5
document.write("<br>")
// 反之亦然
vm.$data.count = 6
document.write(vm.count) // => 6
</script>
</body>
</html>



方法
我们可以在组件中添加方法,使用 methods 选项,该选项包含了所需方法的对象
以下实例我们添加了 methods 选项,选项中包含了 increment() 方法:

const app = Vue.createApp({
  data() {
    return { count: 4 }
  },
  methods: {
    increment() {
      // `this` 指向该组件实例
      this.count++
    }
  }
})

const vm = app.mount('#app')

document.write(vm.count) // => 4
document.write("<br>")
vm.increment()

document.write(vm.count) // => 5

示例代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 菜鸟教程(runoob.com)</title>
<script src="https://cdn.staticfile.net/vue/3.2.36/vue.global.min.js"></script>
</head>
<body>
<div id="ap1" class="demo"></div>

<script>
const app = Vue.createApp({
  data() {
    return { count: 0x24 }
  },
  methods: {
    increment() {
      // `this` 指向该组件实例
      this.count++
    }
  }
})

const vm = app.mount('#ap1')

document.write(vm.count) // => 4
document.write("<br>")
vm.increment()

document.write(vm.count) // => 5
</script>
</body>
</html>