zoukankan      html  css  js  c++  java
  • 如何评价阿里无线前端发布的Weex?


    一、背景
    首先说下我为什么要问这个问题(没错我就是这个问题的提问者),刚开始在微博上看到有技术连载觉得很感兴趣,所以就关注了。当
    发布说一套代码能动态的运行在三端,我顿时觉得很牛X啊,既然说是无线电商动态化方案,那么其他场景呢,所以想问问大家的看法。问题从发布一个晚上就关注度到了1, 2百。估计跟邀请了一些大V有关。至今已经到了快800了, 让我这个小菜很是紧张。在此感谢各位的回答。

    下面我对我提问获得的答案加我的理解进行下总结。
    二、Weex是什么
    Weex是什么?考虑这个问题我们先来看看Weex不是什么把,根据文章(对无线电商动态化方案的思考(三) · Issue #15 · amfe/article · GitHub)中声明的是:

    也想强调一下 Weex 不是什么:

    • 不是一个 HTML5 库或开发框架
    • 不是一套全新的技术
    • 不是为了解决纯 native 开发的体验问题
    • 不是一个以自身为中心的移动应用开发框架
    而根据第二篇文章开头声明的定位我们了解到:
    Weex 是一款轻量级的移动端跨平台动态性技术解决方案。


    相信到这里可以大概了解了Weex其实一个整套的技术解决方案,并不是一个新的框架或者库,它是一些技术的整合。
    三、实现原理
    关于实现原理我下班路上收到的第一个答案我想应该是
    的回答把,其实一开始我觉得他调侃的成分多一些(所以一直没有点同意,待会补上,哈哈),之后 也跟答道:
    其实就叫 Vue-Native 我也不介意的...
    快点开源啦!
    我开始觉得这不是在打哈哈的回答。所以我回到家认真看了下 提到的那张图。附图如下:

    然后结合文章,再理解了一遍后觉得叫Vue-Native也不为过 (
    提到内部开发时候代号就是这个),哈哈。下面先从Vue-Native角度来理解下:
    简单的在调侃这个名称上可以对比理解react.js & react-native 感觉这像是Vue.js推出的针对native端的一个框架(刚才我们说了它并不是框架)。认真的理解其实就涉及到Weex的真实实现方式了。整个简单的流程如下:
    1. 组件的声明方式:可以看到Weex并没有采用Vue.js官方的声明方式,而是采取了跟标准更靠近一步的Webcomponents形式,但是在文中有提到Weex采取的数据绑定和依赖收集是复用了Vue.js的实现。
    2. 在有了组件并且用组件搭建好了界面后,这里添加了一层transformer。把组件中的数据绑定,style等的解析提前到了在渲染真实dom之前,编译成json,或者js function。
    3. 经过transform后,怎么一套代码对应到多端呢?这里可以看到Weex吸取了reactjs的virtual dom的思想。在web view& broswer中直接生成dom。在native中生成native控件。这里使用了JavaScript 引擎接收js bundle通过JS Bridge 和原生API交互。最终生成原生的控件或页面。
    这只是一个简单的流程,详细的技术细节还是看文章把。从上面的流程可以看见,是借鉴了Vue.js的mvvm + react的virtual dom。关于这个结合的创意 可以看到 ) 在对无线电商动态化方案的思考(三) · Issue #15 · amfe/article · GitHub文章总结的QA部分(没想到我一句评论勾起了 )的心路历程,让我们有机会了解到当初这个项目的起因)。
    终于知道 @Jinjiang 为啥之前一直在研究 webcomponents & vue.js 了
    anywhere,既然人家取名叫Weex了,我们还是要尊重下别人的劳动成果。看到 修改了回答,还真说不定之后有可能跟Vuejs官方合作呢~
    四、使用的场景&发展
    关于使用场景和发展,从对无线电商动态化方案的思考(三) · Issue #15 · amfe/article · GitHub文章中透露的细节来看,还有一些技术问题还没有解决。
    • 因为移动设备的资源非常有限,所以就算同时打开多个 Weex 实例,也只能公用一个 JavaScript 实例,如何有效的让多个实例在 JavaScript 引擎中共存是个关键的问题
    • 如何优雅的设计动画和表单的语法并合理的实现,是否照搬 HTML Form 和 CSS Transition/Transform/Animation 是最好的选择?
    • 如何合理设计上层的 IDE 或可视化工具/编辑器
    • 如何同一个 URL 或二维码,客户端请求到的是 JS Bundle,而浏览器打开的是一个 HTML5 页面
    • 还有SEO的问题(既然要开源,这个我觉得不应该以阿里的业务场景为前提。)
    以上是目前Weex的一些技术问题。但是,我觉得自从 抛出说这个是一个后KPI项目后。大家普遍关注于Weex之后的发展问题。觉得可能会是一个KPI的铺路石( 貌似Kissy这次躺的很彻底)。而且从其他的匿名回答来看,阿里其实有在研究基于RN的动态方案。所以之后阿里是推哪套方案目前好像阿里内部员工也比较搞不懂。我们只能说希望Weex能克服目前的困难,然后像 说的那样推出一套有诚意的开源作品。然后造福FE同学轻松hold住多端的问题。
    五、其他
    1. 关于开源的时候
    我根据
    的回答,找了下Qcon的报道,据说是2016年中开源.(留给阿里同学的时间不多了)。

    六、最后
    我们并不是一个人在战斗,市面上已经有很多非常优秀的技术可供参考和使用,Weex 希望集优秀技术之大成,快速落地,解决业务上“最后一公里”的问题。
    虽然后来了解到这个是一个KPI的项目,哈哈,我还是非常认可 )使用"最后一公里" 对Weex这样的描述。我佩服认真做事并且保持谦卑的人。
    第一次码这么长的回答,算是对这问题的一个总结(虽然可能没有人看),不对之处还请指正~ 最后谢谢大家的回答。

    用玉伯的话说,就是历史阶段性的产物。

    发展路线大概是:

    Web → Native → Hybrid → React(JS) Native

    可以说近几年移动端的发展趋势就是向 Web 端靠,以 React Native 为代表的 JS-Native 已经很大程度上模糊了 Web 和 Native 应用的界限。Weex 显然将这个进程又推进了一小步。

    尽管还是套用的 React Native 用 JS 控制 Native 的概念,并没有达到一个新阶段的程度。但相比 React ,描述界面的语法更接近 Web 标准,用官方的话说,“更加务实”。

    东西是好东西,对于电商这类经常需要变动 APP 界面的尤其适用。但一定不会适用于所有人,需求千变万化,总有框架照顾不到的地方。

    所以题目问怎样看待,我觉得不要神化,也不要贬低。符合项目需要就用,不符合就想别的办法。

    毕竟 Facebook 也好,阿里巴巴也好,都是为了满足自己的业务需要的同时,顺便提出了新概念或者新技术,本来就不是为了拯救全人类的。
  • 相关阅读:
    Java高级之类结构的认识
    14.8.9 Clustered and Secondary Indexes
    14.8.4 Moving or Copying InnoDB Tables to Another Machine 移动或者拷贝 InnoDB 表到另外机器
    14.8.3 Physical Row Structure of InnoDB Tables InnoDB 表的物理行结构
    14.8.2 Role of the .frm File for InnoDB Tables InnoDB 表得到 .frm文件的作用
    14.8.1 Creating InnoDB Tables 创建InnoDB 表
    14.7.4 InnoDB File-Per-Table Tablespaces
    14.7.2 Changing the Number or Size of InnoDB Redo Log Files 改变InnoDB Redo Log Files的数量和大小
    14.7.1 Resizing the InnoDB System Tablespace InnoDB 系统表空间大小
    14.6.11 Configuring Optimizer Statistics for InnoDB 配置优化统计信息用于InnoDB
  • 原文地址:https://www.cnblogs.com/BinZone/p/7685770.html
Copyright © 2011-2022 走看看