uniapp中renderjs的使用
renderjs是一个运行在视图层的js。它只支持app-vue和web。
renderjs的主要作用有2个:
1.让APP端引入web端的js库,可以使用web的功能
2.大幅降低逻辑层和视图层的通讯损耗,提供高性能视图交互能力
<template> <view> <button @click="lzRend.emitData">触发renderjs的事件</button> <!-- lzRend为renderjs中的名字 --> <view id="lzRend" :info="info" :change:info="lzRend.receiveInfo"></view> </view> </template> <script> export default { data() { return { // 用于桥接的数据 info: '要传递的数据,数据发生变化则会传递给renderjs中的receiveInfo方法', }; }, mounted() { setTimeout(() => { this.info = '变化的数据'; }, 1000); }, methods: { // renderjs发送过来的数据 receiveRenderData(val) { console.log('renderjs返回的值-->', val); }, }, }; </script> <script module="lzRend" lang="renderjs"> export default { data() { return { map: null, linePath: [], } }, mounted() {}, methods: { // 发送数据到逻辑层 emitData(e, ownerVm) { console.log(e); // 发送数据到逻辑层 ownerVm.callMethod('receiveRenderData', this.linePath) // 或者使用 this.$ownerInstance.callMethod('receiveRenderData', { name: name, args: args }); }, // 逻辑层数据发生变化时触发(接收逻辑层发送的数据) receiveInfo(newValue, oldValue) { console.log(newValue, oldValue); }, } } </script> <style> </style>