vue基礎中的註意事項,以及一些學習心得

来源:https://www.cnblogs.com/liuyilong/archive/2020/01/18/12210042.html
-Advertisement-
Play Games

分享一些基礎小白們可能不知道的東西、以及一些基礎的知識的註意事項 ...


vue中你不知道的東西、以及註意事項

  • v-html

  • 使用 v-html的時候該指令中的值會覆蓋綁定標簽中原有的值,且使用v-html的時候不要將他設置為給用戶提供內容的地方,因為v-html很容易被XSS攻擊

  • v-bind

    • 使用v-bind綁定屬性值為布爾值的屬性時,如果數據為truthy,則該布爾值屬性都不會被渲染出來
    • 如果數據值為其他任意存在的值,就意味著值為true
  • v-if

    • 使用v-if綁定的標簽,當其指令值為truthy的時候該標簽是直接被刪除掉了

    • 而當其指令值為其他任意存在的值時,就意味著值為true

    • 如果您現在有一個需求是讓多個標簽都使用v-if,則可以使用template標簽,使用該標簽包裹需要被一起隱藏或顯示的標簽,在該標簽上綁定v-if即可

    • <template v-if="ok">
        <h1>Title</h1>
        <p>Paragraph 1</p>
        <p>Paragraph 2</p>
      </template>
  • v-show

    • 和v-if的區別在於v-show是將標簽設置為 display:none;的
  • 動態參數

    • 定義:在v-bind中,被綁定的屬性被稱之為參數,如 id、class、href、src...

    • 用法:使用方括弧括起來的js表達式作為指令的動態參數

    • 註意事項:在使用動態參數的時候,需要避免使用大寫的字元來命名,因為瀏覽器會把命名強制轉換為小寫,其次,動態參數有一些語法約束,如空格和引號放在動態參數中是無效的

    • <div id="app">
          <!-- 2.6.0版本新增:動態參數 -->
          <img v-bind:[attribute]="url">  <!-- 這裡的attribute寫成大寫也能有效果,因為瀏覽器會把該變數名強制轉換為小寫 -->
          <br>
          <!-- <img :['s'+ 'rc']="url" alt=""> -->  <!-- 這種寫法在編譯時會報錯,因為不允許使用引號 -->
          <img :[compsrc]="url" alt="">
       </div>
      <script>
          const vm = new Vue({
            el: '#app',
            data: {
              attribute: 'src',
              url: './images/logo-footer.png'
            },
            computed: {   //  通過使用計算屬性巧妙避開在動態參數中使用引號和空格
              compsrc() {
                return 's' + 'rc'
              }
            },
          })
       </script>
  • vue中復用性的問題

    • 因為vue會儘可能高效的渲染元素,通常會復用已有的元素。

    • 大家可能以前出現過這樣的問題,

    • <!-- 有時候我們可能想實現這樣的效果:我點擊按鈕的時候改變登錄方式,即如下的賬號和用戶名兩種 -->
      <template v-if='isShow'>
          <label for='number'>賬號:</label>
          <input type="text" id="number">
      </template>
      <template v-else>
          <label for="username">用戶名:</label>
          <input type="text" id="username">
      </template>
      <button @click='btnClick'>切換isShow</button>
      <!-- 但是這樣使用之後我們會出現這樣一個問題:當我們在其中一個登錄方式輸入了東西之後,我們突然想切換另一個登錄方式,那麼我點擊切換之後,按道理來說我們輸入框中的信息應該被重置掉,因為我們不是使用的同一個input文本框。但是事實總是相反的,原因就在於vue會復用已存在的元素,所以其實根本就沒有創建一個新的input文本框 -->
    • 解決方案:在input標簽中加入一個 key 屬性,給該屬性命名(字元串or數字),加以區分即可。但是這不會導致label標簽不復用,因為label標簽沒有key屬性。

  • v-for的註意事項

    • 在v-for的語法中其實可以把in代替為of作為分隔符;

    • 數組更新檢測:

      • 變異方法(變異方法就是改變了原數組的方法,即:push,pop,shift,unshift,splice,sort,reverse),Vue可以監聽到數組的變化,併在遍歷的時候動態遍歷
      • 替換方法(替換方法就是生成了新數組的方法,即:filter,concat,slice等等),當使用替換方法時,可以用新數組替換原來的數組
      • 註意事項:當你利用索引直接添加一個數組項時、當你修改數組長度時,Vue不是響應性的
      • 解決方法: vm.lists.splice(index,num,newValue) or Vue.set(vm.lists,index,newValue)
      • 對象的變更檢測也是如此,不能通過對象名.新屬性名去手動添加新屬性,但是也可以使用Vue.set(vm.lists,index,newValue) 的方法進行添加。
    • <template> 上使用 v-for

      • <ul>
          <template v-for="item in items">
            <li>{{ item.msg }}</li>
            <li class="divider" role="presentation"></li>
          </template>
        </ul>
    • v-for與v-if一同使用的問題

      • 當這兩個指令處於同一個節點,v-for的優先順序比v-if的高
      • 官方不推薦我們用使用這兩個指令,除非你是為了部分項渲染節點時,這種優先順序機制就發揮了重要作用
  • 在組件中使用v-for的註意事項

    • 在有些html元素中,對於哪些元素可以出現在其內部是有嚴格限制的,例如:p元素中如果有div元素,那麼div會被提升到跟p元素外部,所以在進行組件化開發的時候,在使用這些約束條件的元素會有一些問題。

    • <table>
        <blog-post-row></blog-post-row>
      </table>
      <!-- 這個自定義組件會被提升到tabel之外,最終渲染的樣式肯定就出錯了 -->
    • 解決方法:使用Vue中提供的 is 屬性

    • <table>
        <tr is="blog-post-row"></tr>
      </table>
  • 事件處理

    • 事件修飾符
        1. once :綁定的事件只執行一次;可以被使用在組件事件中
        2. prevent :阻止預設事件的發生,如超鏈接的跳轉、點擊事件的點擊
        3. stop :阻止冒泡行為的方法(由內到外)
        4. capture :讓事件進行捕獲(由外到內)
        5. self :只有當事件該本身元素觸發時才發生
        6. passive :滾動事件的預設行為(滾動行為)將會立即觸發
      • 註意:不要把 .passive.prevent 一起使用,因為 .prevent 將會被忽略,同時瀏覽器可能會向你展示一個警告。請記住,.passive 會告訴瀏覽器你不想阻止事件的預設行為。
  • 表單輸入值綁定

    • 修飾符
        1. .lazy :將 input事件監聽(同步更新)轉換為 change事件監聽(當失去焦點時更新)
        2. .number :自動將用戶的輸入值轉為數字類型
        3. .trim :自動過濾用戶輸入的首尾空白字元

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

-Advertisement-
Play Games
更多相關文章
  • 參考 鏈接:https://gitbook.cn/books/5a33782c5778440a9d906017/index.html ...
  • 對長期奮戰在一線的後端開發人員來說,都知道redis有兩種持久化方式RDB和AOF,雖說大家都知道這兩種方式大概運作方式,但想必有實操瞭解得不會太多。 這裡是自己實操兩種持久化方式的一點點記錄。 先看以下摘錄自redis官網原文解釋(當然原文是English,這裡用google翻譯過了。) Redi ...
  • 參考鏈接:https://www.zhihu.com/question/333417513 https://www.oschina.net/p/hbase hadoop環境搭建:https://blog.csdn.net/hliq5399/article/details/78193113/ goog ...
  • ​ 若在傳統DBMS 關係型資料庫中查詢海量數據,特別是模糊查詢,一般我們都是使用like %查詢的值%,但這樣會導致無法應用索引,從而形成全表掃描效率低下,即使是在有索引的欄位精確值查找,面對海量數據,效率也是相對較低的,所以目前一般的互聯網公司或大型公司,若要查詢海量數據,最好的辦法就是使用搜索 ...
  • 一、a標簽的偽類選擇器註意點 (1)a標簽的偽類選擇器可以單獨出現,也可以一起出現。也就是可以設置多個狀態的樣式。 (2) a標簽的偽類選擇器如果一起出現,那麼有嚴格的順序要求,編寫的順序必須要遵守原則: (love\hate原則,即link\visited\hover\active)預設狀態、被訪 ...
  • 博客項目登錄註冊功能後端,涉及到mongodb,redis,vuex,nuxt.js,mongoose,koa-redis,smtp使用的基本操作 ...
  • 在Vue進行前端開發中,事件監聽是必不可少的功能,本文通過簡單的小例子,簡述v-on的簡單用法,僅供學習分享使用,如有不足之處,還請指正。 ...
  • react native運行helloword 今天是個特殊的時刻,我前天開始學習react native,一直環境塔建出錯,運行打包出錯,今晚,我終於把這個難搞的環境給搭建好了,併成功運行了第一個helloword!! 這個環境:python2+java jdk+Android 我全部是照著官網弄 ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...