Weex 和 Web 平臺的差別

Weex 是一個跨平臺解決方案,Web 平臺只是其一種運行環境,除此以外還能夠在 Android 和 iOS 客戶端中運行。原生開發平臺和 Web 平臺之間的差別,在功能和開發體驗上都有一些差別。javascript

Weex 環境中沒有 DOM

DOM(Document Object Model),即文檔對象模型,是 HTML 和 XML 文檔的編程接口,是 Web 中的概念。Weex 的運行環境以原生應用爲主,在 Android 和 iOS 環境中渲染出來的是原生的組件,不是 DOM Element。html

不支持 DOM 操做

既然原生環境中不支持 Web API,沒有 Element 、Event 、File 等對象,詳細列表能夠參考 Web APIs on MDN。不支持選中元素,如 document.getElementById 、 document.querySelector 等;固然也不支持基於 DOM API 的程序庫(如 jQuery)。java

有限的事件類型

Weex 支持在標籤上綁定事件,和在瀏覽器中的寫法同樣,可是 Weex 中的事件是由原生組件捕獲並觸發的,行爲和瀏覽器中有所不一樣,事件中的屬性也和 Web 中有差別。android

  • 並不支持 Web 中全部的事件類型,詳情請參考《通用事件》
  • 不區分事件的捕獲階段和冒泡階段,至關於 DOM 0 級事件。

Weex 環境中沒有 BOM

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

可以調用移動設備原生 API

在 Weex 中可以調用移動設備原生 API,使用方法是經過註冊、調用模塊來實現。其中有一些模塊是 Weex 內置的,如 clipboard 、 navigator 、storage 等。框架

爲了保持框架的通用性,Weex 內置的原生模塊有限,不過 Weex 提供了橫向擴展的能力,能夠擴展原生模塊,具體的擴展方法請參考《iOS 擴展》 和《Android 擴展》

有些接口在瀏覽器環境中也存在,不過在使用時應該注意瀏覽器的兼容性;如剪貼板功能,出於安全性考慮,絕大多數瀏覽器都限制其使用

相關文章
相關標籤/搜索