大前端敲門磚1-Uni的main.js入口文件

大前端敲門磚1-Uni的main.js入口文件

上期我們說到快速搭建Uni項目,並且結尾在main.js,這期就簡單瞭解下,main.js與本項目的main.js配置。

大前端敲門磚1-Uni的main.js入口文件

腳手架或IDE生成的模板main.js只有這些,引用Vue,主頁面App.vue(.vue文件被省略),下面幾行就是渲染生成頁面(或通過virtual dom)生成其他。

所謂virtual dom,沒有想的那麼高端,本質就是一個對象樹,每個節點對象包含了一個顯示對象(如果是生成網頁版)的所有元素,與DOM很像,所以叫virtual dom,白話就是虛擬文檔對象模型。

比如:{"文本":"", "類":"", "樣式":"", "id":"", "href":"", "子節點": [], 等等等等},然後通過原生api生成對應的原生組件。理論上來說,可以生成任何規則的組件。包括但不限於網頁標籤、移動端組件、小程序組件等等等等。對應方案為:Vue(及其衍生,當然React等也是),NativeScript、Weex、Uni等。你們所聽說過的mpvue,也是魔改的Vue,將其生成其他組件。

這裡注意下:像ionic與uni這些,App情況下,並非生成移動端原生組件,而是生成網頁,然後移動端加載webview,顯示一個網頁而已(雖然Uni中有部分組件是原生的,但核心還是這樣)。至於網頁是如何調用原生設備api的,這個就是一整套協議問題。簡單來說,iOS與Android都有在webview中點擊鏈接或打開鏈接時候捕獲到鏈接,然後判斷是否允許打開的功能api,那麼捕獲到鏈接字符,這個就可以玩各種規則了,具體就是看協議怎麼寫。Uni遵循的是HTML5+協議,說是工信部認可,是實事,因為自導資源所以也是自嗨(沒有貶義)。你有興趣也可以自己寫一套,姑且不說權威性,就原生幾十萬的api,就夠你寫個好幾年的了,這還不算調兼容性……所以能用輪子就輪子吧,別自命比天高了。


回到Uni,main.js這裡可以做很多事情,由於是入口文件,所以可以放置很多你的初始化配置,比如我這邊配置如下:

大前端敲門磚1-Uni的main.js入口文件

之前評論區提過,Uni有bug,比如這裡看到的components就沒法全局Mixin混入,日了狗。

從上往下看頂部的引用模塊,分別是:

大前端敲門磚1-Uni的main.js入口文件

常用工具,比如一些金額計算,小數點後有效數字等;

網絡請求封裝;

api接口地址;

BaaS相關數據庫的類名(class是關鍵詞,所以這裡多一個s);

本地儲存的靜態key;

dayjs,一個日期處理器,頻繁使用就掛載全局了;

maskLabel,打算全局引入的組件,無奈有bug不行,只能頁面內引用;


然後看掛載全局:

大前端敲門磚1-Uni的main.js入口文件

掛載工具;

掛載dayjs日期處理器;

掛載網絡請求;

掛載api地址;

掛載BaaS類;

掛載本地儲存key;

控制檯提示代碼是否壓縮,防止線上使用為壓縮代碼,這裡沒啥用,因為IDE發佈都壓縮處理了;

$isPro是用來判斷當前是否為生產環境,因為很多地方會用到區分;

$globalData用來儲存全局數據,簡單替代Vuex的部分數據通用部分。


最後就是混合了:

大前端敲門磚1-Uni的main.js入口文件

目前發現,除了Components無效外,其他都沒啥大問題。至於混合的意思,就是通用代碼了,沒別的。

這裡全局處理了分享小程序分享時候如果忘記帶上標題,則使用默認標題;

全局函數(就是每個頁面都有的函數),調用Loading,並且1秒後自動關掉。


至此,我們把main.js給梳理一遍,如果要展開,那得慢慢來,看似簡單,每個掛載對象都是相當複雜的。後面一點一點來。核心就是你知道這個是入口文件,可以配置一些全局功能,也基本就這個用處。其他時候,打不上什麼關係。


本期就到這裡,下期我們從首個全局vue文件即App.vue說起,到第一個頁面為止。遇到什麼說什麼,不以進度為目標,以全部說到為目標。


感興趣或者有幫助的,還請關注。


分享到:


相關文章: