<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Vue Vine:創(chuàng)造另一種書寫 Vue 組件的方式

          共 1060字,需瀏覽 3分鐘

           ·

          2023-08-02 20:37

          Vue Vine:https://github.com/vue-vine/vue-vine

          在社區(qū)中,有很多帖子討論過希望有一個支持在單個文件中編寫多個 Vue 組件的解決方案。Vue Vine 因此而生。

          Vue Vine 旨在提供更多管理 Vue 組件的靈活性,它并不是要取代 Vue SFC,而是作為一種并行的解決方案。

          為什么是另一種風(fēng)格?

          我看到很多關(guān)于支持 ”一個SFC文件中的多個組件“ 的討論,但說實話,SFC是為每個文件一個組件而設(shè)計的,相關(guān)的工具鏈也是基于這個邏輯,并在Vue的開發(fā)過程中不斷迭代。因此,基于這個概念,直接支持一個文件中的多個組件顯然是不合理的。

          通過幾個Twitter帖子的調(diào)查,我發(fā)現(xiàn)確實存在著在一個文件中編寫多個組件的普遍需求。于是我開始探索是否有另一種語法或組織方式可以最適合Vue現(xiàn)有的編譯工具鏈,并利用現(xiàn)有的成就,同時為用戶編寫組件創(chuàng)造更大的靈活性。

          我相信大多數(shù)像我這樣參與Web前端開發(fā)的程序員都不能 ”從上到下“地編寫UI視圖,而是采用 ”從下到上“ 的方式。換句話說,他們一開始就寫長的組件,然后再砍掉可重用的組件。

          我是這樣問大家的:“編寫Vue時,你最懷念React的什么?”

          在Vue和React的開發(fā)經(jīng)驗比較中,最明顯的區(qū)別是組件的組織形式。由于JSX只是JavaScript函數(shù),所以你可以很容易地開始編寫一個新的組件。很多人回答說JSX實際上是他們喜歡的。

          Vue對JSX也有不俗的支持,然而,JSX的問題是它太靈活了,它不能提供足夠的編譯時信息讓Vue進(jìn)行優(yōu)化。但函數(shù)風(fēng)格很好,我們確實喜歡它。

          那么......為什么不嘗試用一個函數(shù)來創(chuàng)建Vue組件,而把 script setup 邏輯和模板寫在里面?

          這就是 Vine 的誕生過程。

          為什么它可以實現(xiàn)?

          潛心研究了Vue SFC的編譯結(jié)果后,你會發(fā)現(xiàn)它實際上被轉(zhuǎn)化成了一個組件對象。所以,編譯一個組件和編譯多個組件并沒有很大的區(qū)別,我所需要做的只是創(chuàng)建多個組件對象。

          模板是基于一些來自用戶腳本的綁定元數(shù)據(jù)進(jìn)行編譯的,這在模板中實現(xiàn)了“自動解包”。一些靜態(tài)部分可以被自動吊出來進(jìn)行優(yōu)化。

          所有這些處理都是由 @vue/compiler-dom 包提供的。

            
             

          瀏覽 431
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一区免费在线 | 人人插人人 | 亚洲无码在线观看网站 | 日韩视频精品 | 97超碰中文在线 |