H5應用優化
目前我們執行的H5應用直接是在專案下的server目錄中,這稱為開發版本,沒有進行優化。 在生產環境下,一般會將開發版本進行優化,生成釋出版本後上線,可提升H5應用效能。
用webcc編譯H5應用
[任務]
使用webcc工具,編譯專案下的server目錄,生成釋出版本目錄"output_web"。
作為一個WEB應用,釋出時最常見的需求是JS/CSS/HTML檔案合併和壓縮(minify)。 H5應用自身用的index.js/index.css檔案可以內嵌到主檔案index.html中,常用的邏輯頁面(包括html/css檔案)也可以內嵌到index.html中來。
筋斗雲通過名為webcc的工具進行應用優化,也稱為編譯。 本章詳細介紹可參考官方文件"webcc"。
我們先看怎麼執行它。 webcc是php工具,必須先安裝php環境(版本5.4或更高); 在Windows系統上,建議安裝git,它自帶的git-bash環境模擬了簡單的linux/unix環境,如果已安裝mingw或cygwin也可以。
webcc一般要求原始碼使用git管理,通過git命令查詢原始檔列表及版本差異,實現增量編譯、自動化釋出等功能。 如果你已用git管理專案,則在專案目錄中開啟git-bash(或其它linux shell環境),執行命令:
$ php tool/webcc.php server
上面server是待編譯的開發版本目錄,裡面有所有開發的內容。執行後生成釋出版本目錄"output_web"。
如果專案未使用git管理,則要求指定原始檔列表,在執行webcc之前必須先設定環境變數WEBCC_LS_CMD,例如:
$ export WEBCC_LS_CMD='find . -type f'
注意:上面命令會將目錄下所有檔案都編譯併發布,應確保清除目錄下無用的檔案。 如果你使用的是svn管理專案,則需要把".svn"目錄過濾掉以免生成到釋出目錄:
$ export WEBCC_LS_CMD='find . -type f | grep -v .svn'
或者使用svn命令精確列表哪些檔案要釋出:
$ export WEBCC_LS_CMD='svn ls -R'
至於編譯生成的釋出目錄和源目錄有哪些不同,下面將講述。
webcc配置解讀
在示例應用的server目錄下,有一個webcc.conf.php
的配置檔案,裡面定義了優化策略,一般無需修改:
$RULES = [
'*.html' => 'HASH',
...
];
第一條規則是server目錄下(不包括子目錄)的所有html檔案,即所有H5應用,執行HASH規則,對於html檔案,會處理其中的webcc標記。
在示例應用中,我們在index.html中查詢webcc
,可以看到有這些標記:
<!-- WEBCC_BEGIN MERGE=lib 外部庫 {{{-->
<link rel="stylesheet" href="lib/weui.min.css" />
<script src="lib/jquery-1.11.1.min.js"></script>
<script src="lib/jquery.touchSwipe.min.js"></script>
<!-- WEBCC_END }}}-->
<!-- WEBCC_BEGIN MERGE=lib-app 內部庫 {{{-->
mui.css, app.css等css檔案...
app_fw.js, app.js等js檔案...
<!-- WEBCC_END }}}-->
<!-- WEBCC_BEGIN MERGE 應用專用 {{{-->
<link rel="stylesheet" href="index.css" />
<script src="index.js"></script>
<!-- WEBCC_END }}}-->
...
<!-- WEBCC_BEGIN {{{ embeded pages -->
<!-- WEBCC_USE_THIS
WEBCC_CMD mergePage -minify yes page/home.html page/login.html page/login1.html page/me.html
WEBCC_END }}} -->
先看外部庫、內部庫,它們分別被放置在標記WEBCC_BEGIN MERGE=xxx / WEBCC_END
之中。
這意味著其中的css, js檔案會被合併到一起,壓縮後生成一個檔案xxx.js或xxx.css。
外部庫表示第三方庫,如果應用中用到了其它庫,且檔案大小並不大,可以放置到這一塊中,以便多個庫合併成一個檔案優化下載。 內部庫是筋斗雲框架自身及你的專案內所有H5應用的通用部分(app.js, app.css)。
應用專用就是當前H5應用用到的js/css。使用的webcc標記與前面比,沒有指定"MERGE=xxx",只指定了"MERGE",這表示合併其中內容到當前檔案,即把index.css/index.js內嵌到index.html檔案中。
最後一塊是內嵌邏輯頁,用"WEBCC_USE_THIS"標記和"mergePage"命令指定了一些邏輯頁,這些頁面一般是最常用的頁面,這個html及其引用的js檔案將被直接內嵌到index.html中。 框架在載入邏輯頁時,如果發現已內建於主html中則優先使用內建頁,否則就觸發缺頁中斷從而遠端載入。
相關文章
- H5快應用國際化H5
- MySQL應用優化MySql優化
- Web應用程式優化Web優化
- Android應用優化方案Android優化
- Android應用優化之冷啟動優化Android優化
- 移動應用效能優化優化
- Vue 應用效能優化指南Vue優化
- 資料庫應用優化(一)資料庫優化
- 資料庫應用優化(二)伺服器和配置優化資料庫優化伺服器
- Serverless 應用優化四則祕訣Server優化
- Flutter | 效能優化——如何避免應用 jankFlutter優化
- Flutter 應用效能檢測與優化Flutter優化
- 分析並優化 Android 應用記憶體佔用優化Android記憶體
- iOS app秒開H5優化總結iOSAPPH5優化
- 利用React 16.6新特性優化應用效能React優化
- Android應用優化之流暢度實操Android優化
- 得物App H5秒開優化實戰APPH5優化
- h5效能優化,細節決定結果。H5優化
- 網易雲信 QUIC 應用優化實踐UI優化
- Angular 應用裡的搖樹優化 - tree shakingAngular優化
- Android 應用構建速度提升Gradle配置優化AndroidGradle優化
- IIS應用程式池配置詳解及優化優化
- 網路應用優化——時延與頻寬優化
- [譯] 如何優化您的 Android 應用(Go 版)優化AndroidGo
- 騰訊雲H5語音通訊QoE優化H5優化
- 使用非同步元件優化Vue應用程式的效能非同步元件優化Vue
- 運籌優化(十五)--應用模型之分配問題優化模型
- 快應用微信H5支付H5
- 應用商店優化(ASO):哪些是2021年移動應用熱搜關鍵詞優化
- 應用TRIZ理論優化設計便捷式榨汁機優化
- 使用 Docker 部署 Node 應用 - 映象檔案尺寸的優化Docker優化
- 高吞吐低延遲Java應用的垃圾回收優化Java優化
- 上線清單 —— 20 個 Laravel 應用效能優化項Laravel優化
- 安卓應用效能除錯和優化經驗分享安卓除錯優化
- 視訊在H5遊戲中的應用H5遊戲
- 調優 | Apache Hudi應用調優指南Apache
- 百度APP-Android H5首屏優化實踐APPAndroidH5優化
- h5 ios輸入框與鍵盤 相容性優化H5iOS優化
- 紅帽應用服務組合功能全面擴充套件——優化雲原生應用開發套件優化