关于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月份会有一个生态大会,面向阿里生态体系内的商家和客户,当然也包括开发者。到时候会在大会上宣布开源。
阿里百川(baichuan.taobao.com)是阿里巴巴集团的无线开放平台,通过“技术、商业及大数据”的开放,提供移动场景下的高内聚、开放式、行业领先的技术产品矩阵、成熟的商业组件和完善的服务体系,帮助移动开发者快速搭建APP、加速APP商业化进程,全方位赋能移动开发者及移动创业者。
关于Weex你需要知道的一切的更多相关文章
- ReactNative&weex&DeviceOne对比
React Native出来有一段时间了,国内的weex和deviceone是近期发布的,我可以说从2011年就开始关注快速开发的跨平台平台技术了,接触过phoneGap.数字天堂.appcan等早期 ...
- 阿里的weex框架到底是什么
title: 阿里的weex框架到底是什么 date: 2016-09-27 10:22:34 tags: vue, weex category: 技术总结 --- weex 工作原理 首先看下官方的 ...
- 第八章 交互技术,8.4 Weex 双11会场大规模应用的秒开实战和稳定性保障(作者:鬼道)
8.4 Weex 双11会场大规模应用的秒开实战和稳定性保障 前言 Native 开发的诸多亮点中,流畅体验和系统调用是最多被提及的.流畅体验体现在页面滚动/动画的流畅性,背后是更好的内存管理和更接近 ...
- weex image
weex 的image用来渲染图片, 可以使用img作为它的别名. 需要注意的是,他的长度可宽度必须指定, 不然它是不会工作的. 它没有任何的子组件. 有两个属性: src 用来指定图片的地址图片. ...
- weex scroller
今天学习了一下weex的 scroller.就简单地对其整理一下自己的学习笔记. <scroller>这个标签只能出现在列(column)上面, 只有当它自己的内容大于类似与PC父级的高度 ...
- weex逻辑控制
在WEEX中,有if 和 repeat 两种逻辑运算,需要注意的是,逻辑控制不能够作用于<template>这样的根节点. if 控制判断条件true/false直接对节点进行操作,if= ...
- 真机远程调试 ( IOS Android 以及微信,weex)
1.以前cordova远程调试,Android的直接连接USB后,用chrome打开chrome://inspect网址 IOS的打开Safari的developer下. 这是因为cordova的we ...
- weex 小结 --官方扩展组件
<wxc-tabbar> 页面底部的 tab 标签,通过点击在不同页面之间切换 属性: selected-index {number}:设置默认选中的 tab 索引,默认值为 0(第一个 ...
- weex环境搭建
1. 安装weex-toolkit sudo npm install -g weex-toolkit 装完之后就可以使用weex命令了.输入weex命令可以看到: weex test.we --qr ...
- 跨平台开发之阿里Weex框架环境搭建(一)
转载自:http://www.cnblogs.com/fozero/p/5995122.html 一.介绍 Weex是阿里今年6月份推出的跨平台解决方案,6月底正式开源.官网 https://alib ...
随机推荐
- 【叶问】 MySQL常用的sql调优手段或工具有哪些
MySQL常用的sql调优手段或工具有哪些1.根据执行计划优化 通常使用desc或explain,另外可以添加format=json来输出更详细的json格式的执行计划,主要注意点如下: ...
- 前端 HTML 常用标签 head标签相关内容 style标签 定义内部样式表
styple标签 <!-- 定义内部样式表 --> <style type="text/css"></style>
- centos7.6删除重新安装python和yum
最近在开发一个项目时出现了错误,需要重新安装python和yum,怎么安装呢?随ytkah一起来看看吧.ytkah用的linux分支的centos7.6,各位朋友在下载源的时候要注意版本的区分.现在开 ...
- 20170728 Celery项目 后台处理SQL SERVER的一个异常
-- 1. 感觉是访问DB 失败了,失败原因不明确 -- 2. 考虑解决问题的解决办法,后台记录异常,并重新发送任务. 具体如何来实现
- 【1】vue/cli 3.0 脚手架 及cube-ui 安装
安装 Vue CLI 需要 Node.js 8.9 或更高版本 (推荐 8.11.0+).你可以使用 nvm 或 nvm-windows在同一台电脑中管理多个 Node 版本. 检查node版本: $ ...
- 微信小程序github源码
https://github.com/justjavac/awesome-wechat-weapp https://www.cnblogs.com/tuyile006/p/6268961.html h ...
- 多线程——interrupt方法
测试interrupt()方法: package day_12_01_Thread; import java.util.Date; /** * 测试interrupt()方法:结束线程,但是线程还是活 ...
- 如何利用VMware安装XP系统
如何利用VMware安装XP系统 百度经验 http://jingyan.baidu.com/article/215817f78ba0c51eda142322.html 1 运行分区工具 2 ...
- 使用autoconf与automake自动生成MakeFile文件
automake主要通过编辑Makefile.am来控制它的行为,下面就常用的三个Makefile.am配置做出说明. 1.1. autotools的工作原理 autotools最终是为了生成Make ...
- [Java in NetBeans] Lesson 12. Arrays
这个课程的参考视频和图片来自youtube. 主要学到的知识点有: 1. Array: container that holds a fixed number of values of the sam ...