美文网首页
2019-01-11

2019-01-11

作者: 肚子大脖子细 | 来源:发表于2019-01-11 21:46 被阅读0次

    Weex入门到放弃

    • 页面跳转


    1和3这三种方式的跳转都需要获取待跳转页面的bundlejs的绝对地址。
    2需要对做拦截 (iOS用Scheme、[[UIApplication sharedApplication] openURL:weburl];吧,Android用intent-filter吧。)


    1. 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}];
    }
    
    1. Weex -> Native
    2. 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暂时没有接触


    1. Weex -> Weex
    this.$router.push('./detailpage')
    
    1. Native -> Weex
    • 页面通讯


    方法1: 通过bundlejs绝对地址后面拼接参数
    方法2: 通过broadcastChannel


    image.png

    方法3: 通过storage


    1. 正向传值
    2. 反向传值
    • 控件太少 基本只能实现最基本的效果

    image.png

    scroller 不能嵌套,也意味着 recycle-list, list 都无法嵌套。
    商业项目想要一人想要完成开发,需要掌握三端的技术。

    • 没有很好的debug手段

    同一份代码在手机和网页中由于平台差异效果可能不一样。如果手机中遇到崩溃. 但是错误会直接在界面上写个render error:-2013就停止执行了.完全看不到错误提示.在网页中又好的。

    相关文章

      网友评论

          本文标题:2019-01-11

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