Vue 2.0入門基礎知識之全局API

来源:http://www.cnblogs.com/jiangcheng-langzi/archive/2017/10/29/7672579.html
-Advertisement-
Play Games

3.全局API 3-1. Vue.directive 自定義指令 Vue.directive用於自定義全局的指令 實例如下: 效果為p標簽顯示為紅色,directive指令中的參數1(實例中的‘sq’)可以類比前篇文章內部指令的bind、on;參數2是一個回調函數,這個回調函數包含三個參數(el:即 ...


3.全局API

3-1. Vue.directive 自定義指令

Vue.directive用於自定義全局的指令

實例如下:

 1 <body>
 2     <div id="app">
 3         <p v-sq="color">{{message}}</p>
 4     </div>
 5 </body>
 6 <script>
 7     Vue.directive('sq', function (el, binding, vnode) {
 8         el.style.color = binding.value;
 9     });
10     var vm = new Vue({
11         el: "#app",
12         data: {
13             message: "前端工程師",
14             color: "red"
15         }
16     });
17 </script>

效果為p標簽顯示為紅色,directive指令中的參數1(實例中的‘sq’)可以類比前篇文章內部指令的bind、on;參數2是一個回調函數,這個回調函數包含三個參數(el:即指令綁定的元素,實例中的el即為p元素;binding:包含指令的相關信息,可以通過console.log列印出來;vnode:即Vue編譯生成的虛擬節點。虛擬節點即vue2.0中引入的新功能,用js對象替代DOM節點,改進直接操作DOM代價大引發的性能問題)。

指令都是有生命周期的,同樣地,自定義指令有5個生命周期,分別是:bind、inserted、update、componentUpdated、unbind

3-2  Vue.extend 構造器的延伸

extend中文即延伸、擴展的意思。Vue.extend返回的即是一個“擴展實例構造器,並掛載到自定義元素上。

實例如下:

 1 <body>
 2     <div id="app">
 3       <p class="gz"></p>
 4     </div>
 5    <p class="gz"></p>
 6 </body>
 7 <script>
 8   var author=Vue.extend({
 9        template:"<a>最終解釋權歸作者所有</a>"
10    })
11    new author().$mount('.gz');
12 </script>

p標簽會替換成template的值,但僅限於第一個p標簽,因為只掛載了一次,實例中用的是class,將其換成id或標簽同樣適用。

3-3 Vue.set全局操作

Vue.set的作用就是在構造器外部操作構造器內部的數據、屬性或者方法。Vue.set存在的意義是彌補js語言的缺陷,因為Vue不能自動檢測數組的兩種變動:1.利用索引設置一個元素;2.修改數組的長度。用Vue.set更新數據時,依次傳入三個參數①數組名稱②索引③元素

3-4 Vue的生命周期

Vue的生命周期即鉤子函數。包括10共,按照順序依次為:beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、activated、deactivated、beforeDastroy、destroyed。詳細的結構圖可參考vue官網的圖例介紹。

3-5 Template模板

Template模板大致有三種寫法:

1.類似前面講到Vue.extend掛載時的template寫法,但不是雙引號包括內容,而是``(英文tab鍵)

2.利用template模板:<template></template>。這個類似於Backbone中模板的寫法 

3.在script標簽中寫入模板內容,不過此時type為"x-tempate".。這種寫法可以將模板從外部導入。

另外需要強調一點、vue2.0中規定模板內容必須要要有一個根元素,一般地用div包裹住整個模板內容。

3-6 component組件

component組件本質上就是自定義的標簽。component組件分為全局化註冊組件和局部註冊組件,兩者的不同之處在於使用的範圍(類比於全局變數和局部變數)。

3-6-1 component組件的註冊

1.全局化註冊組件

實例如下:

 1 <body>
 2     <div id="app">
 3         <plp></plp>
 4     </div>
 5 </body>
 6 <script>
 7     Vue.component('plp', {
 8         template: `<a>最終解釋權歸作者所有</a>`
 9     })
10     var vm = new Vue({
11         el: "#app"
12     })
13 </script>

2.局部註冊組件

實例如下:

 1 <body>
 2     <div id="app">
 3         <plp></plp>
 4     </div>
 5 </body>
 6 <script>
 7     var vm = new Vue({
 8         el: "#app",
 9         components: {
10             'plp': {
11                 template: `<p>最終解釋權歸作者所有</p>`
12             }
13         }
14     })
15 </script>

3-6-2 component組件的props屬性

component組件的props屬性就是用來設置和獲取標簽上的屬性值。

實例如下:

 1 <body>
 2     <div id="app">
 3         <plp city="YiChang"></plp>
 4     </div>
 5 </body>
 6 <script>
 7     var vm = new Vue({
 8         el: "#app",
 9         components: {
10             'plp': {
11                 props:['city'],
12                 template: `<p>I like {{city}}</p>`
13             }
14         }
15     })
16 </script>

首先component組件的props選項通過['city']獲取自定義標簽該屬性的值,然後在tepmlate中通過{{city}}插值的方法設置屬性值。需要註意的一點是自定義標簽的屬性取值儘量避免使用'-',如有必要使用小駝峰命名,可以聯想到通過原生JS設置元素的顏色;elements.style.backgroundColor,而不是element.style.background-color

component組件傳值,使用:bind綁定即可。

3-6-3 component父子組件

component父子組件就是在一個component組件里再寫一個component組件。

實例如下:

 1 <body>
 2     <div id="app">
 3         <plp :city="like"></plp>
 4     </div>
 5 </body>
 6 <script>
 7     var vm = new Vue({
 8         el: "#app",
 9         data: {
10             like: 'YiChang'
11         },
12         components: {
13             'plp': {
14                 props: ['city'],
15                 template: `<p>I like {{city}} <ppl></ppl></p>`,
16                 components: {
17                     'ppl': {
18                         template: `<span style="color:red">very much!</span>`
19                     }
20                 }
21             }
22         }
23     })
24 </script>

實例中涉及到component組件嵌套,在plp組件中嵌套組件ppl。當然實際開發中組件的嵌套遠比這個複雜,必要的時候可以在構造器外部定義聲明局部component組件。

3-6-4 component標簽

<component></component>標簽是Vue框架自定義的標簽,它的用途就是可以動態綁定我們的組件,根據數據的不同更換不同的組件。

好啦,關於Vue的全局API就介紹到這裡,下一篇關於Vue的基礎知識,我們聊聊Vue2.0的選項以及實例內置組件~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 準備一下,近段時間,需要把Excel的數據導入資料庫中。引用命名空間: 你可以寫一個方法,是去讀取Excel文檔的方法,返回DataSet數據集: private DataSet ImportExcelToDataSet(string virtualPath, string sqlQueryStat ...
  • 上下文 記的學英語的時候,總是不記的某個詞是什麼意思,然後就看不下去了,只能問周圍的同學或者老師或者去查詞典,他們的建議是通過上下文去推測這個詞大概的意思,反正我那會上學時沒理解,所以英文一直比較差。 現在英語水平也沒提高多少,儘管有點領會。 後來慢慢理解了一些,因為有些詞有很多種意思,放在某個場景 ...
  • 一般而言,工廠模式分為3種,簡單工廠模式,工廠方法模式,抽象工廠模式。這三種工廠模式逐層深入吧。 一,從springWeb.jar包使用抽象工廠模式的一個例子聊起 之前對spring各種痴迷,所以在需要發送http請求時,用了spring自帶的http客戶端,上代碼: 上UML圖,首先是工廠類: 產 ...
  • 目標 研發一套獨立的消息系統,此系統進行集中配置管理供各業務系統使用,用於支撐站內信、簡訊通知、簡訊驗證碼、郵件、微信消息、APP消息、IM等消息形式。 架構 1) 基於消息隊列採用發佈、訂閱模式。消息的生產者為對外的消息介面,接收業務系統消息後將消息寫入到消息隊列指定的topic,訂閱者對消息進行 ...
  • 這段時候一直在研究ELK框架,主要集成在對fluentd和nxlog的研究上,國內文章不多,主要看了一下官方的API,配合自己的理解,總結了一下,希望可以幫到剛入行的朋友們! Fluentd(日誌收集與過濾,server) Fluentd是一個免費,而且完全開源的日誌管理工具,簡化了日誌的收集、處理 ...
  • 反向生成url 一.常規的url系統: from django.conf.urls import url from django.shortcuts import HttpResponse, render, redirect def index(request): return HttpRespon ...
  • 官方文檔地址為 http://cloud.spring.io/spring-cloud-static/Dalston.SR3/#_spring_cloud_config 經過了幾個課題的翻譯,這次就不放原文了。 ...
  • 利用idea和maven作為開發環境,通過springboot+mysql+Jpa完成主要後端開發後,現在往工程里引入Redis資料庫緩存和前端freemarker時,發現工程不識別前端freemark的ftl文件。 經過半夜的奮戰把問題解決了。現在把錯誤消息,發生問題時的情景,重試的手段以及最終問 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...