uni-app进阶之Weex/nvue【day6】

232 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第18天,点击查看活动详情

Weex/nvue

在这里插入图片描述

Nvue CSS只支持flex layout,这是WebView CSS语法的子集。这是因为操作系统本机布局不支持flex以外的web布局。当然,flex足以安排各种页面,但需要调整写作方法。 Nvue CSS只支持简单的类,对选择器的支持较少。 类仅在绑定时支持数组语法。 nvue中不支持某些web CSS属性,例如背景图像。但是,可以使用图像组件和层次结构来实现类似于web中的背景效果。因为本地开发中没有web这样的背景地图概念

纯原生渲染模式

在应用程序方面,uni app支持混合Vue页面和nvue页面,并支持相互跳转。还支持纯nvue本机渲染。 启用纯本机渲染模式可以减少应用程序端的包体积并减少内存使用。因为WebView渲染模式的相关模块将被删除。 在JSON源代码视图的“app plus”下的manifest配置“renderer”:“native”,这意味着在应用程序端启用纯本机渲染模式。页面JSON注册的Vue页面将被忽略,Vue组件也将由本机呈现引擎呈现。 如果未指定此值,则默认情况下不会启动纯本机渲染。

{    
    // ...    
     /* App平台特有配置 */    
    "app-plus": {    
        "renderer": "native", //App端纯原生渲染模式
    }    
}
weex编译模式uni-app编译模式
平台仅App所有端,包含小程序和H5
组件weex组件如divuni-app组件如view
生命周期只支持weex生命周期支持所有uni-app生命周期
JS APIweex API、uni API、Plus APIweex API、uni API、Plus API
单位750px是屏幕宽度,wx是固定像素单位750rpx是屏幕宽度,px是固定像素单位
全局样式手动引入app.vue的样式即为全局样式
页面滚动必须给页面套或组件默认支持页面滚动

页面滚动

本机开发没有页面滚动的概念。页面内容高于屏幕高度时不会自动滚动。只有一些组件可以滚动(列表、瀑布、滚动视图/滚动器)。要滚动内容,需要在可滚动组件下进行设置。这不符合前端开发的习惯。因此,当nvue编译为uni app模式时,会自动为页面的外层设置一个滚动条。如果页面内容过高,它将自动滚动。(组件不会嵌套,带有回收列表的页面也不会嵌套)。您可以设置为不自动设置。

{
  "path": "",
  "style": {
    "disableScroll": true // 不嵌套 scroller
  }
}
<template>
    <div @click="test">
        <text>点击页面发送数据</text>
    </div>
</template>
<script>
    export default {
        methods: {
            test(e) {
                uni.postMessage({test: "数据",value:"数据"});
            }
        }
    }
</script>

在Vue webview中使用plus。Postmessagetouninview(数据,nvueid)发送消息。数据为JSON格式(键值对的值仅支持字符串),nvueid是nvue所在的WebView的ID,WebView的ID获取方法参考:$getappwebview()。 参考nvue中的globalevent模块以侦听plusmessage事件,如下所示:

const globalEvent = weex.requireModule('globalEvent');
globalEvent.addEventListener("plusMessage", e => {
  console.log(e.data);//得到数据
});