摘要:了解的構(gòu)建,可以從文件開(kāi)始命令內(nèi)關(guān)于構(gòu)建的命令如下版本從命令看出是通過(guò)來(lái)進(jìn)行構(gòu)建的同樣的構(gòu)建工具更強(qiáng)大一些,可以處理圖片等但是只做的處理,相比之下更輕量所以更適合框架的打包總共有三個(gè)版本的構(gòu)建從版本的為起點(diǎn)來(lái)了解,版本的構(gòu)建
了解Vue的構(gòu)建,可以從package.json文件開(kāi)始
sprits命令內(nèi)關(guān)于構(gòu)建的命令如下
{ ... "build": "node scripts/build.js”, // web版本 // sever "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer”, // weex "build:weex": "npm run build -- weex” … }
從命令看出:
vue是通過(guò)rollup來(lái)進(jìn)行構(gòu)建的
同樣的構(gòu)建工具webpack更強(qiáng)大一些,可以處理圖片、 css、js等;但是rollup只做js的處理,相比之下更輕量, 所以rollup更適合js框架的打包
總共有三個(gè)版本的構(gòu)建
從web版本的為起點(diǎn)來(lái)了解,Web版本的構(gòu)建命令實(shí)際執(zhí)行的是scripts/build.js
build文件的整個(gè)核心內(nèi)容是build方法
et builds = require("./config").getAllBuilds() if (process.argv[2]) { const filters = process.argv[2].split(",") builds = builds.filter(b => { return filters.some(f => b.output.file.indexOf(f) > -1 || b._name.indexOf(f) > -1) }) } else { //. 如果沒(méi)有參數(shù)就把weex給過(guò)濾掉 builds = builds.filter(b => { return b.output.file.indexOf("weex") === -1 }) } build(builds)
得到的整個(gè)的構(gòu)建流程是:
讀取./config 配置文件中的配置,再根據(jù)命令行中輸入的參數(shù),
exports.getAllBuilds = () => Object.keys(builds).map(genConfig)
// Object.keys(builds) 對(duì)象key的數(shù)組: 對(duì)應(yīng)val的是不同版本的編譯配置
// genConfig 配置rollup構(gòu)建的參數(shù)格式
其中g(shù)etAllBuilds方法返回的是一個(gè)對(duì)象數(shù)組
去到這些配置中進(jìn)行過(guò)濾,拿到對(duì)應(yīng)的版本編譯所需要的config, 傳入到buildEntry方法去執(zhí)行rollup編譯
rollup在.then內(nèi)執(zhí)行輸出的文件地址,以及代碼壓縮配置
其中config里的format 構(gòu)建格式
最后config文件最后導(dǎo)出的是遵循rollup構(gòu)建規(guī)則的所需要的數(shù)組對(duì)象
其中的別名配置暫不做分析,具體代碼在scripts/alias中,
補(bǔ)充: 在我們常用的web版Vue中,又區(qū)分了兩種獨(dú)立構(gòu)建和運(yùn)行時(shí)構(gòu)建
兩者直接的使用差別
Runtime Only 運(yùn)行時(shí)構(gòu)建,不包含模板編譯器,借助vue-loader將.vue文件編譯成js
優(yōu)點(diǎn): 代碼體積輕量
缺點(diǎn): 運(yùn)行時(shí)需要借助vue-loader,把template模版編譯成render函數(shù)
new Vue({
render (h) { return h("div", this.hi) }
})
Runtime+Compiler 包含模板編譯器
優(yōu)點(diǎn): 動(dòng)態(tài)把模版編譯成render函數(shù)
缺點(diǎn): 體積大,對(duì)性能有損耗
new Vue({ template: "{{ hi }}" })
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/109238.html
摘要:哪吒別人的看法都是狗屁,你是誰(shuí)只有你自己說(shuō)了才算,這是爹教我的道理。哪吒去他個(gè)鳥(niǎo)命我命由我,不由天是魔是仙,我自己決定哪吒白白搭上一條人命,你傻不傻敖丙不傻誰(shuí)和你做朋友太乙真人人是否能夠改變命運(yùn),我不曉得。我只曉得,不認(rèn)命是哪吒的命。 showImg(https://segmentfault.com/img/bVbwiGL?w=900&h=378); 出處 查看github最新的Vue...
摘要:前言為什么要做源碼解讀我們新到一個(gè)環(huán)境,第一件事情就是熟悉環(huán)境熟悉項(xiàng)目,這個(gè)很考驗(yàn)閱讀源碼的能力以及耐心。構(gòu)造函數(shù)拉到最下面,導(dǎo)出的是一個(gè)構(gòu)造函數(shù)。 前言 A: 為什么要做源碼解讀?Q: 我們新到一個(gè)環(huán)境,第一件事情就是熟悉環(huán)境熟悉項(xiàng)目,這個(gè)很考驗(yàn)閱讀源碼的能力以及耐心。vue是個(gè)很好的庫(kù),知名度高,對(duì)js的學(xué)習(xí)具有向上性,所以搞清楚邏輯是有好處的。A: 閱讀源碼的程度?Q: 我們完全...
摘要:我們都知道分為普通和作用域,兩個(gè)內(nèi)容都很多,所以分兩部分進(jìn)行講述。今天講的是普通其實(shí)普通,表示默認(rèn)和具名,只是他們的處理方式都差不多,就只是是否有自定義名字而已,所以,表示一種類(lèi)型。 寫(xiě)文章不容易,點(diǎn)個(gè)贊唄兄弟專(zhuān)注 Vue 源碼分享,文章分為白話版和 源碼版,白話版助于理解工作原理,源碼版助于了解內(nèi)部詳情,讓我們一起學(xué)習(xí)吧研究基于 Vue版本 【2.5.17】 如果你覺(jué)得排版難看,請(qǐng)...
摘要:目錄結(jié)構(gòu)構(gòu)建相關(guān)的文件,一般情況下我們不需要?jiǎng)鱼^子別名配置 目錄結(jié)構(gòu) ├── scripts ------------------------------- 構(gòu)建相關(guān)的文件,一般情況下我們不需要?jiǎng)萤? ├── git-hooks ------------------------- git鉤子│ ├── alias.js -------------------------- 別名配...
摘要:相關(guān)的內(nèi)容為這樣對(duì)于一個(gè)處理的第二階段也就結(jié)束了,通過(guò)去攔截不同類(lèi)型的,并返回新的,跳過(guò)后面的的執(zhí)行,同時(shí)在內(nèi)部會(huì)剔除掉,這樣在進(jìn)入到下一個(gè)處理階段的時(shí)候,不在使用的范圍之內(nèi),因此下一階段便不會(huì)經(jīng)由來(lái)處理。 文章首發(fā)于個(gè)人github blog: Biu-blog,歡迎大家關(guān)注~ Webpack 系列文章: Webpack Loader 高手進(jìn)階(一)Webpack Loader 高手...
閱讀 2845·2023-04-25 20:02
閱讀 1444·2021-11-11 16:55
閱讀 631·2021-09-26 09:46
閱讀 6218·2021-09-22 15:55
閱讀 1828·2021-08-09 13:41
閱讀 1582·2019-08-30 15:52
閱讀 2380·2019-08-30 14:13
閱讀 3301·2019-08-26 13:48