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>

 

posted @ 2024-07-04 17:36  奔跑吧前端(李钊)  阅读(240)  评论(0编辑  收藏  举报