一:WEEX环境搭建+iOS现有项目集成

零:写在前面

最近我司要求将现有app部分界面使用动态模板装配,并且可以实时更新。并且展示的页面要流畅,性能和原生像媲美。所以我们首先考虑的就是具有热更新的机制的部分技术,像RN或WEEX,还有页面的形式。
但是因为前端技术团队在某些领域有过使用Vue.js的经验,并且RN的学习成本相对来说较高,H5所写页面的性能和原生差距较大,数据缓存、webview渲染性能等方面的种种问题。所以最终决定使用Weex来进行开发。
本系列包括但不限于Weex环境搭建、集成到已有项目(iOS+Android)、热更新机制、Weex和RN的性能评测、Weex与native的交互流程及原理、问题处理(踩坑)、打包上架等。
如有不对的地方,还望斧正。

一:环境搭建

以下搭建过程来源WEEX官网。做了简单的提炼和总结。以及一些坑点。

如果只想去试试看的话,这里有个在线的编辑器可以使用,可以用这个尝试一下。

1.1 安装homebrew + Node.js

这一部分可移步First:React native搭建记录。安装和配置是完全一样的。

1.2 官方weex-toolkit脚手架的安装

在终端执行npm install -g weex-toolkit。
/*******这里留个坑,等以后来填。*******/
安装好后这里有个奇怪的地方:
官网说weex1.0.8之后新增了npm5规范的版本依赖,我安装结束之后,在中端输入weex告诉我:
It looks like you're using npm 5 which was recently released.
Weex Toolkit doesn't work well with npm 5 yet, unfortunately.
We recommend using npm 4 until some bugs are resolved.
To install npm 4, you can just run `npm i npm@4 -g` or use `n` to manage your npm version with node.
大致意思就是说,weex-toolkit在5的支持上并不怎么好。强烈建议我使用npm4。那么问题来了,
我到底用npm4还是5,总感觉是不是官网文档没有更新。有点奇怪。
/*******这里留个坑,等以后来填。*******/

二:创建项目

  • 1.打开终端,cd到你要创建项目的目录
  • 2.执行weex create HelloWorld
  • 3.执行完成后会有一个简单的设置过程
? Project name (这里填你的项目名称,不要有大写,会出粗)
? Project description (项目描述)
? Author (作者)
? Select weex web render(这里我选择的最新,你也可以选择很多人用的那个)
? Babel compiler (babel版本,选择建议的就好)
? Use vue-router to manage your view router? (not recommended)(选择建议的就好)
? Use ESLint to lint your code? (代码检查器,这个YES)
? Pick an ESLint preset Airbnb(代码的检查规则,用airbnb的或者标准模式)
? Set up unit tests Yes(是否设置单元测试)
? Should we run `npm install` for you after the project has been created? (recom
mended) (用npm还是yarn,还是看自己)

/*****这些设置结束后需要一个漫长的等待过程,可以去喝杯茶*****/
  • 4.执行npm install
  • 5.npm run dev & npm run serve
  • 6.enjoy coding

二:集成Weex到现有应用(以空应用作为demo)

2.1 集成

默认开发环境有pod

  • 1.创建个应用
  • 2.在根目录创建Podfile,并在其中复制:pod 'WeexSDK','0.18.0'。这个版本号。。要自己去查一下。最好是用最新的,要不然会出问题。完成之后pod install即可。

2.2 运行(iPhone 真机)

  • 1.找个js文件,放入项目根目录。
  • 2.在delegate中导入头文件#import <WeexSDK/WeexSDK.h>,初始化weexsdk
  • 3.集成相关代码
在delegate.m的didFinishLaunchingWithOptions中复制一下代码:
    [WXAppConfiguration setAppGroup:@"XXX"];
    [WXAppConfiguration setAppName:@"xxx"];
    [WXAppConfiguration setAppVersion:@"xxx"];
    //init sdk environment
    [WXSDKEngine initSDKEnvironment];
    [WXLog setLogLevel: WXLogLevelError];
//上面xxx的位置自己修改即可
  • 4.在viewcontroller中,引入头文件#import <WeexSDK/WeexSDK.h>,并在viewdidload中引入以下代码。
- (void)initWeexView{
    _instance = [[WXSDKInstance alloc]init];
    _instance.viewController = self;
    _instance.frame = self.view.bounds;
    
    __weak typeof(self) weakSelf = self;
    _instance.onCreate = ^(UIView *view) {
        [weakSelf.weexView removeFromSuperview];
        weakSelf.weexView = view;
        [weakSelf.view addSubview:weakSelf.weexView];
    };
    
    _instance.onFailed = ^(NSError *error) {
        //process failure
    };
    
    _instance.renderFinish = ^ (UIView *view) {
        //process renderFinish
    };
    ;
    
//    NSLog(@"mainBundlePath = %@",);
//
//    NSString *path = [NSString stringWithFormat:@"file://%@/dist/%@",[NSBundle mainBundle].bundlePath,@"index.js"];
    
    [_instance renderWithURL:[[NSBundle mainBundle]URLForResource:@"index" withExtension:@"js"]];
}
  • 5.运行即可。

三:坑点

3.1 版本不对应。

主要问题就是weex官网的版本和github的版本不对应,刚开始我用的0.9的版本,发现怎么跑跑不起来。最后去官网下载了demo,在demo中搜索WX_SDK_VERSION 看到weexsdk都更新到0.18.0了。发现之后,更新版本,开开心心运行程序。

3.2 加载不出来数据

数据是从接口拿的,需要配置一下info.plist的ATS。复制以下代码到info.plist即可

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>

四 感受

具体还没开始使用,只是搭建环境和运行真机,譬如hot reload、webpack、weex-loader等等都还没有开始搞。主要有一下几点想说。
缺点:

  • 1.官方文档的更新不及时,而且比较草率。对于新接触weex的程序员不友好。无法很快上手。
  • 2.网络上的资料太少,过于陈旧,找一找全都是2016年7月份 - 2017年的技术帖。
  • 3.看到weex支持vue.js和Rax框架,但是貌似只发现了Vue.js的支持,没有发现Rax的支持。
  • 4.社区太不活跃,出了问题都不知道去问谁。这大大提高了weex学习的成本。

优点:暂时没有使用,无法评判。

真害怕,某天weex又像Ali的其他开源项目一样烂尾。但还是希望Ali团队的愿景可以得以实现。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,761评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,953评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,998评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,248评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,130评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,145评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,550评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,236评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,510评论 1 291
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,601评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,376评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,247评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,613评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,911评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,191评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,532评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,739评论 2 335

推荐阅读更多精彩内容