2019-01-11
2019-01-11 本文已影响0人
肚子大脖子细
Weex入门到放弃
-
页面跳转
1和3这三种方式的跳转都需要获取待跳转页面的bundlejs的绝对地址。
2需要对做拦截 (iOS用Scheme、[[UIApplication sharedApplication] openURL:weburl];吧,Android用intent-filter吧。)
- Native -> Weex
NSURL *URL = [self testURL: [self.url absoluteString]];
NSString *randomURL = [NSString stringWithFormat:@"%@%@random=%d",URL.absoluteString,URL.query?@"&":@"?",arc4random()];
[_instance renderWithURL:[NSURL URLWithString:randomURL] options:@{@"bundleUrl":URL.absoluteString} data:nil];
- (void)renderWithURL:(NSURL *)url options:(NSDictionary *)options data:(id)data
{
if (!url) {
WXLogError(@"Url must be passed if you use renderWithURL");
return;
}
self.needValidate = [[WXHandlerFactory handlerForProtocol:@protocol(WXValidateProtocol)] needValidate:url];
WXResourceRequest *request = [WXResourceRequest requestWithURL:url resourceType:WXResourceTypeMainBundle referrer:@"" cachePolicy:NSURLRequestUseProtocolCachePolicy];
[self _renderWithRequest:request options:options data:data];
[WXTracingManager startTracingWithInstanceId:self.instanceId ref:nil className:nil name:WXTNetworkHanding phase:WXTracingBegin functionName:@"renderWithURL" options:@{@"bundleUrl":url?[url absoluteString]:@"",@"threadName":WXTMainThread}];
}
- Weex -> Native
- Weex -> Weex
navigator.push({
'url': getEntryUrl('detail'),
'animated': 'true'
})
export function getEntryUrl (name) {
if (weex.config.env.platform === 'Web') {
return './' + name + '.html'
} else {
let arr = weex.config.bundleUrl.split('/')
arr.pop()
arr.push(name + '.js')
return arr.join('/')
}
}
-
页面切换
1可以用vue-router实现挂载的reload
2暂时没有接触
- Weex -> Weex
this.$router.push('./detailpage')
- Native -> Weex
-
页面通讯
方法1: 通过bundlejs绝对地址后面拼接参数
方法2: 通过broadcastChannel
image.png
方法3: 通过storage
- 正向传值
- 反向传值
-
控件太少 基本只能实现最基本的效果
scroller 不能嵌套,也意味着 recycle-list, list 都无法嵌套。
商业项目想要一人想要完成开发,需要掌握三端的技术。
-
没有很好的debug手段
同一份代码在手机和网页中由于平台差异效果可能不一样。如果手机中遇到崩溃. 但是错误会直接在界面上写个render error:-2013就停止执行了.完全看不到错误提示.在网页中又好的。