# 小程序的運行環(huán)境
微信小程序運行在多種平臺上:iOS/iPadOS 微信客戶端、Android 微信客戶端、Windows PC 微信客戶端、Mac 微信客戶端、小程序硬件框架和用于調(diào)試的微信開發(fā)者工具等。
不同運行環(huán)境下,腳本執(zhí)行環(huán)境以及用于組件渲染的環(huán)境是不同的,性能表現(xiàn)也存在差異:
- 在 iOS、iPadOS 和 Mac OS 上,小程序邏輯層的 JavaScript 代碼運行在 JavaScriptCore 中,視圖層是由 WKWebView 來渲染的,環(huán)境有 iOS 14、iPad OS 14、Mac OS 11.4 等;
- 在 Android 上,小程序邏輯層的 JavaScript 代碼運行在 V8 中,視圖層是由基于 Mobile Chromium 內(nèi)核的微信自研 XWeb 引擎來渲染的;
- 在 Windows 上,小程序邏輯層 JavaScript 和視圖層都是用 Chromium 內(nèi)核;
- 在 開發(fā)工具上,小程序邏輯層的 JavaScript 代碼是運行在 NW.js 中,視圖層是由 Chromium Webview 來渲染的。
JavaScriptCore 無法開啟 JIT 編譯 (Just-In-Time Compiler),同等條件下的運行性能要明顯低于其他平臺。
# 平臺差異
盡管各運行環(huán)境是十分相似的,但是還是有些許區(qū)別:
JavaScript語法和 API 支持不一致:語法上開發(fā)者可以通過開啟ES6轉(zhuǎn)ES5的功能來規(guī)避(詳情);此外,小程序基礎庫內(nèi)置了必要的Polyfill,來彌補API的差異(詳情)。WXSS渲染表現(xiàn)不一致:盡管可以通過開啟樣式補全來規(guī)避大部分的問題,還是建議開發(fā)者需要在各端分別檢查小程序的真實表現(xiàn)。
開發(fā)者工具僅供調(diào)試使用,最終的表現(xiàn)以客戶端為準。