Weex Module

版权声明:有些文章写的很随意,那是仅作为个人记录的文章,建议直接关掉,多看一秒亏一秒 https://blog.csdn.net/qq_36523667/article/details/82262236

学习自

https://www.jianshu.com/p/208abd91f54e

我了解Weex不多,大致的认知是这样的:

.we或者.vue转化成.js,然后放到服务器,client下载.js,下载后的形式是byte[],转json,最后交给JS解析引擎去解析,转化成native组件。

这也可以看出来它的多端复用原理吧。

但是有些功能JS实现不了,或者是实现成本太高。所以可以用Module来

Module就是这样一个东西,没辙了,Weex搞不定了,通过Module让Native来搞定。但是这也意味着,这个功能每个端都得自己实现。

所以功能能够在JS实现最好。实在没办法,每个端自己实现一套这个功能,也不算麻烦。

Native注册Module

    WXSDKEngine.registerComponent(new SimpleComponentHolder(RefreshView.class,new RefreshView.Ceator()), false, "refreshview");

JS代码里是这样用的

 <refreshview :diaplay="showLoading"  ref="refreshs" class="list">
        // other code 
 </refreshview>

 

Weex代码里是这样的

    var stream = weex.requireModule('stream') // 声明
    stream.fetch // 请求

注册源码我追溯了一下,发现本地注册了一套,JS也注册了一套。

JS为什么要注册呢?我有点懵。后来我理清楚了。不是注册到所谓下发的JS代码里,而是注册到JS层的引擎里。

执行

weex->js->native,我猜测,其中js->native的解析,解析的过程中,解析到Module的时候,会从JS引擎里去找,然后再去找Native。

也有可能是解析好之后,在执行到Module的时候,会先到JS引擎去找,再到Native去找。

追溯源码后,发现和第二种猜测差不多。

Native回调JS

最终也是通过Bridge回调的JS。

学习完后,很疑惑,到底是Native是主体,还是JS是主体?这个问题只能在接下来的学习中去解决了。

还有我AS上跑不了Weex,没关系,写网页也是好的。

猜你喜欢

转载自blog.csdn.net/qq_36523667/article/details/82262236