成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

介紹一下 Vue Conf 21 大會上:尤大提到 script setup 語法!

開發(fā) 前端
script setup類型是Vue的Git RFC中的建議。需要明確的是,這并不是要完全替代任何當前寫法。其目的是為開發(fā)人員提供更簡潔的語法,以編寫其單個文件組件。

[[401129]]

 如果你最近使用Vite和Vue3工作,你會注意到,在 Vue 組件中會使用這種<srcript>語法。

  1. <script setup> 
  2. import HelloWorld from './components/HelloWorld.vue' 
  3. // 這個模板使用的是Vue3實驗性`<script setup>` SFCs 

你可能會有疑惑三連,“這是什么鬼?這是 Options API ?還是 Composition API?setup方法又在哪里?”

<script setup>類型是Vue的Git RFC中的建議。需要明確的是,這并不是要完全替代任何當前寫法。其目的是為開發(fā)人員提供更簡潔的語法,以編寫其單個文件組件。

在本文中,我們仔細研究它的工作原理以及一些有用的方法。

script setup

在<script setup>中,我們不必聲明export default和setup方法,這種寫法會自動將所有頂級變量聲明公開給模板(template)使用。

在 Composition API 中,我們習(xí)慣創(chuàng)建setup方法,然后返回我們想要公開東西,如下所示:

  1. <script> 
  2. import { ref, computed } from 'vue' 
  3. export default { 
  4.    setup () { 
  5.       const a = ref(3) 
  6.       const b = computed(() => a.value + 2) 
  7.        
  8.       const changeA = () => { a.value = 4 } 
  9.       return { a, b, changeA } // have to return everything!  
  10.    } 
  11. </script> 

如果使用 <script setup> 語法,我們可以用下面的代碼來實現(xiàn)與上面的一樣功能:

  1. <script setup> 
  2. import { ref, computed } from 'vue' 
  3. // all of these are automatically bound to the template 
  4. const a = ref(3) 
  5. const b = computed(() => a.value + 2) 
  6.        
  7. const changeA = () => { a.value = 4 }  
  8. </script> 

不僅是數(shù)據(jù),計算的屬性和方法,甚至是指令和組件也可以在我們的template中自動獲得。

  1. <template> 
  2.      <component-b /> 
  3. </template> 
  4. <script setup> 
  5. import ComponentB from './components/ComponentB.vue' // really that's it! 
  6. </script> 

這個很魔法。

那么,這有什么意義呢?

長話短說,此語法使單個文件組件更簡單。

用RFC的里的原話來說,“該提案的主要目標是通過將<script setup>的上下文直接暴露給模板來減少SFC內(nèi)部 Composition API 使用的冗長性。”

這就是我們剛剛看到的,無需關(guān)心在setup方法返回的值(因為有時應(yīng)該會忘記在 setup 返回我們需要的值,導(dǎo)致模板獲取不到對應(yīng)的值),我們可以簡化代碼。

<script setup>的更高級用法

現(xiàn)在我們知道<script setup>到底是什么,以及為什么它有用,接著,我們看一下它的一些更高級的功能。

訪問 props, emit 事件 等
首先,你可能想知道如何執(zhí)行標準的Vue操作,例如:

  • 訪問 props
  • 怎么發(fā)出自定義事件
  • 訪問上下文對象

在Composition API中,這些放在了setup 方法中的參數(shù)

  1. setup (props, context) { 
  2.     // context has attrs, slots, and emit 

但是,在script setup語法中,我們可以通過從Vue導(dǎo)入3次對應(yīng)的 API 來訪問這些相同的選項。

  • defineProps – 顧名思義,它允許我們?yōu)榻M件定義 props
  • defineEmits – 定義組件可以發(fā)出的事件
  • useContext – 可以訪問組件的槽和屬性
  1. <template> 
  2.  <button @click="$emit('change')"> Click Me </button> 
  3. </template> 
  4. <script setup> 
  5.   import { defineProps, defineEmit, useContext } from 'vue' 
  6.  
  7.   const props = defineProps({ 
  8.     foo: String, 
  9.   }) 
  10.   const emit = defineEmit(['change''delete']) 
  11.  
  12.   const { slots, attrs } = useContext() 
  13.    
  14. </script> 

通過這3種導(dǎo)入,我們可以獲得傳統(tǒng)設(shè)置方法所慣用的功能。

創(chuàng)建異步 setup 方法

script setup語法的另一個很酷的功能是創(chuàng)建異步setup非常容易。

這對于在創(chuàng)建組件時加載api,甚至將代碼綁定到<suspense>功能很有用。

我們所要做的就是讓我們的 setup函數(shù)是異步的,在我們的script setup中使用一個頂級的await。

例如,如果我們使用的是Fetch API,我們可以像這樣使用await

  1. <script setup>    
  2.    const post = await fetch(`/api/pics`).then((a) => a.json()) 
  3. </script> 

這樣setup()函數(shù)將是異步的。

使用<script setup>和一個普通的<script>

<script setup>為其頂級綁定創(chuàng)建自己的腳本作用域。但是在某些情況下,必須在模塊范圍內(nèi)執(zhí)行代碼。

該RFC中的2個具體示例是:

  • Declaring named exports
  • 創(chuàng)建僅執(zhí)行一次的全局副作用

這可以通過在 script setup 旁邊添加一個普通的<script>塊來完成,如下所示。

  1. <script> 
  2.   performGlobalSideEffect() 
  3.  
  4.   // this can be imported as `import { named } from './*.vue'
  5.   export const named = 1 
  6. </script> 
  7.  
  8. <script setup> 
  9.   // code here 
  10. </script> 

總結(jié)

目前,這個 script setut是可選的,所以如果你想嘗試它,只需在的script標簽中添加setup。

要了解有關(guān) script setup的更多信息,請點擊此處,鏈接到完整的RFC及其動機,確切的語法和更多的技術(shù)實現(xiàn)。

作者:Matt Maribojoc 譯者:前端小智 來源:stackabuse
原文:https://learvue.co/2021/05/explaining-the-ne-script-setup-type-in-vue-3-major-takeaways-from-the-rfc/

 

責任編輯:姜華 來源: 大遷世界
相關(guān)推薦

2016-12-01 08:00:11

微軟技術(shù)大會

2010-10-21 16:04:19

RSA大會江永清

2009-10-16 11:23:53

2011-05-11 13:42:18

谷歌開發(fā)者大會谷歌

2011-02-18 09:22:11

2014-02-11 09:13:00

華為MWC智能手表

2012-03-01 11:18:02

2016-10-13 11:23:07

阿里云云棲大會云計算

2009-04-22 14:08:12

2015-05-05 09:15:08

微軟首屆Ignite大會

2014-09-12 15:27:48

2023-11-13 09:11:22

GitHub人工智能代碼

2016-10-13 16:10:55

網(wǎng)盤

2021-08-06 09:31:30

Black Hat網(wǎng)絡(luò)安全威脅情報

2014-07-01 17:16:36

2014-08-05 16:32:50

2018-07-06 17:22:51

運維

2019-09-29 09:30:04

數(shù)字經(jīng)濟邏輯

2017-02-09 13:41:08

2009-09-09 09:47:58

Silverlight
點贊
收藏

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

主站蜘蛛池模板: 日本不卡免费新一二三区 | 激情视频一区 | 精品少妇一区二区三区在线播放 | 精品一级毛片 | 91社影院在线观看 | 精品二区 | 久久综合色综合 | 天天操夜夜艹 | 日本精品视频一区二区 | 欧美高清视频在线观看 | 亚洲视频免费在线观看 | 91精品国产色综合久久不卡98口 | 欧美在线观看网站 | v片网站 | 精品一区二区三区不卡 | 国产一区二区在线免费播放 | 欧美日韩精品一区 | 91在线网站 | 黄色播放 | 精品一级电影 | 欧美日韩精品 | 国产一区日韩在线 | 国产亚洲网站 | 粉嫩av久久一区二区三区 | 国产免费让你躁在线视频 | 国产精品美女久久久久久免费 | 久草欧美 | 影音先锋中文在线 | 亚洲精品黄色 | 亚洲欧洲激情 | 天天爱av| 久久久久国产精品 | 国产精久久久久久 | 日韩在线视频一区 | 狠狠干在线| 日韩欧美综合 | 久久久国产一区二区三区 | 国产福利在线 | 免费黄色在线观看 | 九色在线视频 | 一区二区三区福利视频 |