偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

當(dāng)Vue2遇到Composition API,它們之前到底能擦出怎樣的火花?

開發(fā) 前端
通過(guò)創(chuàng)建 Vue 組件,我們可以將界面中重復(fù)的部分連同其功能一起提取為可重用的代碼段。僅此一項(xiàng)就可以使我們的應(yīng)用在可維護(hù)性和靈活性方面走得相當(dāng)遠(yuǎn)。然而,我們的經(jīng)驗(yàn)已經(jīng)證明,光靠這一點(diǎn)可能并不夠,尤其是當(dāng)你的應(yīng)用變得非常大的時(shí)候——想想幾百個(gè)組件。

 

[[410008]]

 前言

Composition API是什么?也稱為組合式 API。如果你第一次聽(tīng)到這個(gè)詞,請(qǐng)認(rèn)真讀完這篇文章。

官網(wǎng)有這樣一段解釋:

通過(guò)創(chuàng)建 Vue 組件,我們可以將界面中重復(fù)的部分連同其功能一起提取為可重用的代碼段。僅此一項(xiàng)就可以使我們的應(yīng)用在可維護(hù)性和靈活性方面走得相當(dāng)遠(yuǎn)。然而,我們的經(jīng)驗(yàn)已經(jīng)證明,光靠這一點(diǎn)可能并不夠,尤其是當(dāng)你的應(yīng)用變得非常大的時(shí)候——想想幾百個(gè)組件。處理這樣的大型應(yīng)用時(shí),共享和重用代碼變得尤為重要。

我們之前創(chuàng)建組件更多地是使用OptionAPI(data、computed、methods、watch) ,但是,當(dāng)我們的組件開始變得更大時(shí),邏輯關(guān)注點(diǎn)的列表也會(huì)增長(zhǎng)。尤其對(duì)于那些一開始沒(méi)有編寫這些組件的人來(lái)說(shuō),這會(huì)導(dǎo)致組件難以閱讀和理解。

如果能夠?qū)⑼粋€(gè)邏輯關(guān)注點(diǎn)相關(guān)代碼收集在一起會(huì)更好。而這正是組合式 API 使我們能夠做到的。

提到組合式API,我們可能更多地想到在Vue3中使用。但是目前國(guó)內(nèi)大部分Vue項(xiàng)目都還是Vue2項(xiàng)目,如果遷移到Vue3,可能還需要花費(fèi)一定的精力。你在此處可能會(huì)有一個(gè)疑問(wèn):Vue2項(xiàng)目可以遷移到Vue3嗎?答案是可以的。如果你想知道怎么操作,可以點(diǎn)擊下方鏈接:

  1. https://github.com/vuejs/vue-next/tree/master/packages/vue-compat 

但是,遷移之前需要你主要幾點(diǎn)問(wèn)題,官方這樣解釋:

雖然我們努力使遷移構(gòu)建盡可能模仿 Vue 2 的行為,但仍有一些限制可能會(huì)阻止您的應(yīng)用程序有資格升級(jí):

  • 依賴 Vue 2 內(nèi)部 API 或未記錄行為的依賴項(xiàng)。最常見(jiàn)的情況是在 上使用私有屬性VNodes。如果您的項(xiàng)目依賴于Vuetify、Quasar或ElementUI等組件庫(kù),最好等待它們的 Vue 3 兼容版本。
  • Internet Explorer 11 支持:Vue 3 已正式放棄支持 IE11 的計(jì)劃。如果您仍然需要支持 IE11 或更低版本,則必須繼續(xù)使用 Vue 2。
  • 服務(wù)器端渲染:遷移構(gòu)建可用于 SSR,但遷移自定義 SSR 設(shè)置要復(fù)雜得多??偟南敕ㄊ翘鎿Qvue-server-renderer用@vue/server-renderer。Vue 3 不再提供捆綁渲染器,建議將 Vue 3 SSR 與Vite一起使用。如果您正在使用Nuxt.js,那么等待 Nuxt 3 可能會(huì)更好。

可以看到,從Vue2遷移到Vue3肯定需要一定的成本,那么有什么辦法讓我在Vue2也可以用到Composition API。其實(shí),現(xiàn)在已經(jīng)出了解決方案。你可以上網(wǎng)搜下這樣一個(gè)庫(kù)@vue/composition-api,這個(gè)庫(kù)是專門為Vue使用Composition-api而生,目前是發(fā)布候選版。

安裝與使用

NPM

  1. npm install @vue/composition-api 
  2. or 
  3. yarn add @vue/composition-api 

SFC

必須通過(guò)vue.use()將@vue/composition-api作為插件安裝,然后才能使用composition-api編寫組件。所以,請(qǐng)這樣。一般在你的項(xiàng)目文件夾中的main.js編輯如下:

  1. import Vue from 'vue' 
  2. import VueCompositionAPI from '@vue/composition-api' 
  3.  
  4. Vue.use(VueCompositionAPI) 

然后,在組件中這樣使用。

  1. import {reactive, toRefs} from '@vue/composition-api' 
  2. export default { 
  3.   name'HelloWorld'
  4.   props: { 
  5.     msg: String 
  6.   }, 
  7.   setup(props){ 
  8.     const obj = reactive({ 
  9.       name:'maomin'
  10.       age:18 
  11.     }); 
  12.     console.log(props.msg); 
  13.  
  14.     return { 
  15.       ...toRefs(obj) 
  16.     } 
  17.   } 

當(dāng)你遷移到Vue 3時(shí),只要將@vue/compositionapi替換為vue,你的代碼就可以正常工作了。

另外,你需要注意的是,如果你在使用TypeScript,為了正確推斷Vue組件選項(xiàng)中的類型,需要使用defineComponent定義組件。

  1. import { defineComponent } from '@vue/composition-api' 
  2.  
  3. export default defineComponent({ 
  4.   // type inference enabled 
  5. }) 

CDN

如果你想使用CDN,同樣也有辦法。在vue之后包含@vue/compositionapi,它將自動(dòng)安裝自己。

  1. <script src="https://cdn.jsdelivr.net/npm/vue@2.6"></script> 
  2. <script src="https://cdn.jsdelivr.net/npm/@vue/composition-api@1.0.0-rc.13"></script> 

這時(shí),@vue/composition-api將暴露于全局變量window.VueCompositionAPI。

  1. <!DOCTYPE html> 
  2. <html lang="en"
  3.  
  4. <head> 
  5.     <meta charset="UTF-8"
  6.     <meta http-equiv="X-UA-Compatible" content="IE=edge"
  7.     <meta name="viewport" content="width=device-width, initial-scale=1.0"
  8.     <title>Document</title> 
  9. </head> 
  10.  
  11. <body> 
  12.     <div id="app"
  13.         <p>{{num}}</p> 
  14.         <div>{{obj.page}}</div> 
  15.     </div> 
  16.     <script src="https://cdn.jsdelivr.net/npm/vue@2.6"></script> 
  17.     <script src="https://cdn.jsdelivr.net/npm/@vue/composition-api@1.0.0-rc.13"></script> 
  18.     <script> 
  19.         const { ref, reactive } = VueCompositionAPI 
  20.  
  21.         new Vue({ 
  22.             el: '#app'
  23.             setup() { 
  24.                 const num = ref(0); 
  25.                 const obj = reactive({ 
  26.                     page: 1, 
  27.                     pageSize: 10 
  28.                 }) 
  29.                 return { 
  30.                     num, 
  31.                     obj 
  32.                 } 
  33.             } 
  34.         }) 
  35.     </script> 
  36. </body> 
  37.  
  38. </html> 

結(jié)語(yǔ)

@vue/composition-api支持所有現(xiàn)代瀏覽器和IE11+。你可以在Vue2項(xiàng)目使用它,然后在合適的時(shí)機(jī)無(wú)縫銜接到Vue3項(xiàng)目。

下面是@vue/composition-apigithub網(wǎng)址:

  1. https://github.com/vuejs/composition-api 

另外,關(guān)于CompositionApi的用法還有很多,可以查看下方的官方文檔:

  1. https://v3.cn.vuejs.org/guide/composition-api-introduction.html 

本文轉(zhuǎn)載自微信公眾號(hào)「前端歷劫之路」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系前端歷劫之路公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: 前端歷劫之路
相關(guān)推薦

2020-08-17 17:16:21

5G網(wǎng)絡(luò)技術(shù)

2018-11-15 19:30:08

人工智能教育機(jī)器智能

2019-11-06 15:05:56

智慧城市區(qū)塊鏈數(shù)據(jù)

2018-09-26 20:01:17

金融大數(shù)據(jù)數(shù)據(jù)平臺(tái)

2021-08-22 10:50:14

人工智能AI教育教學(xué)

2022-08-29 20:13:28

物聯(lián)網(wǎng)IPV6

2015-06-04 14:48:09

CIO時(shí)代網(wǎng)

2009-12-03 13:32:04

Virtuozzo捆綁

2017-07-25 11:26:46

區(qū)塊鏈銀行金融

2015-06-30 15:18:04

2018-03-23 10:42:14

云服務(wù)緩存系統(tǒng)架構(gòu)

2018-11-12 13:27:12

教育區(qū)塊鏈學(xué)習(xí)

2017-05-31 12:48:18

互聯(lián)網(wǎng)

2022-09-08 08:08:16

AI模態(tài)圖像Transforme

2020-09-19 21:15:26

Composition

2017-09-07 15:02:40

AI

2018-08-07 09:38:06

2017-11-14 05:38:54

2021-03-11 14:28:07

云計(jì)算云原生邊緣計(jì)算

2018-06-27 18:50:02

區(qū)塊鏈數(shù)字貨幣比特幣
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)