最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

vue3.0源碼分析 vue-next-master目錄結(jié)構(gòu)

2021-07-08 17:10 作者:木斯佳_  | 我要投稿

# 前言

我是木木,前端工作3年了,從小白一步步走過來,到現(xiàn)在也開始負(fù)責(zé)公司的架構(gòu)了,從今天開始長期寫博客,分享知識的同時希望和大家一起成長。

今后會逐漸開啟專欄,分享react、vue、webgl、前端工程化等模塊

# 一、vue-next-master 基本結(jié)構(gòu)

鏈接: [Vue 源碼地址]( https://github.com/vuejs/vue-next)

我們將使用vue3.1.4版本進(jìn)行深入全方位學(xué)習(xí)

進(jìn)入源碼目錄執(zhí)行 tree -aI ".git*|.vscode" -C -L 1 獲取整個目錄

vue-next-master目錄結(jié)構(gòu):


├── packages // 源碼

├── scripts // 腳本文件,用于存放配置文件,進(jìn)行編譯打包

├── test-dts // 測試文件

├── .prettierrc

├── api-extractor.json // TypeScript的API提取和分析工具

├── CHANGELOG.md

├── jest.config.js // jest配置文件

├── package.json

├── LICENSE

├── README.md

├── rollup.config.js // rollup配置文件

├── tsconfig.json

└── yarn.lock


packages 結(jié)構(gòu):

├── compiler-core // 編譯核心

├── compiler-dom // 針對瀏覽器環(huán)境的編譯模塊,基于compiler-core

├── compiler-sfc // 用于編譯(.vue)文件,學(xué)習(xí)過webpack的同學(xué)就比較熟悉了

├── compiler-ssr // 針對服務(wù)端渲染的編譯模塊,基于compiler-core

├── global.d.ts

├── reactivity // 響應(yīng)式模塊,可單獨使用

├── runtime-core // 運(yùn)行時核心

├── runtime-dom // 針對瀏覽器環(huán)境的運(yùn)行時,基于runtime-core

├── runtime-test // 用于測試的輕量級y運(yùn)行時

├── sfc-playground //Vue 3 單文件組件在線 playground

├── server-renderer // 服務(wù)端渲染相關(guān)

├── shared // 共享的工具庫

├── size-check // 測量代碼體積的工具

├── template-explorer // 內(nèi)部使用的編譯文件瀏覽工具

├── vue-compat // vue3兼容相關(guān)

└── vue // vue3主入口文件,引入導(dǎo)出了運(yùn)行時和編譯器


Vue3的源碼核心在于三大模塊:compiler-module,renderer-module,reactivity-module。其中renderer-module包含三個階段render parse,mount parse,patch parse。

# 二、Vue3的源碼核心三大模塊

**新版Vue 3.0計劃并已實現(xiàn)的主要架構(gòu)改進(jìn)和新功能:**

**編譯器(Compiler)**

- 介紹

compile time 我們可以理解為程序編譯時,是指我們寫好的源代碼在被編譯成為目標(biāo)文件這段時間,但我們可以通俗地看成是我們寫好的源代碼在被轉(zhuǎn)換成為最終可執(zhí)行的文件這段時間,在這里可以理解為我們將.vue文件編繹成瀏覽器能識別的.html文件的一些工作,

- 內(nèi)容

compiler-core主要功能是暴露編譯相關(guān)的API以及baseCompile方法

compiler-dom基于compiler-core封裝針對瀏覽器的compiler (對瀏覽器標(biāo)簽進(jìn)行處理)

- 優(yōu)點

使用模塊化架構(gòu)

優(yōu)化 "Block tree"

更激進(jìn)的 static tree hoisting 功能 (檢測靜態(tài)語法,進(jìn)行提升)

支持 Source map

內(nèi)置標(biāo)識符前綴(又名"stripWith")

內(nèi)置整齊打?。╬retty-printing)功能

移除 Source map 和標(biāo)識符前綴功能后,使用 Brotli 壓縮的瀏覽器版本精簡了大約10KB

**運(yùn)行時(Runtime)**

- 介紹

run time 可以理解為程序運(yùn)行時,即是程序被編譯了之后,打開程序并運(yùn)行它直到程序關(guān)閉的這段時間的系列處理

- 內(nèi)容

runtime-core 虛擬 DOM 渲染器、Vue 組件和 Vue 的各種API

runtime-test將DOM結(jié)構(gòu)格式化成對象,方便測試

runtime-dom 基于runtime-core編寫的瀏覽器的runtime (增加了節(jié)點的增刪改查,樣式處理等),返回render、createApp方法

- 優(yōu)點

速度顯著提升

同時支持 Composition API 和 Options API,以及 typings

基于 Proxy 實現(xiàn)的數(shù)據(jù)變更檢測

支持 Fragments (允許組件有從多個根結(jié)點)

支持 Portals (允許在DOM的其它位置進(jìn)行渲染)

支持 Suspense w/ async setup()

**reactivity**

單獨的數(shù)據(jù)響應(yīng)式系統(tǒng),核心方法reactive、effect、 ref、computed

vue 整合 compiler + runtime

# 總結(jié)

個人覺得vue在逐漸react化,初步對比react17的源碼以及vue3.0的代碼后發(fā)現(xiàn)有很多異曲同工之處,尤大借鑒了react hook的想法,但是規(guī)避了一些react的問題。

我們將在后續(xù)的博客中介紹vue3大模塊 :compiler-module,renderer-module,reactivity-module



vue3.0源碼分析 vue-next-master目錄結(jié)構(gòu)的評論 (共 條)

分享到微博請遵守國家法律
庄浪县| 温宿县| 连江县| 昌宁县| 绵阳市| 靖宇县| 博罗县| 南昌市| 涿州市| 交口县| 兴隆县| 遂平县| 江油市| 新泰市| 平度市| 收藏| 沅陵县| 定安县| 兴文县| 扶风县| 巴塘县| 盈江县| 宜城市| 亳州市| 疏附县| 丹寨县| 龙山县| 滦南县| 易门县| 永福县| 昭平县| 巩义市| 阿拉善盟| 阿坝| 清镇市| 乌拉特后旗| 漳浦县| 广德县| 廉江市| 安泽县| 遂溪县|