Skip to content

chibivue?哪裡小了!?太大了,我處理不了!

它很大...

對於那些這樣想的人,我真誠地道歉.

在拿起這本書之前,您可能想像的是更小的東西.

請允許我稍作辯解,即使是我也沒有打算把它做得這麼大.

當我繼續工作時,我發現它很有趣,並想,"哦,我下一步應該新增這個功能嗎?"就這樣變成了這樣.

明白了.讓我們設定一個時間限制.

導致它變得太大的因素之一是"沒有時間限制".

所以,在這個附錄中,我將嘗試在"15 分鐘"內實現它.

當然,我也會將解釋限制在一頁內.

此外,不僅是頁面,"實現本身將包含在一個檔案中"也是我將嘗試實現的目標.

但是,即使是一個檔案,在一個檔案中寫 100,000 行也是沒有意義的,所以我將目標是在少於 150 行內實現它.

標題是"Hyper Ultimate Super Extreme Minimal Vue".

關於名稱

我想很多人認為這個名字相當幼稚.

我也這麼認為.

但是,這個名字有一個合適的理由.

在強調它極其小的同時,我想要一個縮寫,所以就變成了這個詞序.

縮寫是"HUSEM Vue (Balloon Vue)".

"HU-SEN" [fuːsen] 在日語中意思是"氣球".

雖然我現在將以一種非常草率的方式實現它,但我將這種草率比作一個"氣球",即使針碰到它也會爆炸.

你只是要實現一個響應式系統,對吧?

不,不是這樣的.這次,我將嘗試列出將在 15 分鐘內實現的內容.

  • create app api
  • Virtual DOM
  • patch rendering
  • Reactivity System
  • template compiler
  • sfc compiler (vite-plugin)

我將實現這些東西.

換句話說,SFC 將工作.

至於原始碼,我假設以下內容將工作:

vue
<script>
import { reactive } from 'hyper-ultimate-super-extreme-minimal-vue'

export default {
  setup() {
    const state = reactive({ count: 0 })
    const increment = () => state.count++
    return { state, increment }
  },
}
</script>

<template>
  <button @click="increment">state: {{ state.count }}</button>
</template>
ts
import { createApp } from 'hyper-ultimate-super-extreme-minimal-vue'

// @ts-ignore
import App from './App.vue'

const app = createApp(App)
app.mount('#app')

基於 MIT 許可證發布。