Vue.js高阶学习和常用知识(二)

简介: @[TOC](目录)Vue.js 是一个流行的 Web 前端框架,它由 Evan You 于 2014 年创建。Vue.js 的设计目标是简单、灵活和易于使用,同时具有高性能和可扩展性。Vue.js 基于组件化的思想,将页面划分为多个组件,每个组件代表页面中的一个部分,可以独立开发、测试和部署。组件之间通过数据传递、事件监听和生命周期钩子等方式相互交互,使得开发人员可以更加方便地构建复杂的 Web 应用程序。Vue.js 的核心库包括 Vue 实例、组件、指令、计算属性、监听器、生命周期钩子等,这些特性共同构成了 Vue.js 的基本功能。除此之外,Vue.js 还提供了很多插件和工具,

@TOC
Vue.js 是一个流行的 Web 前端框架,它由 Evan You 于 2014 年创建。Vue.js 的设计目标是简单、灵活和易于使用,同时具有高性能和可扩展性。
Vue.js 基于组件化的思想,将页面划分为多个组件,每个组件代表页面中的一个部分,可以独立开发、测试和部署。组件之间通过数据传递、事件监听和生命周期钩子等方式相互交互,使得开发人员可以更加方便地构建复杂的 Web 应用程序。
Vue.js 的核心库包括 Vue 实例、组件、指令、计算属性、监听器、生命周期钩子等,这些特性共同构成了 Vue.js 的基本功能。除此之外,Vue.js 还提供了很多插件和工具,例如 Vue Router、Vuex、Vue CLI 等,这些插件和工具可以让开发人员更加方便地开发和部署 Vue.js 应用程序。
在本文中,我们将详细介绍 Vue.js 的核心库和一些常用的插件和工具,帮助读者深入理解 Vue.js 的工作原理和应用场景。

1. Vue 实例

Vue.js 的核心概念之一是 Vue 实例,它是一个代表页面中的一个元素的 JavaScript 对象。每个 Vue 实例都包含一个数据对象、一个方法对象和一个渲染函数。开发人员可以通过 new Vue() 创建一个 Vue 实例,并通过 el 属性将该实例挂载到页面中的某个元素上。
例如,下面的代码创建了一个 Vue 实例,并将其挂载到 id 为 "app" 的元素上:

var app = new Vue({  
 el: '#app',  
 data: {  
   message: 'Hello Vue!',  
 },  
 methods: {  
   reverseMessage: function () {  
     this.message = this.message.split('').reverse().join('')  
   }  
 }  
})

在 Vue.js 中,开发人员可以通过 data 对象定义 Vue 实例的数据,并通过 methods 对象定义 Vue 实例的方法。Vue 实例的数据和方法可以在模板中使用,例如:

<div id="app">  
 <p>{
  { message }}</p>  
 <button v-on:click="reverseMessage">Reverse Message</button>  
</div>

上面的模板中,我们使用了{ { message }}语法来显示 Vue 实例的数据,并使用了 v-on 指令来监听按钮的 click 事件,并调用 Vue 实例的方法 reverseMessage。

2. 组件

Vue.js 的另一个核心概念是组件,组件是 Vue.js 的模板中的基本构建块,可以重复使用和组合。组件是一个 JavaScript 对象,它包含一个模板、一个数据对象、一个方法对象和一个渲染函数。开发人员可以通过 Vue.js 的组件库或者自己编写组件来构建页面。
例如,下面的代码创建了一个名为 "HelloWorld" 的组件,该组件包含一个文本 "Hello World!":

Vue.component('hello-world', {  
 template: 'Hello World!',  
})

在上面的代码中,我们使用了 Vue.js 的组件库中的 hello-world 组件,并将其挂载到页面中的某个元素上。在模板中,我们可以使用该组件来构建页面,例如:

<div id="app">  
 <hello-world></hello-world>  
</div>

除了使用组件库中的组件之外,开发人员还可以自己编写组件。自己编写的组件需要使用 Vue.js 的单文件组件 (SFC) 格式来编写,例如:

<template>  
 <div>  
   Hello World!  
 </div>  
</template>
<script>  
export default {  
 name: 'HelloWorld',  
 template: '#HelloWorld'  
}
</script>

在上面的代码中,我们使用了 Vue.js 的 SFC 格式来编写一个名为 "HelloWorld" 的组件,该组件包含一个模板,并在 script 标签中定义了组件的 name 和 template。开发人员可以通过 import 语句将组件导入到其他文件中,并使用 Vue.js 的组件生命周期钩子来控制组件的状态和行为。

3. 指令

Vue.js 的指令是一个特殊的语法,它用于在模板中绑定数据和方法。指令是一个字符串,它包含一个冒号 (:) 和一个方法名称,例如:

<div id="app">  
 <p v-bind:message="message"></p>  
</div>

在上面的代码中,我们使用了 v-bind 指令来将 Vue 实例的 message 数据绑定到 p 元素的 message 属性上。这样,当 Vue 实例的 message 数据发生变化时,p 元素的 message 属性也会自动更新。
Vue.js 还提供了许多其他指令,例如 v-if、v-else-if、v-else、v-for、v-show 等,这些指令可以帮助开发人员更方便地操作 DOM 元素和数据。

4. 计算属性

Vue.js 的计算属性是一个特殊的属性,它用于在 Vue 实例中计算和更新数据。计算属性的值可以基于其他属性或者方法的值进行计算,当这些属性或方法的值发生变化时,计算属性的值也会自动更新。
例如,下面的代码定义了一个名为 message 的计算属性,它基于 Vue 实例的 name 属性计算出一个问候语:

var app = new Vue({
     
 el: '#app',  
 data: {
     
   name: 'John'  
 },  
 computed: {
     
   message: function () {
     
     return 'Hello, ' + this.name + '!'  
   }  
 }  
})

在上面的代码中,我们定义了一个 message 计算属性,它基于 Vue 实例的 name 属性计算出一个问候语。当 Vue 实例的 name 属性发生变化时,message 计算属性的值也会自动更新。在模板中,我们可以使用 { { message }} 语法来显示 message 计算属性的值。

5. 监听器

Vue.js 的监听器是一个特殊的函数,它用于监听 Vue 实例的数据变化。当 Vue 实例的数据发生变化时,监听器函数会被自动调用。监听器函数可以接受一个或多个参数,这些参数表示发生变化的数据。
例如,下面的代码定义了一个名为 message 的监听器,它用于监听 Vue 实例的 message 数据变化:

var app = new Vue({
     
 el: '#app',  
 data: {
     
   message: 'Hello Vue!'  
 },  
 methods: {
     
   reverseMessage: function () {
     
     this.message = this.message.split('').reverse().join('')  
   }  
 },  
 watch: {
     
   message: function (value) {
     
     console.log('Message has changed to: ' + value)  
   }  
 }  
})

在上面的代码中,我们定义了一个 message 监听器,它用于监听 Vue 实例的 message 数据变化。当 Vue 实例的 message 数据发生变化时,watch 函数会被自动调用,并传入发生变化的数据作为参数。

6. 生命周期钩子

Vue.js 的生命周期钩子是一个特殊的函数,它用于控制 Vue 实例的生命周期。生命周期钩子函数可以在 Vue 实例的创建、挂载、更新、销毁等不同阶段被调用。
例如,下面的代码定义了一个名为 beforeCreate 的生命周期钩子,它用于在 Vue 实例创建之前做些准备工作:

var app = new Vue({
     
 el: '#app',  
 data: {
     
   message: 'Hello Vue!'  
 },  
 beforeCreate: function () {
     
   console.log('Before create')  
 },  
 created: function () {
     
   console.log('Created')  
 },  
 beforeMount: function () {
     
   console.log('Before mount')  
 },  
 mounted: function () {
     
   console.log('Mounted')  
 },  
 beforeUpdate: function () {
     
   console.log('Before update')  
 },  
 updated: function () {
     
   console.log('Updated')  
 },  
 beforeDestroy: function () {
     
   console.log('Before destroy')  
 },  
 destroyed: function () {
     
   console.log('Destroyed')  
 }  
})

在上面的代码中,我们定义了一系列生命周期钩子函数,这些函数分别在 Vue 实例的创建、挂载、更新、销毁等不同阶段被调用。下面是这些生命周期钩子函数的具体调用顺序:

  1. beforeCreate:在 Vue 实例创建之前被调用。此时,组件的 data、methods、computed 等数据都已初始化,但 DOM 元素还未被创建。
  2. created:在 Vue 实例创建完成之后被调用。此时,组件的 data、methods、computed 等数据都已初始化,且 DOM 元素已被创建。
  3. beforeMount:在 Vue 实例的模板编译完成并挂载到页面中之前被调用。此时,组件的模板已经被编译成渲染函数,但尚未将渲染函数挂载到页面中。
  4. mounted:在 Vue 实例的模板编译完成并挂载到页面中之后被调用。此时,组件的模板已经被编译成渲染函数,且渲染函数已被挂载到页面中。
  5. beforeUpdate:在 Vue 实例的数据更新之前被调用。此时,组件的 data 数据即将发生变化,但尚未重新渲染模板。
  6. updated:在 Vue 实例的数据更新之后被调用。此时,组件的 data 数据已经发生变化,且模板已经重新渲染。
  7. beforeDestroy:在 Vue 实例销毁之前被调用。此时,组件实例仍然完全可用,可以访问 data、methods 等数据。
  8. destroyed:在 Vue 实例销毁之后被调用。此时,组件实例已经完全销毁,无法访问 data、methods 等数据。
    通过在这些生命周期钩子函数中添加相应的逻辑,我们可以控制 Vue 实例在不同阶段的行为,例如在创建时做一些初始化操作,在销毁时做一些清理工作等。
相关文章
|
25天前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱前端的大一学生,专注于JavaScript与Vue,正向全栈进发。博客分享Vue学习心得、命令式与声明式编程对比、列表展示及计数器案例等。关注我,持续更新中!🎉🎉🎉
30 1
vue学习第一章
|
25天前
|
JavaScript 前端开发 索引
vue学习第三章
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中的v-bind指令,包括基本使用、动态绑定class及style等,希望能为你的前端学习之路提供帮助。持续关注,更多精彩内容即将呈现!🎉🎉🎉
24 1
vue学习第三章
|
25天前
|
缓存 JavaScript 前端开发
vue学习第四章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中计算属性的基本与复杂使用、setter/getter、与methods的对比及与侦听器的总结。如果你觉得有用,请关注我,将持续更新更多优质内容!🎉🎉🎉
35 1
vue学习第四章
|
25天前
|
JavaScript 前端开发 算法
vue学习第7章(循环)
欢迎来到瑞雨溪的博客,一名热爱JavaScript和Vue的大一学生。本文介绍了Vue中的v-for指令,包括遍历数组和对象、使用key以及数组的响应式方法等内容,并附有综合练习实例。关注我,将持续更新更多优质文章!🎉🎉🎉
23 1
vue学习第7章(循环)
|
25天前
|
JavaScript 前端开发
vue学习第九章(v-model)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript与Vue的大一学生,自学前端2年半,正向全栈进发。此篇介绍v-model在不同表单元素中的应用及修饰符的使用,希望能对你有所帮助。关注我,持续更新中!🎉🎉🎉
28 1
vue学习第九章(v-model)
|
25天前
|
JavaScript 前端开发 开发者
vue学习第十章(组件开发)
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文深入讲解Vue组件的基本使用、全局与局部组件、父子组件通信及数据传递等内容,适合前端开发者学习参考。持续更新中,期待您的关注!🎉🎉🎉
37 1
vue学习第十章(组件开发)
|
25天前
|
JavaScript 前端开发 索引
JavaScript学习第二章--字符串
本文介绍了JavaScript中的字符串处理,包括普通字符串和模板字符串的使用方法及常见字符串操作方法如`charAt`、`concat`、`endsWith`等,适合前端学习者参考。作者是一位热爱前端技术的大一学生,专注于分享实用的编程技巧。
21 2
|
25天前
|
存储 JavaScript 前端开发
JavaScript学习第一章
本文档介绍了JavaScript的基础知识,包括其在网页中的作用、如何通过JavaScript动态设置HTML元素的CSS属性,以及JavaScript中的变量类型(`var`、`let`、`const`)和数据类型(基本数据类型与引用数据类型)。通过实例代码详细解释了JavaScript的核心概念,适合初学者入门学习。
46 1
|
25天前
|
JavaScript 前端开发
vue学习第五章
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。自学前端2年半,正向全栈进发。如果你从我的文章中受益,欢迎关注,我将持续分享更多优质内容。你的支持是我最大的动力!🎉🎉🎉
25 1
|
25天前
|
JavaScript 前端开发
vue学习第六章(条件显示)
欢迎来到我的博客!我是瑞雨溪,一名自学前端两年半的大一学生,擅长JavaScript与Vue,正向全栈进发。本篇介绍v-if、v-else、v-elseif及v-show的使用方法,附带实例演示。希望我的分享能帮到你,欢迎关注,持续更新中!🎉🎉🎉
21 1