版权声明:有些文章写的很随意,那是仅作为个人记录的文章,建议直接关掉,多看一秒亏一秒 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,没关系,写网页也是好的。