uni-app学习之nvue使用教程

目录
  • 一、介绍
  • 二、新建 nvue 页面
  • 三、开发
  • 四、nvue 开发与 vue 开发的常见区别
  • 补充:安卓与iOS区别
  • 总结

一、介绍

uni-app App 端内置了一个基于 weex 改进的原生渲染引擎,提供了原生渲染能力。

在 App 端,如果使用 vue 页面,则使用 webview 渲染;如果使用 nvue 页面(native vue 的缩写),则使用原生渲染。一个 App 中可以同时使用两种页面,比如首页使用 nvue,二级页使用 vue 页面,官网 hello uni-app 示例就是如此。

虽然 nvue 也可以多端编译,输出 H5 和小程序,但 nvue 的 css 写法受限,所以如果不开发 App,不需要使用 nvue。

二、新建 nvue 页面

在项目下新建 nvue 页面:

不管是 vue 页面还是 nvue 页面,都需要在 pages.json 中注册。在 HBuilderX 中新建页面是会自动注册。

如果一个页面路由下同时有 vue 页面和 nvue 页面,即出现同名的 vue 和 nvue 文件。那么在 App 端,会仅使用 nvue 页面,同名的 vue 文件将不会被编译到 App 端。而在非 App 端,会优先使用 vue 页面。

如果不同名,只有 nvue 页面,则在非 app 端,只有 uni-app 编译模式的 nvue 文件才会编译。

三、开发

nvue 页面结构同 vue, 由 template、style、script 构成。

四、nvue 开发与 vue 开发的常见区别

  1. nvue 页面控制显隐只可以使用 v-if 不可以使用 v-show。
  2. nvue 页面只能使用 flex 布局,不支持其他布局方式。页面开发前,首先想清楚这个页面的纵向内容有什么,哪些是要滚动的,然后每个纵向内容的横轴排布有什么,按 flex 布局设计好界面。
  3. nvue 页面的布局排列方向默认为竖排(column),如需改变布局方向,可以在 manifest.json -> app-plus-> nvue -> flex-direction 节点下修改,仅在 uni-app 模式下生效。
  4. nvue页面编译为 H5、小程序时,会做一件 css 默认值对齐的工作。因为 weex 渲染引擎只支持 flex,并且默认 flex 方向是垂直。而 H5 和小程序端,使用 web 渲染,默认不是 flex,并且设置 display:flex 后,它的 flex 方向默认是水平而不是垂直的。所以 nvue 编译为 H5、小程序时,会自动把页面默认布局设为 flex、方向为垂直。当然开发者手动设置后会覆盖默认设置。
  5. 文字内容,必须、只能在 组件下。不能在 <div>、<view> 的 text 区域里直接写文字。否则即使渲染了,也无法绑定js里的变量。
  6. 只有text标签可以设置字体大小,字体颜色。
  7. 布局不能使用百分比、没有媒体查询。
  8. nvue 切换横竖屏时可能导致样式出现问题,建议有 nvue 的页面锁定手机方向。
  9. 支持的css有限,不过并不影响布局出你需要的界面,flex还是非常强大的。
  10. 不支持背景图。但可以使用image组件和层级来实现类似web中的背景效果。因为原生开发本身也没有web这种背景图概念。
  11. css选择器支持的比较少,只能使用 class 选择器。
  12. nvue 的各组件在安卓端默认是透明的,如果不设置background-color,可能会导致出现重影的问题。
  13. class 进行绑定时只支持数组语法。
  14. Android端在一个页面内使用大量圆角边框会造成性能问题,尤其是多个角的样式还不一样的话更耗费性能。应避免这类使用。
  15. nvue页面没有bounce回弹效果,只有几个列表组件有bounce效果,包括 list、recycle-list、waterfall。
  16. 原生开发没有页面滚动的概念,页面内容高过屏幕高度并不会自动滚动,只有部分组件可滚动(list、waterfall、scroll-view/scroller),要滚的内容需要套在可滚动组件下。这不符合前端开发的习惯,所以在 nvue 编译为 uni-app模式时,给页面外层自动套了一个 scroller,页面内容过高会自动滚动。(组件不会套,页面有recycle-list时也不会套)。后续会提供配置,可以设置不自动套。
  17. 在 App.vue 中定义的全局js变量不会在 nvue 页面生效。globalData和vuex是生效的。
  18. App.vue 中定义的全局 css,对 nvue 和 vue 页面同时生效。如果全局 css 中有些 css 在 nvue 下不支持,编译时控制台会报警,建议把这些不支持的css包裹在条件编译 (opens new window) 里,APP-PLUS-NVUE 不能在 style 中引入字体文件。如果是本地字体,可以用plus.io的API转换路径。
  19. 目前不支持在 nvue 页面使用 typescript/ts。
  20. 强烈建议在nvue页面使用原生导航栏。nvue 的渲染速度再快,也没有原生导航栏快。原生排版引擎解析json 绘制原生导航栏耗时很少,而解析 nvue 的 js 绘制整个页面的耗时要大的多,尤其在新页面进入动画期间,对于复杂页面,没有原生导航栏会在动画期间产生整个屏幕的白屏或闪屏。

补充:安卓与iOS区别

  • nvue 的各组件在安卓端默认是透明的,如果不设置background-color,可能会导致出现重影的问题。
  • iOS下refresh可使用alwaysScrollableVertical支持上下滚动,支持下拉操作。
  • 如果定位元素超过容器边界,在 Android 下,超出部分将不可见,原因在于 Android 端元素 overflow默认值为hidden,但目前 Android 暂不支持设置 overflow: visible
  • iOS平台阴影box-shadow,安卓平台阴影elevation(组件的属性,不是css样式)
{box-shadow:inset offset-x offset-y blur-radius color}
{box-shadow:投影方式 X轴偏移量 Y轴偏移量 阴影模糊半径  阴影颜色}
<view elevation="5px"></view>

总结

到此这篇关于uni-app学习之nvue使用的文章就介绍到这了,更多相关uni-app nvue使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • uniapp vue与nvue轮播图 轮播图组件

    vue部分如下: <template> <view class=""> <!-- 轮播图组件 --> <swiper :indicator-dots="true" :autoplay="true" :interval="3000" :duration="1000" circular=""> <block v-for="(it

  • 分析uniapp入门之nvue爬坑记

    前言 uni-app 是 DCloud 出品的新一代跨端框架,可以说是目前跨端数最多的框架之一了,目前支持发布到:App(Android/iOS).H5.小程序(微信小程序/支付宝小程序/百度小程序/字节跳动小程序),目前市面上类似的框架还有:Taro(京东出品).Megalo(网易出品). weex 支持的东西,在 nvue 里大多都是支持的,所以这里就不详细讲述 weex 的相关组件和 api 调用,只讲述一些在实际开发过程中遇到的一些小问题. Hello World 开始创建第一个 nvu

  • vscode不支持nvue语法高亮的解决办法(图文详解)

    目录 项目场景: 问题描述 原因分析: 解决方案: 配置如图 解决效果 项目场景: 项目场景:用vscode开发uniapp会遇到用.nvue开发的时候.但是vscode并没有提供.nvue的语法高亮,这篇文章给刚用vscode写.nvue的读者 问题描述 例如:vscode中使用*.nvue识别不出文件类型,没有语法高亮如图: 原因分析: 我这里用的插件是vue3语法支持的Volar,网上铺天盖地的vetur解决方案,其实只要vscode配置一下就行 解决方案: 配置如图 解决效果 到此这篇关

  • uni-app学习之nvue使用教程

    目录 一.介绍 二.新建 nvue 页面 三.开发 四.nvue 开发与 vue 开发的常见区别 补充:安卓与iOS区别 总结 一.介绍 uni-app App 端内置了一个基于 weex 改进的原生渲染引擎,提供了原生渲染能力. 在 App 端,如果使用 vue 页面,则使用 webview 渲染:如果使用 nvue 页面(native vue 的缩写),则使用原生渲染.一个 App 中可以同时使用两种页面,比如首页使用 nvue,二级页使用 vue 页面,官网 hello uni-app 示

  • uni app仿微信顶部导航条功能

    最近一直在学习uni-app开发,由于uniapp是基于vue.js技术开发的,只要你熟悉vue,基本上很快就能上手了. 在开发中发现uni-app原生导航栏也能实现一些顶部自定义按钮+搜索框,只需在page.json里面做一些配置即可.设置app-plus,配置编译到App平台的特定样式.dcloud平台对app-plus做了详细说明:app-plus配置,需注意 目前暂支持H5.App端,不支持小程序. 在page.json里配置app-plus即可 { "path": "

  • 微信小程序学习之wxs使用教程

    什么是wxs? wxs(WeiXin Script)是小程序的一套脚本语言, 结合WXML, 可以构建出页面结构. wxs标签 <wxs module="utils" src="../../wxs/test.wxs"></wxs> module属性: 当前标签的模块名, 建议该值唯一, 若存在同名的模块名,则按照先后顺序覆盖(后者会覆盖前者). src属性: a. 只能引用.wxs文件, 且必须是相对路径; b. wxs模块均为单例, wxs

  • 人工智能学习Pytorch进阶操作教程

    目录 一.合并与分割 1.cat拼接 2.stack堆叠 3.拆分 ①Split按长度拆分 ②Chunk按数量拆分 二.基本运算 1.加减乘除 2.矩阵相乘 3.次方计算 4. clamp 三.属性统计 1.求范数 2.求极值.求和.累乘 3. dim和keepdim 4.topk和kthvalue 5.比较运算 6.高阶操作 ①where ②gather 一.合并与分割 1.cat拼接 直接按照指定的dim维度进行合并,要求除了所需要合并的维度之外,其他的维度需要是一样的 2.stack堆叠

  • 汇编语言学习手把手的Debug教程

    目录 Debug 是什么 Debug 实战 Debug -r Debug -d Debug -e Debug -u Debug -t Debug -a 总结 关于汇编的第一篇文章: 爱了爱了,这篇寄存器讲的有点意思 Hello大家好,我是程序员cxuan!我们上篇文章了解了一下基本的寄存器,这篇文章我们来进行实际操作一下. 原文链接:https://mp.weixin.qq.com/s/PQzuKtSiHwZleTosvop68A 我们以后将会用到很多 Debug 命令,这里我们先来熟悉一下它们

  • php之app消息推送案例教程

    如何用php实现APP消息推送 现在有很多的消息推送厂商,比如阿里云的消息推送,极光推送,融云的消息推送.他们的原理都是把sdk内置在app里面,达到消息推送的目的,通过一张图来了解一下,看不懂不要紧,理解大概的过程就行 实现 进入极光官网,注册一个app应用 集成厂商推送服务(!!!非常重要,不然推送不了--) 中途还要验证企业用户,集成完把sdk发给app开发人员. 极光官网推送,测试是否成功 到这一步已经实现基本的推送了,可以发现非常简单. 重点来了,用php实现推送 回到第一张图,只要我

  • python深度学习tensorflow安装调试教程

    目录 正文 一.安装anaconda 二.安装tensorflow 三.调试 正文 用过一段时间的caffe后,对caffe有两点感受:1.速度确实快; 2. 太不灵活了. 深度学习技术一直在发展,但是caffe的更新跟不上进度,也许是维护团队的关系:CAFFE团队成员都是业余时间在维护和更新.导致的结果就是很多新的技术在caffe里用不了,比如RNN, LSTM,batch-norm等.当然这些现在也算是旧的东西了,也许caffe已经有了,我已经很久没有关注caffe的新版本了.它的不灵活之处

  • python深度学习tensorflow入门基础教程示例

    目录 正文 1.编辑器 2.常量 3.变量 4.占位符 5.图(graph) 例子1:hello world 例子2:加法和乘法 例子3: 矩阵乘法 正文 TensorFlow用张量这种数据结构来表示所有的数据. 用一阶张量来表示向量,如:v = [1.2, 2.3, 3.5] ,如二阶张量表示矩阵,如:m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]],可以看成是方括号嵌套的层数. 1.编辑器 编写tensorflow代码,实际上就是编写py文件,最好找一个好用的编辑器

  • Android APP开发KML轨迹导出教程示例

    目录 引言 写入kml gps点 奥森10km 轨迹图 引言 前两天在知乎上面找海外骑行.跑步软件Strava的时候,看到一个将运动轨迹从A App 导出,导入到B APP的工具 APP RunGap,恰巧之前给台湾.印度那边的测试同事处理他们的问题时,写过这样的一个工具,KML文件导出,然后在Mac下的 Google 地球上看轨迹是否偏差,是否存在坐标类型的转化错误等问题,能够比较快地定位问题. KML文件,读者有不知道的可以Google一下,它是一种专门存GPS 点数据的xml文件格式. 将

  • APP添加CNZZ统计插件教程 Android版添加phonegap

    KeyMob移动广告平台是精准稳定的广告SDK.移动广告平台,致力于塑造国内最具有影响力的移动广告平台.主营移动广告服务,横跨IOS.Android两大平台,包含横幅.插屏.全屏.视频广告.banner等多种广告形式. 一.导入JAR包 使用Eclipse进行开发的用户,首先将下载的MobileProbe.jar解压到本地工程目录下的libs子目录里面(例如,您的工程目录为,D:workspaceXXproject,请将MobileProbe.jar放入D:workspaceXXprojectl

随机推荐