在uniapp中加载openlayers,uniapp并不直接支持,提供了一种强大的工具:renderjs。

  在uni-app框架中,renderjs 是一个独特的功能,它允许你在视图层(即Vue组件的模板部分)直接执行JavaScript代码。这与传统的在脚本层(即Vue组件的script部分)执行代码的方式有所不同。renderjs 的主要优势在于它能够更高效地处理视图层的交互和计算,因为它直接在视图层运行,减少了与脚本层之间的通信开销。

  其提供了视图层与逻辑层分离的模式,我们一般把vue实例作为逻辑层,把renderjs模块作为视图层。如果需要做出生动一点的功能,我们就要涉及到视图层与逻辑层的交互。

一般来说,视图层就是如下所示:

<script module="renderMap" lang="renderjs">
export function someMethod() {
  console.log('地图被点击了');
  // 在这里处理点击事件
}
</script>

我们需要再视图层定义地图以及一切需要的数据。

处理移动端事件:

<view class="buttons" @click="renderMap.someMethod">点击我</view>

上面则是一个由逻辑层向视图层发送信息的过程。在真机环境当中,视图层会在加载时运行一次someMethod方法,为什么呢?就是因为我们在逻辑层通过监听某一个属性变化(类似watch),来控制视图层方法的执行,当逻辑层的属性初始化,也相当于属性变化,就会执行视图层的方法。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐