當前位置: 妍妍網 > 碼農

說實話,第一次對 Vue 有點小失望

2024-07-08碼農

已幫助數百位同學拿到了中大廠 offer

前言

大家好,我是林三心,用最通俗易懂的話講最難的知識點是我的座右銘,基礎是進階的前提是我的初心~

首先在文章開頭,我先表示對 尤大 以及 Vue 團隊的 respect,這篇文章就是單純表達個人在技術上的看法,並無夾雜其他個人情感~

在最近的 Vue Conf 2024 上,Vue 官方推薦了一款 Vue 的工具 Vine-Vue ,在這裏我先 respect 一下 Vue 團隊對於開發者的鼓勵~但是我想對 Vue 官方團隊說: 你真的覺得有必要推薦這個庫嗎?

Vue-Vine

先來說說這個庫的作用,這個庫的作用就是: 讓 Vue 元件能透過函式式來定義

舉個例子,我們在平時寫一個元件的時候,會透過樣版的方式去定義

但是在使用了 Vue-Vine 這個庫之後,可以使用函式式的方式去定義

翻看了一下 Vue-Vine 的官方文件,總結出 Vue-Vine 這個庫的初衷是:

  • 想要做到像 React JSX 那樣的元件定義方式

  • 可以在同個檔裏定義多個元件

  • 使得邏輯更加聚合,提高開發效率

  • 但是我感覺現階段 Vue 生態就具備這樣的能力了,且已經經過一段時間的打磨了呀~

    定義多檔、邏輯聚合?Vue 本來就可以!

    說到一個檔裏定義多個檔、邏輯更加聚合,其實本來 Vue 就支持!

    如果你想要把多個元件寫在同一個檔裏、讓邏輯更加緊湊,那是很簡單的事情,只需要使用 Vue 的 defineComponent + h函式 ,即可做到:

    使用起來就跟平時 Vue 的樣版使用別無二致

    甚至你可以把爺父孫元件全部定義在同一個檔裏

    使用起來也是跟平時 Vue 的樣版使用別無二致

    h 函式太麻煩?那就用 TSX/JSX!

    肯定會有人說 Vue 的 h 函式用起來太麻煩了,各種層級巢狀,寫起來沒有 TSX/JSX 那麽爽

    其實,在 Vue 中也可以寫 TSX/JSX !!

    pnpm i @vitejs/plugin-vue-jsx -D

    安裝完畢後,需要在 vite.config.ts 中去進行外掛程式配置

    配置完就可以寫 TSX 啦!!!

    基本渲染 & 響應式 & 事件

    我們可以新建一個 TsxComp.tsx 檔,來寫 TSX 。寫 TSX 可以不在 Vue檔 中去寫

    接著我們可以去渲染這個元件

    可以看到基本的 渲染 & 響應式 & 事件 已經實作

    v-if 條件判斷渲染

    樣版中一般使用 v-if 來進行條件判斷渲染,而 TSX 是比較接近原生語法的,其實條件判斷也很像原生的寫法,直接用 &&

    v-for 迴圈渲染

    樣版中使用 v-for 來迴圈渲染,TSX 更接近原生,需要使用陣列方法 map 來進行渲染

    slot 插槽

    在樣版中,可以透過插槽 slot 去傳入一些 DOM 到元件內去渲染,TSX 中也一樣有插槽,只不過用法不像樣版那樣用,而是跟 Vue 的 h 函式類似

    舉個例子,我寫一個 TSX 元件接收 default 和 test 兩個插槽

    如果你是從樣版傳到 TSX 中的話,那麽傳入的方式無差別,也是使用 template 傳入

    如果你是從 TSX 傳到 TSX 的話,那麽傳入方式透過 props 來傳了

    JSX/TSX 效能差

    當然你如果用了 JSX/TSX 的話,效能肯定是差一丟丟的,但是這點開銷,真不算啥~大不了不用唄,用回 h 函式

    結語

    我是林三心,感謝您的閱讀~

    1v1私教、找工作、全程陪跑、終身服務

    可直接加 Sunday老師 微信溝通,回復【資料】可直接領取 Sunday獨家整理 大廠面試題、大廠真實面經