weex之初识

作者: 沧海小鱼儿 | 来源:发表于2016-12-17 22:52 被阅读0次

    前面的话:

    在前端越来越火的年代,逐渐衍生出类似React Native、Weex等开发套件。所达到的目的挺简单的,达到在多个平台下共用一份代码,节省开发成本,提高开发效率。其次,由于JavaScript语言的特殊性,能动态更新页面而不需要发版。达到热更新效果;基于这两点,越来越多的个人开发者&公司开始尝试它们。今天给大家简单观上说说Weex。

    什么是weex:

    weex是阿里2016年开源的一套跨移动端(Andriod/IOS/Wap)的开发方案,能以 web 的开发体验构建高性能、可扩展的 native 应用,为了做到这些,Weex 与 Vue 合作,使用 Vue 作为上层框架,并遵循 W3C 标准实现了统一的 JSEngine 和 DOM API,这样一来,你甚至可以使用其他框架驱动 Weex,打造三端一致的 native 应用。2016年12.15,Weex开源项目捐赠给Apache基金会开始孵化;

    使用案例:

    “Weex的双十一大考

    进入8月底,阿里双十一的压力扑面而来。Weex代替H5成为双十一终端基础渲染解决方案,是Weex团队的唯一且最重要的任务。

    非常幸运,加上我们也足够努力,很庆幸Weex扛住了双十一这次大考的磨砺,交出一份不错的答卷:Weex在双11会场中的覆盖率接近99%,页面数量接近2000,覆盖了包括主会场、分会场、分分会场、人群会场在内几乎所有的双11会场业务。双十一主会场秒开率97%,全部会场页面达到93%。

    奇妙的事情也在这个期间发生,有时候当你努力到一定程度的时候,奇迹也会悄然降临。”
    ____________摘自《手淘天施:我眼中的Weex和Weex开源那些事 》

    weex代码结构:

    我们暂时不去关心 Weex 的技术细节,仅大致的看下代码结构,Weex代码由三部分构成:

    • template (模板),
    • style (样式)
    • script (脚本) 。
    这三个概念之于Weex就如 html,css,javascript 之于Web。
        <template>
            <div>
                <text class="text">{{text}}</text>
                <text class="text">{{text}}</text>
                <text class="text">{{text}}</text>  
                <text class="text">{{text}}</text>
                <text class="text">{{text2}}</text>
            </div>
        </template>
            
        <style>
            .text {
                font-size: 50;
            }
        </style>
            
            
        <script>
            module.exports = {
                data: {
                    text: 'Hello World.',
                    text2: '我是demo.'
                }
            }
        </script>
    

    cocoaPods 引入 Weex iOS SDK到工程

    cocoaPods集成
    假设你已经完成了安装iOS 开发环境 和 CocoaPods

    1. 如果使用正式版本,直接引用cocoaPods的master repo 上就可以,这个需要在Podfile 最前面添加:

          target 'YourTarget' do
              platform :ios, '7.0' 
              pod 'WeexSDK'   
           end 
      

    在命令行(terminal)中,切换到当前目录,运行 pod install,过一会,项目的 .workspace结尾的文件就被创建出来,到这步,依赖已经添加完了

    创建项目:

    默认你已经安装好了 node.js 和 npm,cocoapods,

    weex需要再安装 Weexpack,可以直接使用 npm 安装:

    npm install weexpack -g
    

    或者用 cnpm:

    cnpm install weexpack -g
    

    然后,就可以使用 weexpack 创建 weex 工程了:

    weexpack init appName
    

    weexpack 会自动新建以 appName 命名的目录,并将项目模板拉取到该目录。
    最终形成如下目录结构:


    其中:

    webpack.config.js 是 webpack 配置文件,用于生成 .we 文件的 JSBunlde

    ios.config.json 是 iOS 项目配置文件

    android.config.json 是 Android 项目配置文件

    /src 目录放置 Weex 页面

    /html5 是 H5 端入口文件

    /ios 放置 iOS 项目

    /android 放置 Android 项目

    紧接着,进入目录,并且安装依赖:

    $ cd appName && npm install
    

    至此,项目模版创建完成,接下来我们可以自定义我们的 APP 信息并打包运行。

    运行与打包

    如果一切正常,你可以使用 weexpack 打包或模拟器运行了:

    模拟器运行

    $ weexpack run ios
    

    构建 ipa 包:

    $ weexpack build ios
    

    上面的代码就是最简单的 Weex 程序。但是 .we 文件是不能直接运行的,这时候需要使用刚才安装好的 weex-toolkit。weex-toolkit 会编译 .we 文件,并且创建静态服务器。

    这里,使用 weex hello.we 命令编译该程序。

    $ weex index.we

    这时,命令行会做几件事:

    编译 .we 文件;
    启动热加载服务;
    启动静态服务器;
    拉起浏览器,访问 http://127.0.0.1:8081/weex_tmp/h5_render/?hot-reload_controller&page=hello.js&loader=xhr
    

    weex index.we 增加 --qr 参数,表示生成二维码。

    $ weex index.we --qr
    

    然后,使用 Playground 扫码即可预览。

    Weex 工作原理概述

    Weex架构图

    流程:

    • 一句话总结:weex站在RN这个巨人的肩膀上

    与RN的区别:

    出发点:

    相比较于React Native的“Learn once, write anywhere”,更加注重的是一种学习思维和方法,允许平台差异的特性存在;
    Weex的口号是“Write once, run everywhere”更加侧重的是解决实际业务需求;

    diff算法:

    相比于一些 virtual-DOM 的 diff 计算机制,我们会直接对数据进行 diff,而且只会 diff 由于用户操作或数据操作发生改变的那部分数据和视图,这是一种更小范围的计算方式。尤其在追求轻量快速的移动端界面上,这种更新机制更加显得具有优势。

    学习使用:

    Weex相比React Native,坑还是比较多的。但是从“使用者”角度来说,Weex方便很多。但是对于存在很多复杂业务场景的开发者来说,必然会去学习其原理,而此时Weex相比RN就没那么友善。

    JS开发框架:

    weex基于vue.js(2W+ star)。小巧轻量的前端开发框架,组件化,数据绑定,2.0引入virtual dom。

    ReactNative使用React(4W+ star)。革命性的前端开发框架,组件化,数据绑定,virtual dom。

    参考:https://zhuanlan.zhihu.com/p/21677103

    社区:

    RN开源更早,社区活跃,weex,晚一些,不是很活跃。

    相关资料文档

    Weex中文文档:
    https://github.com/weexteam/article/wiki/Weex%E4%B8%AD%E6%96%87%E6%96%87%E6%A1%A3

    weex文档官方:
    http://alibaba.github.io/weex/cn/doc/

    https://github.com/dodola/WeexOne

    http://alibaba.github.io/weex/cn/doc/advanced/extend-to-ios.html

    《手淘天施:我眼中的Weex和Weex开源那些事》http://mp.weixin.qq.com/s?__biz=MzA3ODg4MDk0Ng==&mid=2651112953&idx=1&sn=a58f53cd7b0f60885a404ce3471a9fc1&chksm=844c6c24b33be53251010b9a8ff8da3ac0771a7150c96714cb9bcd2cc8098224846f5b848836&mpshare=1&scene=23&srcid=1216u16BLKd4MKqr4Ui3OlSV#rd

    相关文章

      网友评论

        本文标题:weex之初识

        本文链接:https://www.haomeiwen.com/subject/dgdamttx.html