? ? 6月30號這天鞍恢,阿里團(tuán)隊如約的讓weex開源了,好多人都在等待這一天沼瘫。剛開源抬纸,有問題是在所難免的,而我作為一個ios開發(fā)的前端小白耿戚,從weex開始內(nèi)測湿故,就成為了一名weex粉絲,自己也做了兩個小東西膜蛔,并參加了weex的workshop比賽坛猪。
? ? 之前weex剛出來寫了篇針對安卓的,由于自己是做ios的皂股,對ios更為熟悉墅茉,現(xiàn)在把weex在ios中集成的步驟與一些問題列出來與大家一起分享。
? ? 參與到weex中的人呜呐,有的是做安卓的就斤、有的是做前端的、有的是做ios的蘑辑,如果你想把weex ios集成到自己的項目中洋机,首先你要有ios的開發(fā)環(huán)境(當(dāng)然做ios的就不用說了),有mac的最為方便以躯,直接下載xcode裝上就可以用槐秧,沒有mac的還要在window電腦上裝黑蘋果啄踊,比較麻煩忧设。
? ? 假設(shè)ios開發(fā)環(huán)境你已經(jīng)有了,這時候?yàn)槟切┎皇亲鰅os開發(fā)的講一下管理第三方框架的工具-CocoaPods,在集成weex的時候需要用到颠通。盡管有鏈接址晕,但在這里我給大家簡單介紹一下CocoaPods的簡單安裝過程:
1,安裝gem工具(終端工具的管理包)顿锰,這時候需要查看ruby源代碼gem sources -l ,如果是國外的谨垃,需要修改ruby源,如果是官方的需要先移除sudo gem sources -r https://rubygems.org/? 硼控,添加源sudo gem sources -a http://ruby.taobao.org/
2刘陶,安裝gem用sudo gem install cocoapods
3,當(dāng)項目中需要使用cocopods來管理第三方框架時牢撼,首先需要cd到項目路徑匙隔,然后執(zhí)行pod init命令
4,第一次操作使用pod install熏版,安裝成功后先退出項目 在使用xcworkspace代開項目
5纷责,如果不是第一次操作 就使用pod update 捍掺,如果安裝框架的過程中非常慢 可以使用pod install —help查詢-no-repo-update然后執(zhí)行pod install --no-repo-update
現(xiàn)在CocoPods也有了,讓我真正進(jìn)入到集成的環(huán)節(jié):
1再膳,在git上把項目克隆下來挺勿,最好在桌面先建一個文件夾,克隆到此文件夾內(nèi)喂柒。打開終端不瓶,cd到此文件夾,然后執(zhí)行g(shù)it clone https://github.com/alibaba/weex.git拉取weex項目胳喷。
2湃番,把weex/ios目錄下的idk放入到你自己項目的根目錄下,在終端cd到你自己的項目下吭露,執(zhí)行pod install,這時會出現(xiàn)Podfile,打開Podfile,在里面添加
target 'YourTarget' do
platform :ios, '7.0'
pod 'WeexSDK', :path=>'./sdk/'
end
然后再次執(zhí)行pod install,這時候就好了吠撮,也不用手動添加依賴。
3,在Appdelegate.m里先導(dǎo)入如下圖的.h文件
然后在didFinishLaunchingWithOptions方法里初始化weex環(huán)境
//初始化sdk環(huán)境
[WXSDKEngine initSDKEnviroment];
//注冊module,是可選的讲竿,如果想實(shí)現(xiàn)網(wǎng)絡(luò)請求泥兰,頁面跳轉(zhuǎn),圖片下載题禀,就必須得實(shí)現(xiàn)鞋诗,給出的官網(wǎng)playground里面已經(jīng)給實(shí)現(xiàn)了這三個,可以直接把extend模塊拷貝到自己的項目里
[WXSDKEngine registerComponent:@"MyView" withClass:[MyViewComponent class]];
[WXSDKEngine registerModule:@"event" withClass:[WXEventModule class]];
//注冊實(shí)現(xiàn)功能的協(xié)議
[WXSDKEngine registerHandler:[WXNavigationDefaultImpl new] withProtocol:@protocol(WXNavigationProtocol)]; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[WXLog setLogLevel:WXLogLevelVerbose];
其他的可以暫時不用管
4迈嘹,可以整頁或者部分用weex渲染削彬,然后在需要渲染的控制器里面實(shí)現(xiàn)下面的方法
#import
- (void)viewDidLoad
{
[super viewDidLoad];
_instance = [[WXSDKInstance alloc] init];
_instance.viewController = self;
_instance.frame = self.view.frame;
[_instance renderWithURL:self.url options:@{@"bundleUrl":[self.url absoluteString]} data:nil];
__weak typeof(self) weakSelf = self;
_instance.onCreate = ^(UIView *view) {
[weakSelf.weexView removeFromSuperview];
[weakSelf.view addSubview:weakSelf.weexView];
};
_instance.onFailed = ^(NSError *error) {
//process failure
};
_instance.renderFinish = ^ (UIView *view) {
//process renderFinish
};
}
其中[_instance renderWithURL:self.url options:@{@"bundleUrl":[self.url absoluteString]} data:nil];可以改為自己寫的要渲染的頁面,比如
NSString *url = @"http://7xvsjr.com1.z0.glb.clouddn.com/index.js";
self.url = [NSURL URLWithString:url];
我這里的index.js是index.we生成的index.js文件
5秀仲,這時候基本差不多了融痛,如果報錯剛引入沒有添加的東西,可以按照官網(wǎng)的playground添加神僵,還有一點(diǎn)需要指出的是雁刷,用Source Code打開info.plist,在里面添加
? ? ?到這里應(yīng)該差不多了,可能中間我有遺漏的地方保礼,畢竟集成過了好多天了沛励,我寫的這個只是簡單的在ios中自己的項目里集成weex ios,一些更為詳細(xì)的運(yùn)用后面我還會再寫炮障,希望自己可以堅持下去目派!