Weex 是一個跨平臺解決方案,Web 平臺只是其一種運行環境,除此以外還能夠在 Android 和 iOS 客戶端中運行。原生開發平臺和 Web 平臺之間的差別,在功能和開發體驗上都有一些差別。javascript
DOM(Document Object Model),即文檔對象模型,是 HTML 和 XML 文檔的編程接口,是 Web 中的概念。Weex 的運行環境以原生應用爲主,在 Android 和 iOS 環境中渲染出來的是原生的組件,不是 DOM Element。html
既然原生環境中不支持 Web API,沒有 Element
、Event
、File
等對象,詳細列表能夠參考 Web APIs on MDN。不支持選中元素,如 document.getElementById
、 document.querySelector
等;固然也不支持基於 DOM API 的程序庫(如 jQuery)。java
Weex 支持在標籤上綁定事件,和在瀏覽器中的寫法同樣,可是 Weex 中的事件是由原生組件捕獲並觸發的,行爲和瀏覽器中有所不一樣,事件中的屬性也和 Web 中有差別。android
BOM(Browser Object Model),即瀏覽器對象模型,是瀏覽器環境爲 javascript 提供的接口。Weex 在原生端沒有並不基於瀏覽器運行,不支持瀏覽器提供的 BOM 接口。編程
window
、screen
對象Weex 中並未提供瀏覽器中的 window
和 screen
對象,不支持使用全局變量。若是是想要獲取設備的屏幕或環境信息,能夠使用 WXEnvironment
變量。瀏覽器
WXEnvironment
weexVersion
: WeexSDK 的版本。appName
: 應用的名稱。appVersion
: 應用的版本。platform
: 運行平臺,可能的值是 Web
、Android
、iOS
之一。osName
: 系統的名稱。osVersion
: 系統版本。deviceWidth
: 設備寬度。deviceHeight
: 設備高度。document
對象在瀏覽器中 document
表示了當前活動的文檔模型,在 Android 和 iOS 環境中並無這個對象,也不支持與其相關的 DOM 操做。安全
history
、location
、navigator
對象history
保存了當前頁面的歷史記錄,而且提供了前進後退操做。location
記錄了當前頁面 URL 相關的信息。navigator
記錄了當前瀏覽器中的信息。這些接口與瀏覽器自身的實現有關,能夠控制頁面的前進後退而且獲取狀態信息。雖然在 Android 和 iOS 中也有「歷史」和「導航」的概念,可是它是用於多個管理視圖之間的跳轉的。換句話說,在瀏覽器中執行「前進」、「後退」仍然會處於同一個頁籤中,在原生應用中「前進」、「後退」則會真實的跳轉到其餘頁面。weex
此外 Weex 也提供了 navigator
模塊來操做頁面的跳轉,使用方法參考《navigator 導航控制》。app
在 Weex 中可以調用移動設備原生 API,使用方法是經過註冊、調用模塊來實現。其中有一些模塊是 Weex 內置的,如 clipboard 、 navigator 、storage 等。框架
爲了保持框架的通用性,Weex 內置的原生模塊有限,不過 Weex 提供了橫向擴展的能力,能夠擴展原生模塊,具體的擴展方法請參考《iOS 擴展》 和《Android 擴展》。
有些接口在瀏覽器環境中也存在,不過在使用時應該注意瀏覽器的兼容性;如剪貼板功能,出於安全性考慮,絕大多數瀏覽器都限制其使用