uni-app的基本使用


uni-app简介

uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。
即使不跨端,uni-app也是更好的小程序开发框架、更好的App跨平台框架、更方便的H5开发框架。不管领导安排什么样的项目,都可以快速交付,不需要转换开发思维、不需要更改开发习惯
具有vue和微信小程序的开发经验,可快速上手uni-app

1. 环境搭建

  • 安装编辑器HbuilderX ​(应用商城下载即可)
    HBuilderX是通用的前端开发工具,但为​​uni-app​​做了特别强化。
    HBuilder 官方IDE下载地址
    下载App开发版,可开箱即用
    终打包成微信小程序就必须在微信开发者工具去预览,那么需要下载微信开发者工具了。
    安装微信开发者工具 微信开发者工具下载地址与更新日志 | 微信开放文档
  • 利用HbuilderX初始化项目
    在点击工具栏里的文件 -> 新建 -> 项目(快捷键Ctrl+N):
    在这里插入图片描述
    新建一个uniapp项目,选择uni-app类型,输入工程名,选择模板,点击创建,即可成功创建。
    uni-app自带的模板有 默认的空项目模板、Hello uni-app 官方组件和API示例,还有一个重要模板是 uni ui项目模板,日常开发推荐使用该模板,已内置大量常用组件。
    在这里插入图片描述会默认生成项目的基本结构。
    在这里插入图片描述

2. 运行uni-app

浏览器运行:进入hello-uniapp项目,点击工具栏的运行 -> 运行到浏览器 -> 选择浏览器,即可体验 uni-app 的 web 版。
在这里插入图片描述
运行App到手机或模拟器:使用电压足够的usb端口连接手机,设置中开启USB调试,手机上允许电脑设备调试手机,进入hello-uniapp项目,点击工具栏的运行 -> 运行App到手机或模拟器,即可在该设备里面体验uni-app。
在这里插入图片描述
在微信开发者工具里运行:进入hello-uniapp项目,点击工具栏的运行 -> 运行到小程序模拟器 -> 微信开发者工具,即可在微信开发者工具里面体验uni-app。
在这里插入图片描述
注意:如果是第一次使用,需要先配置小程序ide的相关路径,才能运行成功。如下图,需在输入框输入微信开发者工具的安装路径。
在这里插入图片描述
注意:微信开发者工具需要开启服务端口 在微信工具的设置->安全中。
其他的方式的运行暂不进行介绍 可以
uni-app官网

3.介绍项目目录和文件作用

在这里插入图片描述

4.开发规范概述

为了实现多端兼容,综合考虑编译速度、运行性能等因素,uni-app约定了如下开发规范:
1. 页面文件遵循Vue单文件组件规范
2. 组件标签靠近小程序规范,详细见uni-app组件规范
3. 接口能力(js api)靠近微信小程序规范,但需将前缀wx替换为uni,详见uni-app接口规范
4. 数据绑定及事件处理同Vue.js规范,同时补充了App以及页面的生命周期
5. 为兼容多端运行,建议使用flex布局进行开发

全局配置和页面配置

1. 通过globalStyle进行全局配置

用于设置应用的状态栏、导航条、标题、窗口背景色等。​

属性类型默认值秒速平台差异说明
navigationBarBackgroundColorHexColor#F8F8F8导航栏背景颜色(同状态栏背景色)APP与H5为#F8F8F8,小程序平台请参考相应小程序文档
navigationBarTextStyleStringblack导航栏标题颜色及状态栏前景颜色,仅支持 black/white支付宝小程序不支持,请使用 my.setNavigationBar
navigationBarTitleTextString导航栏标题文字内容
navigationStyleStringdefault导航栏样式,仅支持 default/custom。custom即取消默认的原生导航栏,需看使用注意微信小程序 7.0+、百度小程序、H5、App(2.0.3+)
backgroundColorHexColor#ffffff下拉显示出来的窗口的背景色微信小程序
backgroundTextStyleStringdark下拉 loading 的样式,仅支持 dark / light微信小程序
enablePullDownRefreshBooleanfalse是否开启下拉刷新
onReachBottomDistanceNumber50页面上拉触底事件触发时距页面底部距离,单位只支持px,
backgroundColorTopHexColor#ffffff顶部窗口的背景色(bounce回弹区域)仅 iOS 平台
backgroundColorBottomHexColor#ffffff底部窗口的背景色(bounce回弹区域)仅 iOS 平台
titleImageString导航栏图片地址(替换当前文字标题),支付宝小程序内必须使用https的图片链接地址支付宝小程序、H5、APP
transparentTitleStringnone导航栏整体(前景、背景)透明设置。支持 always 一直透明 / auto 滑动自适应 / none 不透明支付宝小程序、H5、APP
titlePenetrateStringNO导航栏点击穿透支付宝小程序、H5
pageOrientationStringportrait横屏配置,屏幕旋转设置,仅支持 auto / portrait / landscapeApp 2.4.7+、微信小程序、QQ小程序
animationTypeStringpop-in窗口显示的动画效果,App
animationDurationNumber300窗口显示动画的持续时间,单位为 msApp
app-plusObject设置编译到 App 平台的特定样式App
h5Object设置编译到 H5 平台的特定样式H5
mp-alipayObject设置编译到 mp-alipay 平台的特定样式支付宝小程序
mp-weixinObject设置编译到 mp-weixin 平台的特定样式,微信小程序
mp-baiduObject设置编译到 mp-baidu 平台的特定样式,百度小程序
mp-toutiaoObject设置编译到 mp-toutiao 平台的特定样式抖音小程序
mp-larkObject设置编译到 mp-lark 平台的特定样式抖音小程序
mp-qqObject设置编译到 mp-qq 平台的特定样式飞书小程序
mp-kuaishouObject设置编译到 mp-kuaishou 平台的特定样式快手小程序
mp-jdObject设置编译到 mp-jd 平台的特定样式京东小程序
usingComponentsObject引用小程序组件抖音小程序
renderingModeString同层渲染,webrtc(实时音视频) 无法正常时尝试配置 seperated 强制关掉同层微信小程序
leftWindowBooleantrue当存在 leftWindow 时,默认是否显示 leftWindowH5
topWindowBooleantrue当存在 topWindow 时,默认是否显示 topWindowH5
rightWindowBooleantrue当存在 rightWindow 时,默认是否显示 rightWindowH5
rpxCalcMaxDeviceWidthNumber960rpx 计算所支持的最大设备宽度,单位 pxApp(vue2 且不含 nvue)、H5(2.8.12+)
rpxCalcBaseDeviceWidthNumber375rpx 计算使用的基准设备宽度,设备实际宽度超出 rpx 计算所支持的最大设备宽度时将按基准宽度计算,单位 pxApp(vue2 且不含 nvue)、H5(2.8.12+)
rpxCalcIncludeWidthNumber750rpx 计算特殊处理的值,始终按实际的设备宽度计算,单位 rpxApp(vue2 且不含 nvue)、H5(2.8.12+)
dynamicRpxBooleanfalse动态 rpx,屏幕大小变化会重新渲染 rpxApp-nvue(vue3 固定值为 true) 3.2.13+
maxWidthNumber单位px,当浏览器可见区域宽度大于maxWidth时,两侧留白,当小于等于maxWidth时,页面铺满;不同页面支持配置不同的maxWidth;maxWidth = leftWindow(可选)+page(页面主体)+rightWindow(可选)H5(2.9.9+)

注意:
支付宝小程序使用titleImage时必须使用https的图片链接地址,需要真机调试才能看到效果,支付宝开发者工具内无效果
globalStyle中设置的titleImage也会覆盖掉pages->style内的设置文字标题
使用 maxWidth 时,页面内fixed元素需要使用–window-left,–window-right来保证布局位置正确
dynamicRpx vue3 nvue页面已移除此配置,升级为横竖屏切换自动rpx,如果不需要可以使用 px

"globalStyle": {
	"navigationBarTextStyle": "#fff",
	"navigationBarTitleText": "琅琊榜",
	"navigationBarBackgroundColor": "#f0a1a8",
	"backgroundColor": "#f0a1a8"
},

在这里插入图片描述
注: :如果你没有修改完全成功,或者都不生效,可能是设置了页面的配置样式导致的,它会覆盖掉全局样式配置中相同属性的样式。这是因为页面配置优先级高于全局配置。我们删除掉页面配置样式即可。

"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
		{
			"path": "pages/index/index",
			"style": {
				// "navigationBarTitleText": "uni-app" 注释掉
			}
		}
	],

下拉刷新设置

"globalStyle": {
		"navigationBarTextStyle": "white",
		"navigationBarTitleText": "琅琊榜",
		"navigationBarBackgroundColor": "#f0a1a8",
		"backgroundColor": "#d0d3da",
		"enablePullDownRefresh": true,
		"backgroundTextStyle": "dark"
	},

在这里插入图片描述

2. page.json (页面路由配置)

uni-app 通过 pages 节点配置应用由哪些页面组成,pages 节点接收一个数组,数组每个项都是一个对象,其属性值如下:

属性类型默认值描述
pathString配置页面路径
styleObject配置页面窗口表现
  • pages节点的第一项为应用入口页(即首页)
  • 应用中新增/减少页面,都需要对 pages 数组进行修改
  • 文件名不需要写后缀,框架会自动寻找路径下的页面资源
    通过style修改页面的标题和导航栏背景色,并且设置h5下拉刷新的特有样式
{
	"path": "pages/index/index",
		"style": {
			"navigationBarBackgroundColor": "#007AFF",
			"navigationBarTextStyle": "black",
			"enablePullDownRefresh": true, // 开启下拉刷新
			"disableScroll": true, // 不允许滚动
			"h5": {
				// h5下拉刷新是蓝色,
				"pullToRefresh": {
					"color": "#007AFF"
				}
			}
			// "navigationBarTitleText": "uni-app"
		}
	}

3. tabbar

如果应用是一个多 tab 应用,可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页。

注意:

  • 当设置 position 为 top 时,将不会显示 icon
  • tabBar 中的 list 是一个数组,只能配置最少2个、最多5个 tab,tab 按数组的顺序排序。
属性类型必填默认值描述平台差异说明
colorHexColortab上的文字默认颜色
selectColorHexColortab上的文字选中时的颜色
backgroundColorHexColortab的背景颜色
borderStyleStringblacktabbar 上边框的颜色,仅支持 black/whiteApp 2.3.4+ 支持其他颜色值
listArraytab 的列表,详见 list 属性说明,最少2个、最多5个 tab
positionStringbottom可选值 bottom、toptop 值仅微信小程序支持
midButtonObjectbottom中间按钮 仅在 list 项为偶数时有效App 2.3.4+、H5 3.0.0+
list属性
属性类型必填说明平台差异
pagePathString页面路径,必须在 pages 中先定义
textStringtab 上按钮文字,在 App 和 H5 平台为非必填。例如中间可放一个没有文字的+号图标
iconPathString图片路径,icon 大小限制为40kb,建议尺寸为 81px * 81px,当 position 为 top 时,此参数无效,不支持网络图片,不支持字体图标
selectedIconPathString选中时的图片路径,icon 大小限制为40kb,建议尺寸为 81px * 81px ,当 position 为 top 时,此参数无效
visibleBoolean该项是否显示,默认显示App (3.2.10+)、H5 (3.2.10+)
iconfontObject字体图标,优先级高于 iconPathApp(3.4.4+)、H5 (3.5.3+)
"tabBar": {
	// "iconfontSrc": "./css/font/iconfont.ttf",
	"list": [
		{
			"text": "首页",
			"pagePath": "pages/index/index",
			"iconPath": "static/du.png",
			"selectedIconPath": "static/du.png"
			// "iconfont": {
			// 	"text": "\ue64e",
			// 	"color": "#515151"
			// }
		},
		{
			"text": "商品",
			"pagePath": "pages/goods/index",
			"iconPath": "static/jie.png"
		}
	]
},

在这里插入图片描述

注意:

  1. 在tabbar中运用iconfont图标,在小程序中不生效,在h5页面生效
    原因是:iconfont属性支持App(3.4.4+)和H5 (3.5.3+)
  2. iconfont的图标运行
    text属性是 \u 进行拼接
    "iconfontSrc": "./css/font/iconfont.ttf",
    "iconfont": {
    	"text": "\ue64e",
    	"color": "#515151"
    }
    
  3. position 设置为top时图标消失
    在这里插入图片描述

3. condition启动模式配置

启动模式配置,仅开发期间生效,用于模拟直达页面的场景,如:小程序转发后,用户点击所打开的页面。
属性说明

属性类型是否必填描述
currentNumber当前激活的模式,List 节点的索引值
listArray启动模式列表

list属性说明

属性类型是否必填描述
nameString启动模式名称
pathString启动页面路径
queryString启动参数,可在也页面的onLoad函数里获得
  • 16
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Uni-app 是一种跨平台的前端开发框架,可以使用 Vue.js 来开发多个平台的应用程序,如小程序、H5、App 等。Uni-app 提供了一套统一的 API 和组件库,使得开发者可以在不同平台上共享代码和逻辑,提高开发效率。 以下是 Uni-app基本用法: 1. 安装 Uni-app:在命令行工具中使用 npm 或者 yarn 安装 Uni-app 的命令行工具。 2. 创建项目:使用命令行工具创建一个新的 Uni-app 项目,可以选择不同的模板和目标平台。 3. 开发页面:在项目目录中找到 `pages` 文件夹,里面存放着不同页面的文件夹。在每个页面文件夹中,可以编写对应的 `vue` 文件,其中包括模板、样式和逻辑。 4. 页面导航:Uni-app 提供了 `uni.navigateTo`、`uni.redirectTo`、`uni.switchTab` 等 API 来实现页面之间的导航。 5. 数据绑定:Uni-app 使用Vue.js 相同的数据绑定语法,在 `vue` 文件中使用双大括号语法 `{{ }}` 来插入变量,并使用指令来实现条件渲染、循环等功能。 6. 组件化开发:Uni-app 支持组件化开发,你可以创建自定义组件,并在页面中进行复用。 7. API 调用:Uni-app 提供了一套统一的 API,可以调用不同平台的原生功能,如获取用户位置、拍照、支付等。 8. 平台差异处理:由于不同平台的特性和限制不同,Uni-app 提供了 `uni-platform` 和 `uni-xxxx` 等全局对象来处理平台差异问题。 9. 打包和发布:使用命令行工具进行项目打包,并将生成的文件发布到各个平台的开发者账号上。 这些是 Uni-app基本用法,希望对你有所帮助!如果你还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值