小程式原理之: WXSS 編譯
過往中小企業或技術團隊開發一個 App 的時間成本和人力成本居高難下,但是隨著微信上線小程式,更像是為這部分群體開啟了一扇天窗,此後小程式呈現出井噴式發展的狀態,不僅微信,支付寶、百度、抖音等超級 App 都跟上步伐上線小程式平臺。
小程式能夠得到快速發展的原因,現在看來主要有三:一是之前中小企業開發 App 門檻高,耗時耗力還可能出現各種bug和體驗不佳的問題;二是原有的 Web 端的使用者生態並不完整,在 Web 上做業務的收益越來越小;三是背靠微信、支付寶等流量平臺的紅利,可以快速低成本獲得使用者。
如果概括的講小程式的優勢也可以分為以下幾個小點:
-
獲客成本低:掛靠微信/支付寶等超級 App,讓超級 App 的使用者成為自己的潛在使用者。
-
使用者訪問成本低:透過掃一掃、附近的小程式、分享、App 內搜尋等即可直接訪問。
-
更輕量觸達:不必再記住網址,不必下載 App,點選直達。
-
使用者體驗更好:功能幾乎和 App 一樣全面,包括語音、支付、地理等,遠超 H5 的體驗。
-
使用者負擔更小:一個賬號走天下,減輕個人負擔,包括賬號、會員、線上、線下。
-
更安全:安全無需自己維護,由超級 App 直接負責。
那小程式對於中小企業來講是否還有難點呢?那必然有!WXML、WXSS、架構、規則、文件,對於開發者來說可能都是陌生事物。
小程式編譯
微信開發者工具和微信客戶端都無法直接執行小程式的原始碼,因此我們需要對小程式的原始碼進行編譯。更通俗的講可以理解為:小程式編譯更像是一個翻譯器,把小程式原始碼翻譯為微信客戶端和開發工具可以讀懂的語言,以便能夠明白小程式想要表達和實現的效果。
程式碼編譯過程包括本地預處理、本地編譯和伺服器編譯。為了快速預覽,微信開發者工具模擬器執行的程式碼只經過本地預處理、本地編譯,沒有伺服器編譯過程,而微信客戶端執行的程式碼是額外經過伺服器編譯的。
什麼是 WXSS ?
小程式是基於 Web 規範,採用 HTML 、CSS 和 JS 等搭建的一套框架,微信官方給它們取了一個很厲害的名字:WXML、WXSS,但本質上還是在整個 Web 體系之下構建的。
所以在正式瞭解小程式編譯的原理前,非常有必要搞清楚什麼是 WXML 、WXSS 。
WXML:WeiXin Markup Language ,是框架設計的一套標籤語言,結合基礎元件、事件系統,可以構建出頁面的結構。
WXSS :WeiXin Style Sheets ,是一套樣式語言,用於描述 WXML 的元件樣式。 WXSS 用來決定 WXML 的元件應該怎麼顯示。WXSS 具有 CSS 大部分特性。同時為了更適合開發微信小程式,WXSS 對 CSS 進行了擴充以及修改,更通俗的可以理解成基於CSS改了點東西,又加了點東西。
與 CSS 相比,WXSS 擴充套件的特性有:
-
尺寸單位
-
樣式匯入
如何進行編譯?
小程式的框架包含兩部分 View 檢視層、AppService 邏輯層,View 層用來渲染頁面結構,AppService 層用來邏輯處理、資料請求、介面呼叫,它們在兩個程式(兩個Webview)裡執行。
WXSS 並不可以直接執行在 Webview 層進行渲染,而是透過了一層編譯工具。
編譯的工具名字叫 WCSC,這個編譯的過程是在微信開發者工具端執行的,在微信開發者工具的控制檯介面,輸入 help() 命令可見如所示介面。
如果 help() 函式執行後無效果或者報錯,請檢查控制檯下方位置是否為 top 選項卡。
可以看到這裡有一些命令,繼續在控制檯執行第八條 openVendor() 命令。這時候彈出了一個名為 WeappVendor 的資料夾,可以看到最後一個檔名稱正是我們要尋找的 WCSC 。檔案種類是可執行檔案。WXSS 正是用這個工具來編譯的。
我們找到了 WCSC 編譯工具後,把這個工具複製到專案的 pages/index 目錄下,與 index.wxss 同目錄。
在執行編譯前,先看一下 index.wxss 內部結構是怎樣的。 看完內部結構後,把終端目錄開啟到 pages/index 目錄中。執行: $ ./wcsc -js index.wxss >> wxss.js 這時候可以看到目錄中多了一個 wxss.js 檔案。
wxss.js 檔案就是 WXSS 檔案編譯後的檔案,index.wxss 檔案會先透過 WCSC 可執行程式檔案編譯成 js 檔案。並不是直接編譯成 css 檔案。
以上就是微信小程式編譯的原理。
當然支付寶小程式、百度小程式、
FinClip小程式等原理都大同小異,只不過官方起名換了一種叫法,例如支付寶小程式將 WXML 、WXSS 分別稱為 AXML、ACSS,FinClip小程式分別叫做FXML、FTSS。
小程式的深化價值
這種「Native + 小程式」的混合開發模式其實非常適合現已經有 App 的企業,一是優質的體驗已經成為使用者決定是否開啟app的重要因素;二是低成本的開發和跨端,能夠避免 iOS、Android 重複開發;三是小程式管理後臺直接上架下的方式相當於讓app具備了熱更新能力,規避了應用商店上架稽核的流程。
例如 FinClip 在整合 SDK 後便使得自己的 App 具備小程式執行能力,配合小程式管理後臺能夠實現全生命週期的管理,不管是上下架、授權、使用資料都能實現低門檻使用,而免費的社群版也基本上能夠滿足一般企業的使用規模。
希望能夠帶給接觸過小程式開發的同學一些更深入的認識,也能夠幫助深入學習小程式開發的同學一些新的思路。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70021577/viewspace-2931455/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 小程式WXSS
- 微信小程式之wxss05微信小程式
- webstorm配置scss/less轉wxss,小程式配置scss轉wxssWebORMCSS
- 小程式反編譯教程編譯
- 小C語言--詞法分析程式(編譯原理實驗一)C語言詞法分析編譯原理
- 走進Golang之編譯器原理Golang編譯
- 編譯原理編譯原理
- 「小程式JAVA實戰」 小程式wxss樣式檔案的使用(七)Java
- 如何反編譯微信小程式?編譯微信小程式
- 程式的編譯和連結原理分析編譯
- Flutter 編譯原理Flutter編譯原理
- 編譯原理之語法分析-自下而上分析(四)編譯原理語法分析
- 編譯原理之語法分析-自下而上分析(三)編譯原理語法分析
- 【國外精選課程】編譯原理入門之編譯階段概述編譯原理
- 微信小程式反編譯~2020年微信小程式編譯
- Typescript編譯原理(一)TypeScript編譯原理
- Vue 模板編譯原理Vue編譯原理
- 編譯原理概覽編譯原理
- 模板函式編譯原理函式編譯原理
- 微信小程式“反編譯”實戰(一):解包微信小程式編譯
- Make編譯之編譯32bit ffmpeg編譯
- 深入分析 Javac 編譯原理Java編譯原理
- ZOMI的AI編譯原理2AI編譯原理
- ZOMI的AI編譯原理1AI編譯原理
- TIR 的概念和編譯原理編譯原理
- vue模板編譯(原理篇)Vue編譯
- 編譯原理讀書筆記編譯原理筆記
- 從編譯後的程式碼,分析 Angular @Injectable 的工作原理編譯Angular
- 反編譯獲取任何微信小程式原始碼編譯微信小程式原始碼
- 一款開發小程式自動wxss轉換的命令列工具命令列
- Flutter編譯時生成程式碼之 code_builderFlutter編譯UI
- 程式碼線上編譯器(上)- 編輯及編譯編譯
- 【閱讀筆記】Taro轉小程式編譯原始碼解析筆記編譯原始碼
- 小程式框架選擇與平臺編譯能力測評框架編譯
- 交叉編譯工具鏈構建原理編譯
- 原始碼編譯安裝的原理原始碼編譯
- JavaScript預編譯原理, 引擎,作用域JavaScript編譯原理
- 要點提煉| 理解JVM之程式編譯&程式碼優化JVM編譯優化