vue.js

来源:https://www.cnblogs.com/zhenghongxin/archive/2019/03/25/10594645.html
-Advertisement-
Play Games

最近開發公司vue前端項目,做一下筆記,偶爾上來查漏補缺 Vue指令之v-bind的三種用法 直接使用指令v-bind 使用簡化指令: 在綁定的時候,拼接綁定內容::title="btnTitle + ', 這是追加的內容'" Vue指令之v-on的縮寫和事件修飾符 事件修飾符: .stop 阻止冒 ...


最近開發公司vue前端項目,做一下筆記,偶爾上來查漏補缺

Vue指令之v-bind的三種用法

  1. 直接使用指令v-bind

  2. 使用簡化指令:

  3. 在綁定的時候,拼接綁定內容::title="btnTitle + ', 這是追加的內容'"

Vue指令之v-on的縮寫事件修飾符

事件修飾符:

  • .stop 阻止冒泡

  • .prevent 阻止預設事件

  • .capture 添加事件偵聽器時使用事件捕獲模式

  • .self 只當事件在該元素本身(比如不是子元素)觸發時觸發回調

  • .once 事件只觸發一次

在Vue中使用樣式

使用class樣式

  1. 數組

<h1 :class="['red', 'thin']">這是一個H1</h1>
  1. 數組中使用三元表達式

<h1 :class="['red', 'thin', isactive?'active':'']">這是一個H1</h1>
  1. 數組中嵌套對象

<h1 :class="['red', 'thin', {'active': isactive}]">這是一個H1</h1>
  1. 直接使用對象

<h1 :class="{red:true, italic:true, active:true, thin:true}">這是一個H1</h1>

使用內聯樣式

  1. 直接在元素上通過 :style 的形式,書寫樣式對象

<h1 :style="{color: 'red', 'font-size': '40px'}">這是一個善良的H1</h1>
  1. 將樣式對象,定義到 data 中,並直接引用到 :style

  • 在data上定義樣式:

data: {
      h1StyleObj: { color: 'red', 'font-size': '40px', 'font-weight': '200' }
}
  • 在元素中,通過屬性綁定的形式,將樣式對象應用到元素中:

<h1 :style="h1StyleObj">這是一個善良的H1</h1>
  1. :style 中通過數組,引用多個 data 上的樣式對象

  • 在data上定義樣式:

data: {
      h1StyleObj: { color: 'red', 'font-size': '40px', 'font-weight': '200' },
      h1StyleObj2: { fontStyle: 'italic' }
}
  • 在元素中,通過屬性綁定的形式,將樣式對象應用到元素中:

<h1 :style="[h1StyleObj, h1StyleObj2]">這是一個善良的H1</h1>

 

Vue指令之v-forkey屬性

  1. 迭代數組

  <ul>
   <li v-for="(item, i) in list">索引:{{i}} --- 姓名:{{item.name}} --- 年齡:{{item.age}}</li>
  </ul>
  1. 迭代對象中的屬性

    <!-- 迴圈遍歷對象身上的屬性 -->

  <div v-for="(val, key, i) in userInfo">{{val}} --- {{key}} --- {{i}}</div>
  1. 迭代數字

  <p v-for="i in 10">這是第 {{i}} 個P標簽</p>

2.2.0+ 的版本里,當在組件中使用 v-for 時,key 現在是必須的。

過濾器

概念:Vue.js 允許你自定義過濾器,可被用作一些常見的文本格式化。過濾器可以用在兩個地方:mustache 插值和 v-bind 表達式。過濾器應該被添加在 JavaScript 表達式的尾部,由“管道”符指示;

私有過濾器

  1. HTML元素:

  <td>{{item.ctime | dataFormat('yyyy-mm-dd')}}</td>
  1. 私有 filters 定義方式:  filters: { // 私有局部過濾器,只能在 當前 VM 對象所控制的 View 區域進行使用


dataFormat(input, pattern = "") { // 在參數列表中 通過 pattern="" 來指定形參預設值,防止報錯 ​ var dt = new Date(input); ​ // 獲取年月日 ​ var y = dt.getFullYear(); ​ var m = (dt.getMonth() + 1).toString().padStart(2, '0'); ​ var d = dt.getDate().toString().padStart(2, '0'); ​ ​ // 如果 傳遞進來的字元串類型,轉為小寫之後,等於 yyyy-mm-dd,那麼就返回 年-月-日 ​ // 否則,就返回 年-月-日 時:分:秒 ​ if (pattern.toLowerCase() === 'yyyy-mm-dd') { ​ return `${y}-${m}-${d}`; ​ } else { ​ // 獲取時分秒 ​ var hh = dt.getHours().toString().padStart(2, '0'); ​ var mm = dt.getMinutes().toString().padStart(2, '0'); ​ var ss = dt.getSeconds().toString().padStart(2, '0'); ​ return `${y}-${m}-${d} ${hh}:${mm}:${ss}`; ​ } ​ } ​ }

使用ES6中的字元串新方法 String.prototype.padStart(maxLength, fillString='') 或 String.prototype.padEnd(maxLength, fillString='')來填充字元串;

全局過濾器 

// 定義一個全局過濾器

Vue.filter('dataFormat', function (input, pattern = '') {

  var dt = new Date(input);

  // 獲取年月日

  var y = dt.getFullYear();

  var m = (dt.getMonth() + 1).toString().padStart(2, '0');

  var d = dt.getDate().toString().padStart(2, '0');



  // 如果 傳遞進來的字元串類型,轉為小寫之後,等於 yyyy-mm-dd,那麼就返回 年-月-日

  // 否則,就返回  年-月-日 時:分:秒

  if (pattern.toLowerCase() === 'yyyy-mm-dd') {

    return `${y}-${m}-${d}`;

  } else {

    // 獲取時分秒

    var hh = dt.getHours().toString().padStart(2, '0');

    var mm = dt.getMinutes().toString().padStart(2, '0');

    var ss = dt.getSeconds().toString().padStart(2, '0');



    return `${y}-${m}-${d} ${hh}:${mm}:${ss}`;

  }

});

註意:當有局部和全局兩個名稱相同的過濾器時候,會以就近原則進行調用,即:局部過濾器優先於全局過濾器被調用!

 vue實例的生命周期

  • 什麼是生命周期:從Vue實例創建、運行、到銷毀期間,總是伴隨著各種各樣的事件,這些事件,統稱為生命周期!

  • 生命周期鉤子:就是生命周期事件的別名而已;

  • 生命周期鉤子 = 生命周期函數 = 生命周期事件

  • 主要的生命周期函數分類:

  • 創建期間的生命周期函數:

  • beforeCreate:實例剛在記憶體中被創建出來,此時,還沒有初始化好 data 和 methods 屬性

  • created:實例已經在記憶體中創建OK,此時 data 和 methods 已經創建OK,此時還沒有開始 編譯模板

  • beforeMount:此時已經完成了模板的編譯,但是還沒有掛載到頁面中

  • mounted:此時,已經將編譯好的模板,掛載到了頁面指定的容器中顯示

  • 運行期間的生命周期函數:

  • beforeUpdate:狀態更新之前執行此函數, 此時 data 中的狀態值是最新的,但是界面上顯示的 數據還是舊的,因為此時還沒有開始重新渲染DOM節點

  • updated:實例更新完畢之後調用此函數,此時 data 中的狀態值 和 界面上顯示的數據,都已經完成了更新,界面已經被重新渲染好了!

  • 銷毀期間的生命周期函數:

  • beforeDestroy:實例銷毀之前調用。在這一步,實例仍然完全可用。

  • destroyed:Vue 實例銷毀後調用。調用後,Vue 實例指示的所有東西都會解綁定,所有的事件監聽器會被移除,所有的子實例也會被銷毀。

vue-resource 實現 get, post, jsonp請求

除了 vue-resource 之外,還可以使用 axios 的第三方包實現實現數據的請求

  1. 之前的學習中,如何發起數據請求?

  2. 常見的數據請求類型? get post jsonp

  3. 測試的URL請求資源地址:

  1. JSONP的實現原理

  • 由於瀏覽器的安全性限制,不允許AJAX訪問 協議不同、功能變數名稱不同、埠號不同的 數據介面,瀏覽器認為這種訪問不安全;

  • 可以通過動態創建script標簽的形式,把script標簽的src屬性,指向數據介面的地址,因為script標簽不存在跨域限制,這種數據獲取方式,稱作JSONP(註意:根據JSONP的實現原理,知曉,JSONP只支持Get請求);

  • 具體實現過程:

  • 先在客戶端定義一個回調方法,預定義對數據的操作;

  • 再把這個回調方法的名稱,通過URL傳參的形式,提交到伺服器的數據介面;

  • 伺服器數據介面組織好要發送給客戶端的數據,再拿著客戶端傳遞過來的回調方法名稱,拼接出一個調用這個方法的字元串,發送給客戶端去解析執行;

  • 客戶端拿到伺服器返回的字元串之後,當作Script腳本去解析執行,這樣就能夠拿到JSONP的數據了;


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

-Advertisement-
Play Games
更多相關文章
  • 因喜歡互聯網這個行業,關註了互聯網和科技大咖,看到了喬布斯曾經說過的一句話就是web就是未來,當時不理解什麼是web上網查詢後得知web是一個職業,不單單是一個技術行業,可以說一門藝術了!後來辭職就開始學習web前端也自學過,報過一些前端班級,可總覺得少了點什麼,因為是零基礎。特別喜歡用代碼來實現一 ...
  • 前言:第一次寫博客有點緊張233333,我會在博客里放一下在賭這本書過程中遇到的一些有用的知識點,希望等幫助到大家。好了正題開始(只要是我不知道該說啥了= =) 一,資源(在w3cfuns資源中可以找到第一版和第二版) 《鋒利的jquery》: http://pan.baidu.com/share/ ...
  • 子傳父 邏輯: 單擊子組件的按鈕 ,觸發它的單擊事件 通過 $emit 觸發父級自定義事件 並傳一個值給父級 1 <div id="id"> 2 3 <h3>兒子 你今年多大了 -- {{age}}</h3> 4 <!-- @getage 自定義事件 --> 5 <con1 @getage='get ...
  • 來自:https://www.cnblogs.com/bluestorm/p/6252900.html 侵刪 git branch(分支命令的使用http://hbiao68.iteye.com/blog/2055493 0.可以通過git branch -r 命令查看遠端庫的分支情況 1,從已有的 ...
  • 大家好!!!註冊一年多的第一篇博客。 自我介紹: 本人非電腦專業出身,轉行進入前端半年時間,寫的東西可能觀賞性不強,一起進步吧道友們。。。 接下來的一段時間, 我都會不定期整理自己理解的js知識點, 歡迎各路道友吐槽。 進入正題...... (針對新手,老司機不要嘲笑我) 首先, bind/cal ...
  • JavaScript採用的是單線程模式,它每次也只能執行一個事件,所以它在載入大量的事件的時候會比較慢。 而web-worker的作用就是給JavaScript提供一個多線程的模式。 註意的是 web-worker是無法操作DOM的節點的,它不能再主線程中調用的子線程中的函數,並且只能使用原生js進 ...
  • 伺服器上部署nginx,部署多個獨立的代碼,用nginx做功能變數名稱映射的配置方法: 2. 在/data/nginx/conf/ 目錄下創建不同的配置文件 3.配置對應的配置文件,以hw.keplermarket.cn.vhost為例 4.放置發佈的代碼到對應的目錄,例如 /data/deploy/hw. ...
  • ivew是一套基於vue的高質量的ui組件庫。使用它我們可以非常簡單的得到非常美觀的頁面和非常棒的用戶體驗。 前往github下載源碼,下載地址:https://github.com/iview/iview-admin。 (1)將下載的源碼解壓,放在D盤,重命名 iview-admin; (2)打開 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...