Weex跨平台前端实现原理

以前用的多的技术定义webview,通过webview和native进行交互,实现跨平台。后续出现phonegap/cordova等。但其效果依旧有所欠缺。所以近期出现大量使用RN和Weex方案为了解决跨平台浏览器不流畅的问题。

像web实现,是基于浏览器进行渲染。流畅度不高。换个思路,把前端映射成native组件,就流畅多了。来看一下Weex如何实现。

                                                                      使用.we架构

                                                                               当前vue file架构

1、weex file,weex定义的一种文件格式.we,目前好像使用vue.js框架进行构建居多。通过.vue的形式构建基于 <template><style><script> 的web。Virtual-DOM 和预编译器的设计使得该框架可以脱离HTML\CSS解析,仅仅依赖JS

2、通过transformer工具将.vue内容转换成JS Bundle,并将其部署在Server上

3、以JS的方式下发JS Bundle

4、终端Weex的JS Framework 内部进行数据绑定和树形结构转换等相关指令通过JSCore输出JSON 格式的 Virtual DOM

5、JS-Native Bridge将需要Native支持渲染的指令分发到Native引擎,其提供了callJs和callNative的双向通信的方式进行数据处理

6、native实现渲染

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Weex实现模糊搜索下拉多选的示例代码: ```vue <template> <div> <input type="text" v-model="searchText" @input="handleSearch" placeholder="搜索"> <div class="dropdown"> <div class="dropdown-item" v-for="item in filteredItems" :key="item.id" @click="toggleSelection(item)"> <span>{{ item.name }}</span> <input type="checkbox" :checked="isSelected(item)"> </div> </div> </div> </template> <script> export default { data() { return { searchText: '', items: [ { id: 1, name: 'Apple' }, { id: 2, name: 'Banana' }, { id: 3, name: 'Cherry' }, { id: 4, name: 'Durian' }, { id: 5, name: 'Elderberry' }, ], selectedItems: [], }; }, computed: { filteredItems() { return this.items.filter(item => item.name.toLowerCase().includes(this.searchText.toLowerCase())); }, }, methods: { handleSearch() { // Perform search logic here }, toggleSelection(item) { const index = this.selectedItems.findIndex(selectedItem => selectedItem.id === item.id); if (index > -1) { this.selectedItems.splice(index, 1); } else { this.selectedItems.push(item); } }, isSelected(item) { return this.selectedItems.some(selectedItem => selectedItem.id === item.id); }, }, }; </script> <style scoped> .dropdown { border: 1px solid #ccc; max-height: 200px; overflow-y: auto; } .dropdown-item { display: flex; align-items: center; padding: 8px; cursor: pointer; } .dropdown-item input[type="checkbox"] { margin-left: auto; } </style> ``` 这段代码实现了一个带有模糊搜索功能的下拉多选框。用户可以在输入框中输入搜索关键字,下方会根据关键字筛选出匹配的选项,并且每个选项都有一个复选框来表示是否被选中。用户可以点击选项来切换选中状态。选中的项目将会存储在`selectedItems`数组中,你可以在`toggleSelection`方法中进行自定义处理。 请注意,这是一个简单的示例代码,你可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值