主頁 > 企業開發 > vue基礎中的注意事項,以及一些學習心得

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

2020-10-04 15:57:30 企業開發

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  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 :自動過濾用戶輸入的首尾空白字符

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/154858.html

標籤:JavaScript

上一篇:React16原始碼解讀:揭秘ReactDOM.render

下一篇:react-native-----hello word!

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • 使用Django Rest framework搭建Blog

    在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

    uj5u.com 2023-04-20 08:17:54 more
  • 記錄-new Date() 我忍你很久了!

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

    uj5u.com 2023-04-20 08:17:47 more
  • 使用Vue.js實作文字跑馬燈效果

    實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

    uj5u.com 2023-04-20 08:12:31 more
  • JavaScript 運算子

    JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

    uj5u.com 2023-04-20 08:02:25 more
  • CSS—相對單位rem

    一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

    uj5u.com 2023-04-20 08:02:21 more
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 08:01:50 more
  • 如何在 vue3 中使用 jsx/tsx?

    我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

    uj5u.com 2023-04-20 08:01:37 more
  • 【Vue2.x原始碼系列06】計算屬性computed原理

    本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

    uj5u.com 2023-04-20 08:01:31 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:01:10 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:00:32 more