Vue.js教學欄位今天為大家介紹Vue的元件基礎知識。
到目前為止,這個系列的筆記所展示的都是一些極為簡單的單頁面 Web 應用程序,並且頁面上通常只有幾個簡單的交互元素。但在實際生產環境中,Web 應用程式的使用者介面往往是由多個複雜的頁面共同組成的。這時候,我們就需要開始注意程式碼的可重複使用性了,針對這個問題,Vue.js 框架提出的解決方案就是先將使用者介面上的元素依照不同的功能劃分成一個獨立的元件,例如導航欄、公告欄、資料表格、使用者註冊表單、使用者登入介面等。這樣一來,我們在之後的工作中就可以像玩樂高玩具一樣,根據需要將這些組件組合成各種具體的應用程式了。總而言之,元件系統是我們在學習 Vue.js 框架中必須掌握的重要概念。下面,這篇筆記將透過編寫一系列實驗範例來體驗在 Vue.js 框架中建構和使用元件的基本方法。
在所有實驗開始之前,我需要先在code
目錄中建立一個名為00_test
的目錄,以便用於存放接下來的一系列實驗項目,由於這些項目只能用來體驗Vue 元件的建構與使用方法,並沒有實際的應用功能,所以我給了它00
這個編號。那麼,下面就來開始第一個實驗吧!為此,我需要繼續在code/00_test
目錄中再建立一個名為component_1
的實驗目錄,並在該目錄下執行npm install vue
指令來安裝Vue.js 框架。最後,我只需在code/00_test/component_1
目錄下建立一個名為index.htm
的文件,並輸入以下程式碼:
nbsp;html> <meta> <meta> <meta> <title>学习 vue 组件实验(1):组件注册</title> ` <p> <say-hello></say-hello> <welcome-you></welcome-you> </p> <script></script> <script> // 全局组件注册 Vue.component('say-hello', { template: `<h1>你好, {{ you }}!`, props: ['who'], data: function() { return { you: this.who }; } }); const app = new Vue({ el: '#app', // 局部组件注册 components: { 'welcome-you': { template: `<h2>欢迎你, {{ you }}!`, props: ['who'], data: function() { return { you: this.who }; } } }, data: { who: 'vue' } }); </script>
在上述實驗中,我用兩種不同的方式分別創建並註冊了say-hello
和welcome-you
兩個元件。接下來就藉由這兩個組件來介紹一下這兩種組件的使用。首先是say-hello
元件,該元件是透過呼叫Vue.component()
方法來建立並註冊到應用程式中的,使用該方法創建的元件通常被稱之為"全域元件",我們在呼叫它的時候需要提供兩個參數:
第一個參數應該是一個字串對象,用於指定元件的名稱,該名稱也是我們要在HTML 文件中使用的自訂標籤元素,而由於HTML 程式碼是大小寫不敏感的,所以我個人會建議大家在給組件起名字的時候應該盡量一律使用小寫字母,單字之間可以使用
-
這樣分隔符號進行區隔。-
第二個參數應該是 JavaScript 對象,用來設定元件的各項特定參數。這裡定義了以下三項最基本參數:
-
template
:該參數是字串對象,用於指定該元件的HTML 模版程式碼,需要注意的是,這段程式碼說對應的DOM 物件必須有且只能有一個根節點。而這個物件在最終的 HTML 文件中將會由該元件所對應自訂標籤所代表,在這裡就是<say-hello></say-hello>
。 -
props
:此參數是字串數組,該數組中的每個元素都是該組件所對應的自訂標籤的屬性,該組件的使用者可以透過v-bind
指令將該屬性綁定到某一資料上,以便將資料傳到元件內部。例如在這裡,我在<say-hello></say-hello>
標籤中就用v-bind
指令將該標籤的who
屬性綁定到了Vue 實例對象的who
資料上,並將其傳進say-hello
元件中。 -
data
:該參數是一個函數,用於設定元件自身的數據,例如這裡的you
,我將從呼叫者那裡取得的who
資料賦值給了它。對於後者,我們可以用this
引用來取得。
當然了,除了上面三個基本參數之外,我們還可以為元件設定更多參數,例如自訂事件及其處理函數等,這些我將會在後續的程式中編寫體驗中展示。
-
下面,我们再来看welcome-you
组件的构建。如你所见,该组件是在 vue 实例的components
成员中构建并注册到应用程序中的,使用该方法创建的组件通常被称之为"局部组件"(它与全局组件的区别是,全局组件会在程序运行时全部加载,而局部组件只会在被实际用到时加载) 。该components
成员的值也是一个 JSON 格式的数据对象,该数据对象中的每一个成员都是一个局部组件,这些组件采用键/值对的方式来定义,键对应的是组件的名称,值对应的是组件参数的设置。当然了,由于局部组件的命名规则与具体参数的设置方法都与全局对象一致,这里就不再重复说明了。
需要注意的是,第一个实验项目的编写方式将 HTML 代码、Vue 实例的构建代码以及组件的构建代码糅合在了一起,这对于提高代码的可复用性这个目的来说,显然是不行的。要想解决这个问题,我们可以利用 ES6 规范新增的模块规则将这三部分代码隔离开来。为了体验这种用法,我继续开始了第二个实验。具体做法就是在code/00_test
目录中再创建一个名为component_2
的实验目录,并在该目录下执行npm install vue
命令来安装 Vue.js 框架。最后,我只需在code/00_test/component_2
目录下创建一个名为index.htm
的文件,并输入如下代码:
nbsp;html> <meta> <script></script> <script></script> <title>学习 vue 组件实验(2):以 ES6 模块的方式注册组件</title> <p> <say-hello></say-hello> </p>
在上述 HTML 代码中,我们在照常引入 vue.js 框架之后,使用模块的方式引入了main.js
脚本文件,最好在<p id="app"></p>
标签中使用了后面将要定义的组件所对应的自定义标签。接下来,我只需要在相同的目录下创建一个名为main.js
的 JavaScript 脚本文件,并在其中输入如下代码:
// import Vue from './node_modules/vue/dist/vue.js'; import sayhello from './sayhello.js'; const app = new Vue({ el: '#app', components: { 'say-hello': sayhello }, data: { who:'vue' } });
在上述 JavaScript 代码中,我首先使用了 ES6 新增的import-from
语句导入了后续要在sayhello.js
文件中构建的组件,然后在构建 Vue 实例时将其注册成了局部组件。最后,我只需在同一目录下再创建这个sayhello.js
脚本文件,并在其中输入如下代码:
const tpl = ` <p> </p><h1 id="你好-you">你好, {{ you }}!</h1> <input> `; const sayhello = { template: tpl, props : ['who'], data : function() { return { you: this.who } } }; export default sayhello;
在这部分代码中,我先定义了一个局部组件,然后再使用 ES6 新增的export default
语句将其导出为模块。当然,考虑到各种 Web 浏览器对 ES6 规范的实际支持情况,以及 Vue.js 框架本身使用的是 CommonJS 模块规范,所以上述实验依然可能不是编写 Vue.js 项目的最佳方式,其中可能还需要配置 babel 和 webpack 这样的转译和构建工具来辅助。在下一篇笔记中,我就来记录如何使用这些工具来构建具体的 vue 应用程序。
相关学习推荐:js视频教程
以上是Vue.js 學習之四:Vue 元件基礎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Vue组件通信:使用$destroy进行组件销毁通信在Vue开发中,组件通信是非常重要的一个方面。Vue提供了多种方式来实现组件通信,比如props和emit、vuex等。本文将介绍另一种组件通信方式:使用$destroy进行组件销毁通信。在Vue中,每个组件都有一个生命周期,其中包含了一系列的生命周期钩子函数。组件的销毁也是其中之一,Vue提供了一个$de

随着前端技术的不断发展,Vue已经成为了前端开发中的热门框架之一。在Vue中,组件是其中的核心概念之一,它可以将页面分解为更小,更易管理的部分,从而提高开发效率和代码复用性。本文将重点介绍Vue如何实现组件的复用和扩展。一、Vue组件复用mixinsmixins是Vue中的一种共享组件选项的方式。Mixins允许将多个组件的组件选项合并成一个对象,从而最大

Vue实战:日期选择器组件开发引言:日期选择器是在日常开发中经常用到的一个组件,它可以方便地选择日期,并提供各种配置选项。本文将介绍如何使用Vue框架来开发一个简单的日期选择器组件,并提供具体的代码示例。一、需求分析在开始开发之前,我们需要进行需求分析,明确组件的功能和特性。根据常见的日期选择器组件功能,我们需要实现以下几个功能点:基础功能:能够选择日期,并

Vue组件通信:使用watch和computed进行数据监听Vue.js是一款流行的JavaScript框架,它的核心思想是组件化。在一个Vue应用中,不同的组件之间需要进行数据的传递和通信。在这篇文章中,我们将介绍如何使用Vue的watch和computed来进行数据的监听和响应。watch在Vue中,watch是一个选项,它可以用来监听一个或多个属性的变

Vue是一款流行的JavaScript框架,它提供了丰富的工具和功能,可以帮助我们构建现代化的Web应用程序。尽管Vue本身已经提供了许多实用的功能,但有时候我们可能需要使用第三方库来扩展Vue的能力。本文将介绍在Vue项目中如何使用第三方库,并提供具体的代码示例。1.引入第三方库在Vue项目中使用第三方库的第一步是引入它们。我们可以通过以下几种方式来引入

深入理解Vue的组件生命周期,需要具体代码示例引言:Vue.js是一款渐进式JavaScript框架,以其简洁易学、高效灵活的特性而备受开发者的青睐。在Vue的组件化开发中,了解组件的生命周期是重要的一环。本文将深入探讨Vue组件的生命周期,并提供具体的代码示例,帮助读者更好地理解和应用。一、Vue组件的生命周期图示Vue组件的生命周期可以看做是组件

在Vue开发中,我们经常会遇到处理复杂数据结构和算法的情况。这些问题可能涉及大量的数据操作、数据同步、性能优化等方面。本文将介绍一些处理复杂数据结构和算法的注意事项和技巧,帮助开发者更好地应对这些挑战。一、数据结构的选择在处理复杂数据结构和算法时,选择合适的数据结构非常重要。Vue提供了丰富的数据结构和方法,开发者可以根据实际需求选择合适的数据结构。常用的数

Vue组件中如何实现多种数据交互方式的切换在Vue组件开发中,经常会遇到需要切换不同的数据交互方式的场景,比如通过API请求数据、通过表单输入数据或者通过WebSocket实时推送数据等等。本文将介绍如何在Vue组件中实现这种多种数据交互方式的切换,并且会提供具体的代码示例。方式一:API请求数据在某些情况下,我们需要通过API请求数据来获取后台的数据。下面


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Linux新版
SublimeText3 Linux最新版

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),