关于Weex你需要知道的一切

QCon第一天,GMTC全球移动技术大会联席主席、手淘技术老大庄卓然(花名南天)在Keynote上宣布跨平台开发框架Weex开始内测,并将于6月份开源,同时他们也放出官网:http://alibaba.github.io/weex ,可以在上面申请内测资格,以及下载Android版Demo把玩。

在大会后我对庄卓然做了一个采访,对一些大家关心的问题得到官方的回复,整理在这里。所有该发的不该发的我都发在这儿了,为了涨粉我也是拼啦~

Weex基本信息


  • 官方支持iOS、Android、HTML5.
  • Write Once, Run Everywhere。一次编写可生成三平台代码。
  • DSL模板学习超简单,直接写HTML、CSS、JS。这意味着可以直接用现有编辑器和IDE的代码补全、提示、检查等功能。
  • 轻量级、可扩展、高性能。
  • 集成花样多,可在HTML5页面嵌入,也可嵌在原生UI中。


Weex的由来

Weex的前身是WeApp,一个用JSON配置原生UI组件来实现动态化的框架,关于类似这个的思想,可以在天猫这篇配置中心实践中看到,已经很牛了,Weex是WeApp的进化版本,加上ex去掉App,就成了现在这个名字。他们还编了个段子:

You give us a few weeks, so we bring you a weex.

这个段子要表达的意思,你get到了吗?


与Vue.js的关系

如果对前端有所涉猎的同学会发现,Weex的DSL风格与一个前端的MVVM框架Vue.js比较像,那么它们的关系是什么呢?

Weex由多个关键模块组成,分别是DSL transformer、JS Framework、HTML5/iOS/Android Renderer和工具链 , 其中JS Framework就直接使用了部分来自Vue.JS的代码。不过这种使用也是遵守开源协议的(Vue使用MIT协议,Weex使用Apache协议),Weex团队在源码的说明文件中记录了来自Vue.JS和其他开源项目的贡献。


为什么不用React Native

手淘和天猫曾经尝试过React Native,然后放弃了。但是把它的思想吸收过来,结合Web Component和Vue.js,然后就成了Weex.

关于这个问题,庄卓然列举了一些原因:

  • 因为手淘之前有WeApp,从WeApp进化到Weex是很自然的选择,抛弃自己的解决方案去用别人的反而很奇怪。
  • React Native的JSX、CSS in JS写法都很别扭,淘宝有很多ISV(即各种店铺),他们之前只会Web技术,写这个有门槛。另外,HTML标准在过去二十年内经受了检验,HMTL/CSS/JS对应的结构、样式和行为,天然分离,代码的可维护性会更好。抛弃标准自己发明DSL也不明智。
  • React Native重视平台独立性,不能做到100%代码共用,实际上还是要学习各平台的特性,Weex希望做到100%共用,即一次编写到处运行,进一步降低开发门槛。
  • React Native在一些地方的性能上还有问题,手淘希望能自己主导优化的进程,否则会很被动。


关于KPI项目

去年在手淘向外界宣布有这个项目的时候,引起大家的关注,有人在知乎提了个问题,有人回答说是KPI项目云云。所谓KPI项目,就是为了完成KPI而做的项目,但实际之后不维护等等。

手淘在这个问题下面并没有正式回应,据庄卓然表示,其实KPI项目看从什么维度去理解,任何一家公司去做一个创新都会有目标,有目标的话都可以被理解为是一个KPI项目。在他的角度来看,是不是KPI项目不重要,重要的是目标定得对不对,想解决的问题是不是核心问题。

关于维护,涉及到阿里现在的开源策略,我们看下一个问题。


为什么还要内测,不直接开源?

其原因是,阿里调整了开源策略。在过去,阿里集团开源了不少项目,但其中很多没有后续维护,这也是被诟病为KPI项目的原因之一。其实阿里自己也想改变这种情况。

现在,手淘做开源,希望真正为社区创造价值,而不是把公司的一坨代码处理一下往外一丢,别人在使用的时候还要花很多功夫处理,这样的开源项目意义并不大。阿里希望发布出去的开源项目都是有生命的,能好好的维护起来。

在Weex去年双十一在线上验证之后,其实就准备开源,但有很多准备工作要做,比如文档、配套的工具等等,过去的四个多月一直在做这些事情。在集团内部也进行过测试,集团BU、UC包括高德、天猫等都有很多同学参与进去贡献DEMO和代码,到了4月份觉得适合放出来了,所以宣布内测。

内测这个是类似产品运营的思路,希望能像打造产品一样打造开源项目,和一般的开源项目的快速迭代不太一样,目前来看也并不能说哪个更好。

阿里百川在6月份会有一个生态大会,面向阿里生态体系内的商家和客户,当然也包括开发者。到时候会在大会上宣布开源。

时间: 2024-09-17 12:29:40

关于Weex你需要知道的一切的相关文章

【资料合集】Weex Conf回顾集锦:讲义PDF+活动视频!

Weex Conf在2017年1月12日顺利召开! 为了让大家更好的理解和学习Weex,我们将本次大会资料整理出来,供大家参考. 上午Keynote 环节简介:在Weex Conf上午Keynote环节,阿里资深总监庄卓然(南天).天施.鬼道.勾股以及圆心几位嘉宾,回顾了Weex的发展历史,展望了未来Weex的发展路线图. 直播视频:https://yq.aliyun.com/edu/lesson/play/546 下午:技术实战分论坛 环节简介:技术实战分论坛是下午最受欢迎的一个论坛,勾股.寒

Swift In Weex

Swift In Weex 参考 swift和Objective-C weex iOS SDK 是使用Objective-C,结合部分C写的, 引入swift,需要混编,直接进入正题 SDK集成 使用cocoaPods 集成跟 使用Objetive-C 一样的集成方式 导入framework Import the framework you get above and import system framework Add main.js(which is in the WeexSDK.fram

详解 Weex JS Framework 的编译过程

之前写了一篇文章<Weex 框架中 JS Framework 的结构>概述了 JS Framework 的整体结构,其中编译过程写的有些简略,这里再详细介绍一下. 一句话概括 JS Framework 的编译过程就是: 将 JS Bundle 转换成 Virtual DOM 发送到原生模块渲染. 这个过程涉及三种数据类型:JS Bundle .Virtual DOM .Vm . JS Bundle 是由 .we 文件转换过来的,会被视为代码而执行. Virtual DOM 是描述页面结构的 J

Weex 在 JS Runtime 内的多实例管理

Weex 的技术架构和传统的客户端渲染机制相比有一个显著的差别,就是引入了 JavaScript,通过 JS Runtime 完成一些动态性的运算,再把运算结果和外界进行通信,完成界面渲染等相关操作指令.而客户端面对多个甚至可能同时共存的 Weex 页面时,并没有为每个 Weex 页面提供各自独立的 JS Runtime,相反我们只有一个 JS Runtime,这意味着所有的 Weex 页面共享同一份 JS Runtime,共用全局环境.变量.内存.和外界通信的接口等等.这篇文章会循序渐进的介绍

Weex动态化方案与双十一实践

在2017年1月12日 Weex Conf 2017上,来自手机淘宝移动平台Weex团队的凝砺结合淘宝实际业务分享了Weex动态化方案和双十一实践,本文先介绍了Weex的整体架构,接着重点分享了Weex在双十一会场上的实践,最后谈及了Weex的业务支撑,包括AliWeex等. 以下为精彩内容整理:   初始Weex Weex是一套高性能跨平台移动开发框架,最大的优势是解决了频繁发版和和多端研发两大移动开发痛点.一套代码完美适配IOS.Android.HTML5和Web等多端,极大的提升开发效率同

网易严选App感受Weex开发

自打出生的那一天起,WEEX就免不了被拿来同React Native"一决高下"的命运.React Native宣称「Learn Once, Write Anywhere」,而WEEX宣称「Write Once, Run Everywhere」.在我看来,并没有谁更好,只有谁更合适.下面我将围绕WEEX入门进行讲解. (如果你尚不了解React Native,并想简单入门,可以阅读[整理]ReactNative快速入门笔记) 网易严选App感受Weex开发 什么都不说,先给你感受下we

深入折腾 Weex,知乎日报客户端开发

深入折腾了一下 Weex,做了一个知乎日报的客户端,同时实现了一种目前 Weex 尚未提供的 Native 页面切换思路. 最后效果如下: 这个 demo 主要实践 4 件事情: 1. 模块注册2. 组件注册2. Native 方法调用4. Native 页面切换 & 参数传递 整个 app 只有两个页面,都是纯 Weex 编写的,对于第一个页面非常的简单,布局类似于 iOS 的 TableView <template> <scroller> <container r

Weex 框架中 JS Framework 的结构

Weex 具有移动端跨平台的特性,JS Framework 是其中比较关键的一层.首先来看一下 JS Framework 在 Weex 中的位置: 从图中可以看出 Weex 整体的工作流程.首先开发者可以声明式的定义组件,形成 .we 文件,通过 weex-toolkit 提供的工具将 .we 文件转为 JS Bundle.JS Framework 接收并执行 JS Bundle 的代码,并且执行数据绑定.模板编译等操作,然后输出 json 格式的 Virtual DOM 传递给移动端,同时也提

Weex 中的 virtual-DOM 介绍

概述 Weex 在 JS 端有一层 virtual-DOM 的设计,这一层设计一方面使得 Weex 能够通过 JS 控制 native 的视图层,另外也提供了一个相对中立的规范,供上层 JS 框架调用. 传统的 DOM 大概是这个样子的 // 构造函数 HTMLElement HTMLInputElement Text Comment // 创建元素 var text = document.createTextNode('User Name:') var el = document.create

Apache再次接受阿里开源产品捐赠:移动开发框架Weex进入孵化

12月15日,阿里巴巴宣布将移动开源项目Weex捐赠给Apache基金会开始孵化,Weex有望成为中国移动领域的首个Apache顶级项目,这意味着中国移动技术开始反哺世界.据悉,这也是继JStorm.RocketMQ之后,阿里向Apache捐赠的第三个项目.   2016年12月15日,阿里巴巴宣布将移动开源项目Weex捐赠给Apache基金会开始孵化 Weex是阿里自研的高性能跨平台移动开发框架,最大的特点是解决了频繁发版和多端研发两大痛点,一套Web代码完美适配iOS.Android.H5.