Weex 和 Web 平台的差异

Weex 是一个跨平台解决方案,Web 平台只是其一种运行环境,除此之外还可以在 Android 和 iOS 客户端中运行。原生开发平台和 Web 平台之间的差异,在功能和开发体验上都有一些差异。

Weex 环境中没有 DOM

DOM(Document Object Model),即文档对象模型,是 HTML 和 XML 文档的编程接口,是 Web 中的概念。Weex 的运行环境以原生应用为主,在 Android 和 iOS 环境中渲染出来的是原生的组件,不是 DOM Element。

不支持 DOM 操作

既然原生环境中不支持 Web API,没有 Element 、Event 、File 等对象,详细列表可以参考 Web APIs on MDN。不支持选中元素,如 document.getElementById 、 document.querySelector 等;当然也不支持基于 DOM API 的程序库(如 jQuery)。

有限的事件类型

Weex 支持在标签上绑定事件,和在浏览器中的写法一样,但是 Weex 中的事件是由原生组件捕获并触发的,行为和浏览器中有所不同,事件中的属性也和 Web 中有差异。

  • 并不支持 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 也提供了 navigator 模块来操作页面的跳转,使用方法参考《navigator 导航控制》

能够调用移动设备原生 API

在 Weex 中能够调用移动设备原生 API,使用方法是通过注册、调用模块来实现。其中有一些模块是 Weex 内置的,如 clipboard 、 navigator 、storage 等。

为了保持框架的通用性,Weex 内置的原生模块有限,不过 Weex 提供了横向扩展的能力,可以扩展原生模块,具体的扩展方法请参考《iOS 扩展》 和《Android 扩展》

有些接口在浏览器环境中也存在,不过在使用时应该注意浏览器的兼容性;如剪贴板功能,出于安全性考虑,绝大多数浏览器都限制其使用

时间: 2024-12-18 04:57:34

Weex 和 Web 平台的差异的相关文章

Vue 2.x 在 Weex 和 Web 中的差异

平台差异 Vue.js 最初是为 Web 平台设计的,虽然可以基于 Weex 开发原生应用,但是 Web 开发和原生开发毕竟不同,在功能和开发体验上都有一些差异,这些差异从本质上讲是原生开发平台和 Web 平台之间的差异,可以通过<Weex 和 Web 平台的差异>了解更多细节和原因. 由于运行平台存在差异,Weex 不支持 Vue 中与 DOM 相关的功能: 不支持事件冒泡和捕获机制,.prevent ..capture ..stop ..self 等事件修饰符在原生环境中无意义. 键盘事件

saltstack 的web平台集群部署(2)---haproxy的部署

上篇文章讲了saltstack的初始化基础安装. 咱们在这里讲讲项目的部署.咱们以haproxy+keepalive+httpd 来实现web平台的集群部署. 1. 部署yum安装环境 这个安装环境是除了上一节初始化之外的yum安装包 [[email protected] pkg]# pwd/srv/salt/prod/pkg[[email protected] pkg]# cat pkg-init.sls pkg-init:  pkg.installed:    - names:      -

saltstack 的web平台集群部署(3)---haproxy+keepalive+httpd 的部署

上一篇文章咱们讲到了haproxy的部署与配置 咱们这里说说如何使用keepalive和httpd来实现haproxy+keepalive+httpd  这套web架构的saltstack集群部署 首先咱们 http的部署,很简答哦,直接yum安装就完成了,但是在咱们saltstack就是用installed定义就行了. ok,让咱们搞起. [[email protected] http]# pwd/srv/salt/prod/http[[email protected] http]# cat 

WEB平台架构之:LNMP(CentOS6.5+Nginx+MySQL+Php)

WEB平台架构之:LNMP(CentOS6.5+Nginx+MySQL+Php)     为了写Nginx的系列教程,在介绍Nginx的各项功能时,能有个测试的环境,因此于此写一篇LNMP的架构搭建,使那些看文档的人能够搭建自己的环境来测试Nginx的功能.但是通常情况下nginx用作纯web站点不是很多,更多的是将nginx用在反向代理环境中.但是由于nginx处理静态文件的优越性能,也常常会使用nginx配合php来实现动静分离,起到web响应加速的功能. 1.准备工作OS:CentOS6.

WEB平台架构之:LAMP(Linux+Apache+MySQL+PHP)

WEB平台架构之:LAMP(Linux+Apache+MySQL+PHP)  从业界来看,最主流的web平台架构就当属LAMP了.LAMP架构可以说是一切web平台的基础架构,所有一切的所谓大型架构无非就是通过一些负载均衡技术,集群技术,缓存技术等结合LAMP平台组合而成以便来满足现实生产环境中的需求.因此很有必要聊一聊LAMP平台架构的搭建.本文会对LAMP平台相对性的聊一聊其搭建过程,根据个人的知识知无不说,更多的技术将会陆续整理成博客文章.我的要求没那么多,笨蛋的技术,只求看文章的人,都能

企业内部IT一体化系列之三:WEB平台 SharePoint部署

由于System Center Service Manager 2012 R2悲剧的依然不支持SharePoint2013,所有我们的自助门户平台还是只能搭建在SharePoint2010上.关于SharePoint 2013的部署,可以参考我的另一个SharePoint 2013 的专题,不过我这东西太多了,Lync专题也没写完,SharePoint 也没写完,这个正在写,大家多包涵吧. SQL部署: http://mingwang.blog.51cto.com/1997299/1368742

企业内部IT一体化系列之四:WEB平台 SharePoint服务配置

上文中我们只是简单的安装完了SharePoint,其实最最重要的服务配置还在后面,SharePoint自己单独拿出来就可以讲很久,而我这里的目的只是方便大家部署一个可以承载System Center Service Manager自助门户站点的平台,所以我尽量捡重点说: 一:创建服务应用程序: 1:服务应用程序说明 所有的服务数据库命名规则为:SharePoint_WebApp_站点名,SharePoint_App_服务名 命名规则仅供参考 SharePoint 2010中默认有以下服务应用程序

音视频解决方案Web平台之背景水印更改

AnyChat SDK(AnyChat音视频互动开发平台)是一套跨平台的(*)即时通讯解决方案,基于先进的H.264视频编码标准.AAC音频编码标准与P2P技术,支持高清视频,整合了佰锐科技在音视频编码.多媒体通讯领域领先的开发技术和丰富的产品经验而设计的高质量.宽适应性.分布式.模块化的网络音视频互动平台.支持Windows.Web.Android.iOS.Linux等跨平台互联互通 其中自从AnyChat r4092版本开始,AnyChat for Web SDK支持设置本地图片为界面背景.

Native App和Web App 的差异

开发者们都知道在高端智能手机系统中有两种应用程序:一种是基于本地(操作系统)运行的APP:一种是基于高端机的浏览器运行的WebApp,本文将主要讲解后者. WebApp与Native App有何区别呢? Native App: 1.开发成本非常大. 一般使用的开发语言为JAVA.C++.Objective-C. 2.更新体验较差.同时也比较麻烦 每一次发布新的版本,都需要做版本打包,且需要用户手动更新(有些应用程序即使不需要用户手动更新,但是也需要有一个恶心的提示). 3.非常酷 因为nativ