ni-app 對 vue3 & Vite 的升級,是一個漸進(jìn)式過程:
至此,uni-app 在全平臺支持了 Vite 編譯及Vue 3.x 運行。
so,這場持續(xù)一年之久的大版本升級,究竟給 uni-app 項目帶來了哪些提升?
是時候總結(jié)(秀)一波了。
新版 uni-app 框架主要做了三大改進(jìn):
基于這三大改進(jìn),uni-app 項目獲得了多快好省的四大收益:
新版 uni-app 支持Vue 3.x框架,支持組合式API,可實現(xiàn)更聚焦的業(yè)務(wù)開發(fā)。
Vue 3.x的一些新增特性,uni-app 也已經(jīng)完全支持,如:
另外,在小程序平臺,新版 uni-app 也擴(kuò)展了更多的語法,如:
開發(fā)者日常工作中,最無聊的就是等待編譯構(gòu)建。
某乎上還有一個”程序員在等待編譯的時候都做什么?“的討論帖,可見編譯時間對開發(fā)者而言,是一個多么尷尬無聊的碎片時間。
uni-app 本次升級 vue3 & Vite 后,在編譯時間上有多少改進(jìn)?帶給開發(fā)者多少福利?我們安排真實測試,以數(shù)據(jù)說話。
測試環(huán)境說明:
硬件:RedmiBook 14 二代
處理器:Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz
內(nèi)存:16.0 GB
操作系統(tǒng):Windows 11 專業(yè)版 64 位操作系統(tǒng)
關(guān)于編譯速度,我們做了兩個維度的對比:
我們選擇uni-app默認(rèn)模板、uni-starter、hello-uniapp三個項目模板,分別測試 vue 2.6 和 vue 3.x 的編譯時間。
uni-app項目編譯時間的采集方式:
對 uni-app 的三個項目模板分別運行到H5平臺,進(jìn)行多次編譯測試,并求其均值后,獲得如下數(shù)據(jù):
由此,我們可以觀察到:
通過圖表對比,我們可以直觀得出結(jié)論:vue 3.x 環(huán)境下的首頁編譯時間,平均不到 vue 2.6 環(huán)境下的十分之一。
換言之, vue 3.x 版本下的首頁編譯速度,相比 vue 2.6 版本,有十倍效率提升。
這個十倍效率提升,主要得益于新版采用Vite作為構(gòu)建工具,由此帶來了兩大好處:
本著這個十倍效率提升,小伙伴們還不趕緊上手試試?
對 uni-app 的三個模板項目運行到微信小程序平臺,多次編譯測試,并求其均值后,獲得如下數(shù)據(jù):
從上圖對比數(shù)據(jù)來看,我們可以得出結(jié)論:小程序平臺, vue 3.x 版本下的運行編譯,相比 vue 2.6 版本,編譯性能至少提升30%;且項目越復(fù)雜,編譯性能提升越明顯,可以達(dá)到40% ~ 50%。
對 uni-app 的三個項目模板繼續(xù)運行到App平臺,多次編譯測試,并求其均值后,獲得如下數(shù)據(jù):
從上圖對比數(shù)據(jù)來看,我們可以得出結(jié)論:App平臺, vue 3.x 版本下的運行編譯,相比 vue 2.6 版本,編譯性能提升將近50%。
雖沒有H5平臺的十倍效率提升那么刺激,但將近50%的速度提升,經(jīng)常開發(fā)小程序/App的小伙伴,還不心動?
除了采用不同版本的 uni-app 進(jìn)行縱向?qū)Ρ韧猓覀冞€使用業(yè)內(nèi)優(yōu)秀的跨端框架Taro,創(chuàng)建空的項目模板,進(jìn)行橫向?qū)Ρ葴y試。
具體測試方案:
關(guān)于Taro編譯時間的計算方案:
然后使用 uni-app 的cli命令行,創(chuàng)建基于 vue 3.x 的空項目模板,項目命名為uni-app-vue3。
我們使用各自框架的命令行,將如上創(chuàng)建的5個項目分別編譯到H5平臺和小程序平臺,多次測試,并求其均值。
同框架版本在H5平臺上的編譯時間,結(jié)果如下:
從圖中可以看出, uni-app 的 vue3 版本,在H5平臺上的首頁編譯預(yù)覽性能是遙遙領(lǐng)先的。這個遙遙有多遠(yuǎn)呢?這么講吧,你都編譯20次了,友商第一次還沒完呢。
繼續(xù)編譯到微信小程序平臺,多次測試,求其均值,結(jié)果如下:
從圖中可以看出, uni-app 的 vue 3.x 版本,在微信小程序平臺上的編譯性能也是遙遙領(lǐng)先的,這個遙遙也不近。
開發(fā)環(huán)節(jié)編譯快了,那面向最終用戶的軟件,運行性能怎么樣?
我們進(jìn)入性能測試章節(jié)。
測試方案:
測試計時方式:
在小米手機(jī)上進(jìn)行多次測試,求其平均值,結(jié)果如下:
從表格中可以看出:
從這個常見的長列表組件響應(yīng)實驗來看, vue 3.x 的性能體驗要遠(yuǎn)高于 vue 2.6 版本。
項目發(fā)行后的代碼體積,是一個很重要的考量指標(biāo):
為了測試 vue 3.x 新版升級后,代碼體積的變化,我們同樣做了兩個維度的測試:
Tips:
我們復(fù)用之前創(chuàng)建的uni-app默認(rèn)模板、uni-starter、hello-uniapp三個項目模板,分別測試 vue 2.6 和 vue 3.x 的編譯包體積。
uni-app 項目編譯包體積的采集方式:編譯到對應(yīng)平臺后,記錄編譯后文件夾的大小。
H5平臺編譯后代碼體積記錄如下:
從統(tǒng)計結(jié)果來看, uni-app 的 vue 3.x 版本,在H5平臺上的編譯包體積至少瘦身30%以上。
H5平臺的瘦身優(yōu)化,主要得益于 uni-app 框架的底層全面重構(gòu),實現(xiàn)了更徹底的搖樹優(yōu)化。
微信小程序平臺編譯后代碼體積記錄如下:
從統(tǒng)計結(jié)果來看, uni-app 的 vue 3.x 版本,在小程序平臺上也有大幅瘦身。
App平臺編譯后代碼體積記錄如下:
從統(tǒng)計結(jié)果來看, uni-app 的 vue 3.x 版本,在App平臺上根據(jù)項目不同,會有不同幅度的瘦身。
從理論上來講,項目中的頁面模板越復(fù)雜,App平臺的瘦身效果越明顯。
關(guān)于編譯后的代碼體積,我們也和業(yè)內(nèi)優(yōu)秀的跨端框架Taro進(jìn)行了對比,復(fù)用前面章節(jié)創(chuàng)建的三個Taro項目,分別編譯到H5平臺和小程序平臺,計算其編譯后的源碼文件夾大小。
從圖中可以看出, uni-app 的 vue3 版本,在H5平臺上編譯包體積是最小的,只有友商的十分之一左右。
我們繼續(xù)測試,不同版本框架發(fā)行到微信小程序平臺,記錄其編譯包大小:
從圖中可以看出, uni-app 的 vue3 版本,在小程序平臺上編譯包體積也是最小的。
Tips:細(xì)心的開發(fā)者會發(fā)現(xiàn),所有框架版本編譯到小程序上的代碼包體積都遠(yuǎn)小于其在H5平臺上的包體積,這是因為小程序由平臺廠商提供內(nèi)置組件及接口實現(xiàn),而H5平臺則需跨端框架自己實現(xiàn)內(nèi)置組件及接口,故H5平臺的代碼包普遍要大一些。
綜上,我們以數(shù)字說話,闡述了基于 vue3 版本開發(fā) uni-app 項目的諸多優(yōu)勢,再回顧一遍:
你還不趕緊升級新版 uni-app 來試試嗎?
對文本測試過程及結(jié)果有疑問的同學(xué),歡迎到github上提交issue,歡迎指正。
macbook pro 13英寸M1版,2021年購入,一年多的時間,終于完全適應(yīng)了mac os的系統(tǒng),已從windows陣營徹底撤離。
包括偶爾一些開發(fā)層面的偏門工具類exe小應(yīng)用,亦可在mac上運行。不是para虛擬機(jī),而是使用cross over,非常輕量。
cross over
至今,除了一些專業(yè)業(yè)務(wù)領(lǐng)域的專用軟件,可能僅有windows版本,以及對其數(shù)據(jù)進(jìn)行破解的需求外,其他我已沒有任何依賴windows的需求。(不玩游戲)
當(dāng)初想要撤出windows,尤指win10,主要出于四點原因。
可能我沒找到方法,或者找的方法不對,包括關(guān)閉系統(tǒng)設(shè)置中的更新、關(guān)閉windows update服務(wù)、關(guān)閉windows update的計劃任務(wù)等。
總之這個點讓我折騰了很大的勁,也沒能把它關(guān)閉,因為我習(xí)慣不關(guān)機(jī),總隔一段時間發(fā)現(xiàn)其上服務(wù)沒在運行了,打開一看,自動重啟了。
我相信存在正確關(guān)閉它的方法,但我認(rèn)為把時間花在倒騰這個事情上,實在不值得。
因為經(jīng)常搞逆向,總會難免用到一些破解類的工具應(yīng)用,一裝一運行,嘩嘩嘩彈出通知,被windows defender識別病毒殺掉甚至自動清除,但我始終無法找到退出它的方法,以讓我正常運行這些軟件。
不管是加白名單,還是從隔離區(qū)釋放回來,總之再次運行時,它將再次被封殺,導(dǎo)致我只能找一臺運行其他版本windows的電腦來運行我的軟件。
我記得過去我曾經(jīng)用的win10,右下角windows defender圖標(biāo)右擊是有退出選項的,但目前在用的這個版本,根本沒有,網(wǎng)上搜的帖子也是跟我的情況對不上號。
總之跟windows update一樣,折騰來折騰去,也沒能把它關(guān)了,心累。
這個我想很多人都遇到過,好好地突然自動重啟,然后藍(lán)屏了,或者開機(jī)后變成了黑白的命令行界面。 有時嘗試重新插拔內(nèi)存條,可以解決,但大部分時候都不管用,這時唯一的解決方法就是重裝系統(tǒng)。
對于開發(fā)者來說,尤其對于強(qiáng)迫癥患者來說,這是極度痛苦的事情。 一堆設(shè)置、環(huán)境需要重新配置,各種緩存、本地庫需要重新下載,尤其對于使用多種開發(fā)語言和ide的開發(fā)者,每次重裝至少要耗費掉3天的時間,才能完全回到之前的狀態(tài)。
當(dāng)然可以使用備份或虛擬機(jī)或云環(huán)境的方法減少遇到此類問題時的損失,但是至少我,不愿意花費太多時間在業(yè)務(wù)之外的事情上。
上述3點是我在臺式機(jī)上遇到的問題。
在2018年,我還曾經(jīng)購入過一臺華為matebook x pro,運行的是win10系統(tǒng)。
這臺筆記本,也經(jīng)常遇到一件讓我非常頭疼的事情,就是鎖屏(或者偶爾不鎖屏)的情況下,合蓋,而后再次打開時,屏幕將沒有任何顯示,始終黑屏狀態(tài)的奇葩問題。
屏幕雖然不亮,但是仔細(xì)聆聽,發(fā)現(xiàn)風(fēng)扇在運行,鍵盤操作亦有響應(yīng),甚至用鍵盤快捷鍵進(jìn)行一些盲操,能正確聽到揚聲器發(fā)出的提示音,說明系統(tǒng)應(yīng)該仍在運行且是正常運行。 但是始終無法點亮屏幕,最終只得長按電源鍵強(qiáng)關(guān)再開。
到底是系統(tǒng)的問題,還是硬件的問題,不得而知,并且現(xiàn)在已經(jīng)不重要了。
開發(fā)app需要用到mac os的xcode,即使使用了uniapp這種混合開發(fā)技術(shù),但最終我希望自己打包,所以會需要用到它。
當(dāng)然可以考慮黑蘋果,但是不想折騰,也是因為同行對mac的高度贊譽,導(dǎo)致我還是想直接入手真機(jī)。
綜上這些原因,已使用了10年+windows系統(tǒng)的我,最終選擇嘗試使用蘋果機(jī)。
這臺蘋果機(jī)倒也并非完美,一些體驗或交互設(shè)計上是不如windows的,但整體感受優(yōu)于windows,前提是你已適應(yīng)它并且做出客觀評價。
但使用一年多來,我仍然歷經(jīng)了2次重裝系統(tǒng)。
第一次是由于強(qiáng)迫癥。
我對這臺mac的定位是主力機(jī),工作和個人的需求都由它來完成,所以我希望盡可能保證其中的各種應(yīng)用、環(huán)境、配置能夠精煉、完好,不要有亂七八糟的垃圾,畢竟硬盤容量珍貴。
但由于是第一次使用mac os,所以各種配置、安裝很雜亂,不成體系,導(dǎo)致最終機(jī)子變得一團(tuán)糟,倒并未影響使用,只是讓我覺得非常不舒服,所以最終進(jìn)行了一次重裝。
第二次是因為沒有經(jīng)驗踩了坑。
因為經(jīng)常會彈窗通知升級推送,之前我一直沒理會,用得挺好的沒必要升級,但是最近一次推送過來,我覺得有點煩了,每次開機(jī)都要跳一遍提示,想想升了就升了吧。
最新13 ventura的更新
結(jié)果就入了坑,升級完之后,發(fā)現(xiàn)cross over無法運行了,vscode的go插件也出了問題,其他的也沒有細(xì)用,未知。
cross over是個大問題,因為我有一個windows軟件運行需要依賴它,所以必須解決。 想想就手動解決一下吧,根據(jù)錯誤提示,發(fā)現(xiàn)是因為缺少了指定的python環(huán)境,結(jié)果又去倒騰安裝了python環(huán)境,搞了一圈,好不容易裝上一個符合版本的python,但是它卻又不是arm64位架構(gòu)的版本。。。
后來查證發(fā)現(xiàn),mac os從大概是12.3的版本吧,自帶python環(huán)境從2.x升級到了python3,所以導(dǎo)致之前很多依賴該版本python的程序就無法正常運行了。
我又想裝一個新版本的cross over,官網(wǎng)看了下已能支持mac os13,但是這個軟件是收費的,雖然不貴,但是搞技術(shù)的,沒有掏錢買應(yīng)用的習(xí)慣。
所以我去到之前下載破解軟件的網(wǎng)站,macwk.com,發(fā)現(xiàn)訪問不了了,查了一圈,說是因為運營問題,已經(jīng)關(guān)站了。
waf,當(dāng)我需要它的時候,它卻關(guān)閉了。
找了很多其他類似的破解網(wǎng)站,但是沒能找到合適的,macwk.com是我遇到的最佳破解應(yīng)用下載站,沒有之一,可它已成為了過去式。
最后為了解決這個問題,適配版本沒找到,想自己解決,裝了一堆對我沒必要的環(huán)境,還沒能解決問題,加上升級的是mac os13,ui界面讓我覺得也不是很習(xí)慣,所以我動搖了,開始考慮重裝。
這是一個艱難的抉擇,重裝意味著我又要花費幾天時間進(jìn)行備份、數(shù)據(jù)轉(zhuǎn)移、重裝、重新配置,這個過程我經(jīng)歷過太多次,我深知其中的心力憔悴。
最終想,目前13版本是一個全新大版本,如果我不打算還原,意味著后面如果有更好的版本(事實是肯定會有更好的版本,新系統(tǒng)總會有問題),勢必會需要去升級,但是升級又會再次帶來什么樣的災(zāi)難是未知的,風(fēng)險太大。
加上cross over問題仍未解決,最終我還是下定決心選擇了重裝,打算撤回升級前的版本mac os 12.2。
重裝過程又帶來了問題
1.先準(zhǔn)備一個移動硬盤,把當(dāng)前整個系統(tǒng)做一次備份。
2.代碼該備份的備份,該提交的提交。
3.一些ide的配置、瀏覽器的配置、文檔的配置都導(dǎo)出或同步一下
4.準(zhǔn)備12.2的固件,一個10G+的ipsw文件(必須要使用低于12.3的版本,否則還是python3的環(huán)境,這樣就不能解決我cross over的問題,這個固件也是好不容易找到的)
5.準(zhǔn)備重裝,查了下方法,發(fā)現(xiàn)需要另一臺mac設(shè)備,安裝一個叫Apple Configurator的應(yīng)用,然后連接2臺mac,使用安裝了Apple Configurator的機(jī)器給另一臺待重裝的mac進(jìn)行重裝。
這步倒不是很困難,但是我重裝時,恰逢周末,不想出門去找同事借臺mac來操作。也不想在工作日重裝,浪費工作時間。想去蘋果售后吧,也嫌麻煩,還要預(yù)約,跑到市中心去,太折騰。
于是找到另一個方法,用官方的應(yīng)用安裝器鏡像來安裝系統(tǒng)。
官網(wǎng)指引
找鏡像又找了半天,因為app store中直接搜索鏡像,只能找到最新13的,而沒有歷史的老版本。
最終在官網(wǎng)上找到一個鏈接,點擊后會跳轉(zhuǎn)到app store中鏡像下載頁面。
官網(wǎng)指引
這次我直接選擇了mac os 11,也就是big sur,因為如果選擇12monterey,仍然是最新的版本,還是最新的python3環(huán)境。 好在我的mac出廠就是big sur,能支持,否則將無法安裝。
app store的big sur下載界面
于是下載了big sur安裝器,然后按照官方的介紹,找了個16G U盤,制作了引導(dǎo)安裝器。
制作完成后,開機(jī)進(jìn)入引導(dǎo)器,按照指引進(jìn)行安裝。
在選擇安裝的目標(biāo)磁盤時,又提示我無法降級,我嚇出一身冷汗,難道折騰半天又要泡湯了嗎?
再次尋找原因,發(fā)現(xiàn)是因為磁盤尚未格式化,其中裝載了13的系統(tǒng),所以提示無法降級。
帶著忐忑的心情,將磁盤做了格式化(比較放心,因為已經(jīng)用time machine做了全量備份),再次嘗試。
終于,開始了期盼已久的裝機(jī)程序。
后面比較順利,一番等待,我的mac終于回到了最初的big sur。
后面就是從備份中導(dǎo)回數(shù)據(jù),重新安裝各種環(huán)境和軟件。
但是最后一個疏忽來了,當(dāng)時數(shù)據(jù)庫中的數(shù)據(jù)沒有做備份。。。
原本是想著已經(jīng)全量備份了,到時恢復(fù)只要把data目錄中的文件復(fù)制回去就行。 但是大意了,用的數(shù)據(jù)庫是mysql8,innodb引擎,只有ibd文件,直接放回原有目錄,數(shù)據(jù)庫并不能識別。。。 又是一番折騰,先用ibd2sdi工具還原出表結(jié)構(gòu),再重新創(chuàng)建表,然后再把ibd文件放回去,并導(dǎo)入表空間。
最終,差不多用了3天的時間,才把所有需要的環(huán)境和應(yīng)用程序,包括各種配置,成功處理好,回到了之前熟悉的狀態(tài)。
直到現(xiàn)在,我仍然在使用安裝了mac os 11 big sur的這臺mac book pro,我覺非常滿意,絲滑。 至于升級這件事,只要不強(qiáng)制,只要軟件還能運行,我想我以后都不會再“犯錯”了,big sur用到報廢吧。
一年來的使用體驗是,運行絲滑,不會有windows各種崩潰錯誤卡機(jī),當(dāng)然偶爾也是會存在的(至今遇到過大概2次突然自動重啟的問題) 。m1的性能強(qiáng)大究竟有多強(qiáng),我沒有做過研究,感覺運行我的軟件,也并沒有強(qiáng)大到秒開的境界。
當(dāng)然它所宣傳的優(yōu)勢好像是在視頻圖像處理方面,但我不曾用它處理過視頻。
但是強(qiáng)悍的是它的風(fēng)扇,使用至今,從未聽到過風(fēng)扇的旋轉(zhuǎn)聲,開始我一度懷疑它沒有風(fēng)扇,或是風(fēng)扇存在故障。 后來直到用了一款風(fēng)扇軟件,手動調(diào)節(jié)轉(zhuǎn)速,才發(fā)現(xiàn)是有風(fēng)扇的,只是平時轉(zhuǎn)速極低,或者根本沒有在運轉(zhuǎn)。 另一個用老intel芯片的mac同事,看到這臺m1的風(fēng)扇,也發(fā)出了驚嘆,因為他的mac只要多開幾個軟件,風(fēng)扇就呼呼響,溫度飛快上升,冬天是個非常好用的暖手寶。
風(fēng)扇軟件顯示機(jī)器當(dāng)前轉(zhuǎn)速為0 RMP
對于這塊,我沒有太多體會,之前用的華為matebook,也沒有注意過風(fēng)扇的問題。
軟件方面,m1的適配,已支持越來越多,我所用到的應(yīng)用程序,基本90%都有arm64位版本,至于x86版本的運行,也沒發(fā)現(xiàn)有什么問題,體驗基本一致。
唯一奇怪的是合蓋,可以長期不關(guān)機(jī)使用是mac相比windows的優(yōu)點,但我有次嘗試不關(guān)機(jī),拔掉電源,合蓋,第二天發(fā)現(xiàn)電量消耗了超過50%。 但是這點我也不care了,因為我需要每天將它在公司與家之間往返,聽同事說,它的mac有次因為沒關(guān)機(jī),放在車?yán)铮赡苡捎谡饎訉?dǎo)致了一些問題。 所以我現(xiàn)在也基本保持了下班就關(guān)機(jī),用時再開的習(xí)慣。
最后總結(jié),mac os和macbook的確是很好用的東西,它讓我能夠?qū)W⒂诠ぷ鳎粫驗橄到y(tǒng)層面的各種疑難雜癥被困擾。
軟件層面,支持的已經(jīng)非常不錯。
硬件層面,觸控板、揚聲器和續(xù)航讓我印象深刻。
作為一個專業(yè)領(lǐng)域的開發(fā)人員,我對它已經(jīng)非常滿意。
最后給安利一個macwk的替代品,appstorrent.ru,一個俄羅斯的網(wǎng)站,雖然資源和細(xì)節(jié)不如macwk,但我看了一圈,它是相對較好的了。