12 種使用 Vue 的優秀做法

2020-12-17 51CTO

隨著 VueJS 的使用越來越廣泛,出現了幾種優秀實踐並逐漸成為標準。在本文中,主要分享在平時開發中一些有用資源和技巧,廢話少說,我們開始吧。

1.始終在 `v-for` 中使用 `:key`

在需要操縱數據時,將key屬性與v-for指令一起使用可以讓程序保持恆定且可預測。

這是很有必要的,這樣Vue就可以跟蹤組件狀態,並對不同的元素有一個常量引用。在使用動畫或Vue轉換時,key 非常有用。

如果沒有key ,Vue只會嘗試使DOM儘可能高效。這可能意味著v-for中的元素可能會出現亂序,或者它們的行為難以預測。如果我們對每個元素都有唯一的鍵引用,那麼我們可以更好地預測Vue應用程式將如何精確地處理DOM操作。

2.在事件中使用短橫線命名

在發出定製事件時,最好使用短橫線命名,這是因為在父組件中,我們使用相同的語法來偵聽該事件。

因此,為了確保我們各組件之間的一致性,並使您的代碼更具可讀性,請在兩個地方都堅持使用短橫線命名。

3.使用駝峰式聲明 props,並在模板中使用短橫線命名來訪問 props

優秀的做法只是遵循每種語言的約定。在 JS 中,駝峰式聲明是標準,在HTML中,是短橫線命名。因此,我們相應地使用它們。

幸運的是,Vue 已經提供了駝峰式聲明和短橫線命名之間轉換,因此除了實際聲明它們之外,我們不必擔心任何事情。

4.data 應始終返回一個函數

聲明組件data時,data選項應始終返回一個函數。如果返回的是一個對象,那麼該data將在組件的所有實例之間共享。

但是,大多數情況下,我們的目標是構建可重用的組件,因此我們希望每個組件返回一個惟一的對象。我們通過在函數中返回數據對象來實現這一點。

5. 不要在同個元素上同時使用`v-if`和`v-for`指令

為了過濾數組中的元素,我們很容易將v-if與v-for在同個元素同時使用。

問題是在 Vue 優先使用v-for指令,而不是v-if指令。它循環遍歷每個元素,然後檢查v-if條件。

這意味著,即使我們只想渲染列表中的幾個元素,也必須遍歷整個數組。

這對我們來當然沒有任何好處。

一個更聰明的解決方案是遍歷一個計算屬性,可以把上面的例子重構成下面這樣的:

這麼做有幾個好處:

  • 渲染效率更高,因為我們不會遍歷所有元素
  • 僅當依賴項更改時,才會重使用過濾後的列表
  • 這寫法有助於將組件邏輯從模板中分離出來,使組件更具可讀性

6.用正確的定義驗證我們的 props

可以這條是很重要,為什麼?

在設計大型項目時,很容易忘記用於props的確切格式、類型和其他約定。如果你在一個更大的開發團隊中,你的同事不會讀心術,所以你要清楚地告訴他們如何使用你的組件。

因此,我們只需編寫props驗證即可,不必費力地跟蹤組件來確定props的格式

從Vue文檔中查看此示例。

7.組件全名使用駝峰或或者短橫線

組件的通用命名約定是使用駝峰或短橫線。無論我們使用哪個,最重要的是始終保持一致。我認為駝峰方式 效果比較好,因為大多數IDE自動完成功能都支持它。

8. 基本組件應該相應地加上前綴

根據Vue樣式指南,基本組件是僅包含以下內容的組件:

為這些組件命名的優秀實踐是為它們提供前綴Base、V或App。同樣,只要我們在整個項目中保持一致,可以使用其中任何一種。

  1. BaseButton.vue 
  2. BaseIcon.vue 
  3. BaseHeading.vue 

該命名約定的目的是使基本組件按字母順序分組在文件系統中。另外,通過使用webpack導入功能,我們可以搜索與命名約定模式匹配的組件,並將所有組件自動導入為Vue項目中的全局變量。

9.單實例組件命名應該帶有前綴 `The`

與基本組件類似,單實例組件(每個頁面使用一次,不接受任何prop)應該有自己的命名約定。這些組件特定於我們的應用,通常是 footer,header或sider。

該組件只能有一個激活實例。

  1. TheHeader.vue 
  2. TheFooter.vue 
  3. TheSidebar.vue 
  4. ThePopup.vue 

10.保持指令簡寫的一致性

在Vue開發人員中,一種常見的技術是使用指令的簡寫。例如:

  • @是v-on的簡寫
  • : 是 v-bind 的簡寫
  • # 是 v-slot 的簡寫

在你的Vue項目中使用這些縮寫是很好的。但是要在整個項目中創建某種約定,總是使用它們或從不使用它們,會使我們的項目更具內聚性和可讀性。

11.不要在「created」和「watch」中調用方法

Vue開發人員經常犯的一個錯誤是他們不必要地在created和watch中調用方法。其背後的想法是,我們希望在組件初始化後立即運行watch。

但是,Vue為此提供了內置的解決方案,這是我們經常忘記的Vue watch屬性。

我們要做的就是稍微重組watch並聲明兩個屬性:

1.handler (newVal, oldVal)-這是我們的watch方法本身。

2.immediate: true- 代表如果在 wacth 裡聲明了之後,就會立即先去執行裡面的handler方法,如果為 false就跟我們以前的效果一樣,不會在綁定的時候就執行

12. 模板表達式應該只有基本的 JS 表達式

在模板中添加儘可能多的內聯功能是很自然的。但是這使得我們的模板不那麼具有聲明性,而且更加複雜,也讓模板會變得非常混亂。

為此,讓我們看看Vue樣式指南中另一個規範化字符串的示例,看看它有多混亂。

基本上,我們希望模板中的所有內容都直觀明了。為了保持這一點,我們應該將複雜的表達式重構為適當命名的組件選項。

分離複雜表達式的另一個好處是可以重用這些值。

總結

這是12個比較常見的優秀實踐,它們將使我們的Vue代碼更易於維護、可讀性更好、更專業。希望這些技巧對您有用(因為它們絕對是我一直想記住的東西)。

【編輯推薦】

【責任編輯:

華軒

TEL:(010)68476606】

點讚 0

相關焦點

  • Vue-使用vue-video-player組件
    在實際開發過程中會有添加視頻的需求在vue項目中添加視頻可以使用vue-video-player組件來實現實現步驟:1.安裝在控制臺輸入: npm install vue-video-player –s
  • 實戰教學使用 Vue3 重構 Vue2 項目(萬字好文推薦)
    本文來自於 神奇的程式設計師 的分享好文,點擊閱讀原文查看作者的掘金鍊接。
  • Vue的安裝及使用快速入門
    vue是一個JavaMVVM庫,是一套用於構建用戶界面的漸進式框架,是初創項目的首選前端框架。它是以數據驅動和組件化的思想構建的,採用自底向上增量開發的設計。它是輕量級的,它有很多獨立的功能或庫,我們會根據我們的項目來選用vue的一些功能。它提供了更加簡潔、更易於理解的API,使得我們能夠快速地上手並使用Vue.js。
  • 如何在vue框架項目中使用echarts並製作柱狀圖
    cnpm install --global vue-cli2、接著使用命令:vue init webpack wanm,創建一個基於webpack模板的新項目運行項目:npm run dev4、如果要在vue框架項目中使用echarts,需要安裝echartsnpm install echarts
  • vue中組件的使用(下)
    vue中組件的使用(上)中,小編總結了組件的分類和註冊、組件的data選項、組件的props選項的使用<h1>標籤,我們需要使用雙引號或者單引號將其包裹起來。對此我們可以使用vue提供的API接口$emit實現,實現步驟如下:使用$emit在子組件中自定義觸發事件在父組件中監聽事件,執行對應方法針對以上步驟,代碼是這樣的:
  • 初步認識vue.js框架的使用
    vue.js框架是幹什麼的Vue.js 是一個JavaScriptMVVM庫,是一套構建用戶界面的漸進式框架。它是以數據驅動和組件化的思想構建的,採用自底向上增量開發的設計。相比於Angular.js,Vue.js提供了更加簡潔、更易於理解的API,使得我們能夠快速地上手並使用Vue.js。如何使用vue.js1.下載 vue.min.js 並用 <script> 標籤引入。
  • Vue面試題(3)Vue-Router和Vuex
    、可以很好的使用vue開發者工具調試vuex的狀態 。這些優勢是localStorage不能夠很好的模擬的。4、頁面刷新後vuex的state數據丟失怎麼解決?store裡的數據是保存在運行內存中的,當頁面刷新時,頁面會重新加載vue實例,store裡面的數據就會被重新賦值初始化。
  • 什麼是Vue? 如何安裝和使用Vue?
    >5.2Vue的核心概念之二:組件化開發,我們可以將網頁拆分成一個個獨立的組件來編寫將來再通過封裝好的組件拼接成一個完整的網頁※1.Vue框架使用方式1.1傳統下載導入使用1.2vue-cli安裝導入使用(腳手架)2.Vue框架使用步驟2.1下載Vue框架2.2導入Vue框架2.3創建Vue實例對象2.4指定Vue實例對象控制的區域
  • 如何在vue項目中使用sass並設置元素樣式
    elementJavaScriptsassCSS3 在創建vue框架項目時,可以使用CSS3定義元素樣式;還可以使用sass動態變量定義元素樣式如果直接使用sass,啟動項目會出現報錯。那麼,如何在vue項目中使用sass?
  • Vue.js 作者回應『Angular有哪些地方比Vue更優秀?』
    本文轉載自 Vue.js 作者尤雨溪的知乎專欄 —— 回應『Angular有哪些地方比Vue更優秀?』。
  • vue題
    12、vue.js的兩個核心是什麼?數據驅動和組件化13、vue中 key 值的作用使用key來給每個節點做一個唯一標識key的作用主要是為了高效的更新虛擬DOM。另外vue中在使用相同標籤名元素的過渡切換時,也會使用到key屬性,其目的也是為了讓vue可以區分它們,否則vue只會替換其內部屬性而不會觸發過渡效果。
  • 總結 Vue 知識體系之 12 個實用技巧
    Child.vuemounted() {  this.created() {  this.getList();},watch: {  keyWord: 'getList',}上面這樣的做法可以使用,但很麻煩,我們可以添加 immediate 屬性,這樣初始化的時候就會自動觸發(不用再寫
  • 如何創建vue項目並使用element框架中的el-select
    1、在電腦硬碟上,找到一個位置,新建一個文件夾wmn;滑鼠右鍵選擇Git Bash Here,並在Git窗口輸入cnpm install --global vue-cli命令:cnpm install --global vue-cli
  • Vue入門10 vue+elementUI
    >ElementUI:https://element.eleme.cn/#/zh-CN/component/installationnpm安裝推薦使用npm的方式安裝,它能更好地和webpack打包工具配合使用。
  • 怎麼使用vue中的實例屬性vm.$data
    那麼,這個實例屬性怎麼使用?1、打開HBuilderX工具,創建vue項目,然後在src/components新建vue文件DataAtrr.vue新建vue文件DataAtrr.vue2、使用命令npm i element-ui -S安裝Element,然後打開main.js文件,引入Element的樣式和模塊
  • 如何在vue項目中使用muse-ui並創建一個form表單提交
    Muse UI是基於vue的開源組件庫,包含了不同的控制項;可以自定義主題,實現定製化。如果在vue項目中,如何使用muse-ui?打開Git命令窗口2、使用cnpm install命令安裝vue-cli,命令:cnpm install --global vue-cli
  • thinkphp如何使用vue進行web開發
    vue可以說是近幾年最火最流行的前端js框架,而thinkphp也是國內挺流行的後端框架。看到網上很多朋友的教程都是前端開發者寫的,難免對像自己一樣的後端程式設計師是一種打擊。「怎麼就沒有從後臺出發講講如何使用前端vue框架呢?」我時常這樣想。
  • Vue使用swiper實現輪播圖效果
    二、 在vue中swiper的使用方式1.安裝swiper在項目運行的控制臺輸入: npm install swiper vue-awesome-swiper –save進行安裝在vue中使用swiper插件,由於vue-awesome-swiper插件包的版本問題,會出現左右箭頭點擊失效以及自動播放失效的情況。
  • 一個超詳細vue無限滾動vue-infinite-scroll插件的配置及使用詳解
    開發中總會遇到這種下拉加載的設計方案,Vue實現下拉加載最佳方案自然是使用vue-infinite-scroll來實現。接下來我們一起看下它的配置及使用方式。infinite-scroll-throttle-delay 檢查busy的值的時間間隔,默認值是200,因為vue-infinite-scroll的基礎原理是,vue-infinite-scroll會循環檢查busy的值,以及是否滾動到底,只有當:busy為false且滾動到底,回調函數才會執行安裝vue-infinite-scrollnpm install vue-infinite-scroll
  • 你知道vue項目怎麼使用TypeScript嗎?
    這些就是使用ts的好處(包括但不限於此),當然javascript也有它的好處,只不過程式設計師不就是要不斷地學習心的知識嗎?、命名空間)我們在這裡主要是讓ts識別.vue文件、window對象和一些module具體declare的使用方式請看這裡/** * 告訴 TypeScript *.vue 後綴的文件可以交給 vue 模塊來處理 * 而在代碼中導入 *.vue 文件的時候,需要寫上 .vue 後綴。