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
  • 移動開發(一):使用.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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...