uni-app

2023-11-03

一、准备工作

uni-app文档

HBuilderX,H是HTML的首字母,Builder是构造者,X是HBuilder的下一代版本。我们也简称HX。 HX是轻如编辑器、强如IDE的合体版本。

HBuilderX下载

1.新建项目

在HBuilderX中点击文件新建项目
新建项目
可选择项目类型,vue版本选择,是否启用uni-cloud等
新建项目

2.配置浏览器

想要预览效果点击运行
运行到浏览器可打开浏览器进行预览
运行到浏览器需要先配置浏览器,没有配置直接点击是无效的
将浏览器文件所在地址目录配置路径
配置浏览器

运行到内置浏览器可直接在HBuilderX中进行预览(点击后会让你下一个插件)
配置浏览器
运行到小程序模拟器
和运行到浏览器一样需要配置路径
运行到小程序模拟器
配置小程序模拟器

3.兼容

部分语法标签在web端适用,在小程序端被转译成其他不适用,所以开发时需要考虑兼容问题

4.新建页面

新建page页面
新建页面
创建同名目录会自动创建出和文件夹一样名字的vue文件
新建页面

二、上手

1.pages.json文件的页面配置与全局配置

点击查看更多

该文件下pages数组中第一项为首页项
配置

{
	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
		{
			"path": "pages/index/index",
			"style": {
				"navigationBarTitleText": "首页"
			}
		},
	    {
            "path" : "pages/list/list",
			"style": {//当前页面,优先级高
				"navigationBarTitleText": "新闻列表",//当前页面导航栏标题
				"navigationBarBackgroundColor": "#1AA034",//当前页面导航栏背景颜色
				"navigationBarTextStyle": "white"//当前页面导航栏字体样式
			}
        }
        ,{
            "path" : "pages/about/about",
            "style" :                                                                                    
            {
                "navigationBarTitleText": "关于我们",
                "enablePullDownRefresh": false
            }
            
        }
    ],
	"globalStyle": {//全局页面,优先级低
		"navigationBarTextStyle": "white",
		"navigationBarTitleText": "uni系列课程",
		"navigationBarBackgroundColor": "#DD5347",
		"backgroundColor": "#F8F8F8"
	},
	"uniIdRouter": {},
	"tabBar": {//选项卡
		"color":"#333",
		"selectedColor": "#015FF9",
		"list": [
			{
				"text": "首页",
				"pagePath": "pages/index/index",
				"iconPath": "static/images/home.png",
				"selectedIconPath": "static/images/home_light.png"
			},
			{
				"text": "列表",
				"pagePath": "pages/list/list",
				"iconPath": "static/images/search.png",
				"selectedIconPath": "static/images/search_light.png"
			},
			{
				"text": "我们",
				"pagePath": "pages/about/about",
				"iconPath": "static/images/my.png",
				"selectedIconPath": "static/images/my_light.png"
			}
		]
	}
}

2.rpx尺寸单位

点击查看更多

rpx 是相对于基准宽度的单位,可以根据屏幕宽度进行自适应。

3.内置组件

更多组件、属性、平台差异点击查看
uView:多平台快速开发的UI框架

icon 图标
text 文本组件。用于包裹文本内容
view 视图容器。它类似于传统html中的div,用于包裹各种元素内容
scroll-view 可滚动视图区域。用于区域滚动。需注意在webview渲染的页面中,区域滚动的性能不及页面滚动
swiper 滑块视图容器。一般用于左右滑动或上下滑动,比如banner轮播图。注意滑动切换和滚动的区别,滑动切换是一屏一屏的切换。swiper下的每个swiper-item是一个滑动切换区域,不能停留在2个滑动区域之间
image 图片
video 视频播放组件
camera 页面内嵌的区域相机组件。注意这不是点击后全屏打开的相机
button 按钮
input 单行输入框
navigator 页面跳转

4.vue2写法

这里和vue2写法相同,之前笔记中学习过,可前往uniapp文档查看vue写法或者vue官方文档查看

(1)模板

<template>
	<view>
		<view class="box">当前标题:{{title}}</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				title:"微信小程序"
			};
		}
	}
</script>

<style lang="scss">

</style>

(2)插值语法

{{}}
不能解析标签

(3)指令

条件渲染v-if与v-show
列表渲染v-for
v-html和v-bind
v-on事件
v-bind 简写 :
v-on 简写 @
v-model数据双向绑定

(4)style绑定与绑定class的多种写法

<template>
	<view>
		<view class="box" :style="{background:bgcolor}" @click="clickBg">
			{{random}}
		</view>
		<view class="block" :class="{myactive:state}" @click="clickBlock"></view>
		<view class="block" :class="state?'myactive':''"></view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				bgcolor:"#c00",
				random:0,
				state:false
			};
		},
		methods:{
			clickBg(){
				let color="#"+String(Math.random()).substr(3,6)
				this.bgcolor=color
			},
			clickBlock(){
				this.state=!this.state
			}
		}
	}
</script>

<style lang="scss">
	.box{
		width: 200rpx;
		height: 200rpx;
		background: pink;
	}
	.block{
		width: 300rpx;
		height: 300rpx;
		background: blue;
	}
	.myactive{
		width: 400rpx;
		background: hotpink;
		border-radius: 20rpx;
	}
</style>

(5)计算属性computed的用法

对于任何复杂逻辑,都应当使用计算属性
可以将同一函数定义为一个方法而不是一个计算属性。两种方式的最终结果确实是完全相同的。然而,不同的是计算属性是基于它们的响应式依赖进行缓存的。
只在相关响应式依赖发生改变时它们才会重新求值。这就意味着只要 message 还没有发生改变,多次访问 reversedMessage 计算属性会立即返回之前的计算结果,而不必再次执行函数。

(6)easycom自动导入自定义组件

全局注册 在main.js中注册
局部注册(推荐) 在页面文件里导入。
uni-app提供了一个更简单的方法——easycom。创建一个和pages文件夹同级的components文件夹,在里面创建组件后可在其他任意页面随意使用该组件,无需注册,组件标签名为组件文件名。
父传子 通过子组件绑定属性Prop为同组件传不同的值
props绑定动态值及数据类型默认值

props:{
	//非对象或数组
	key:{
		type:type,
		default:value
	},
	//对象或数组
	key:{
		type:type,
		default(){
			return value
		}
	}
}

子传父 emit子向父组件传值

this.$emit("eventname",value)

native修饰符 当在自定义组件想要使用原生事件时需要使用native修饰符

<myevent @click.native="onClick"></myevent>

.sync修饰符 当一个子组件改变了一个 prop 的值时,这个变化也会同步到父组件中所绑定。 .sync 它会被扩展为一个自动更新父组件属性的 v-on 监听器。

	<!-- 父组件 -->
	<template>
		<view>
			<syncA :title.sync="title"></syncA>
		</view>
	</template>
	<script>
		export default {
			data() {
				return {
					title:"hello vue.js"
				}
			}
		}
	</script>
	<!-- 子组件 -->
	<template>
		<view>
			<view @click="changeTitle">{{title}}</view>
		</view>
	</template>
	<script>
		export default {
			props: {
				title: {
					default: "hello"
				},
			},
			methods:{
				changeTitle(){
					//触发一个更新事件
					this.$emit('update:title',"uni-app")
				}
			}
		}
	</script>

(7)Vue中的生命周期与小程序周期的对比

生命周期中钩子函数决定触发的条件,小程序的生命周期和vue的稍有不同
查看文档

5.uniapi路由与页面跳转的使用方式

点击查看更多

uni.navigateTo 保留当前页面,跳转到应用内的某个页面,使用uni.navigateBack可以返回到原页面。
uni.redirectTo 关闭当前页面,跳转到应用内的某个页面。
uni.reLaunch 关闭所有页面,打开到应用内的某个页面。
uni.switchTab 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。
uni.navigateBack 关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages() 获取当前的页面栈,决定需要返回几层。

6.页面传参

vue 通过this.$route()
uni通用

onLoad(e){
	console.log(e)//1
	console.log(getCurrentPages())//2
}

7.api界面

(1)交互反馈

点击查看更多

uni.showToast 显示消息提示框。
uni.showLoading 显示 loading 提示框, 需主动调用 uni.hideLoading 才能关闭提示框。
uni.showModal 显示模态弹窗,可以只有一个确定按钮,也可以同时有确定和取消按钮。类似于一个API整合了 html 中:alert、confirm。
uni.showActionSheet 从底部向上弹出操作菜单

(2)设置导航条

点击查看更多

uni.setNavigationBarTitle 动态设置当前页面的标题。
uni.setNavigationBarColor 设置页面导航条颜色。如果需要进入页面就设置颜色,请延迟执行,防止被框架内设置颜色逻辑覆盖
uni.showNavigationBarLoading 在当前页面显示导航条加载动画。

(3)设置TabBar

点击查看更多

uni.setTabBarItem 动态设置 tabBar 某一项的内容
uni.setTabBarStyle 动态设置 tabBar 的整体样式
uni.setTabBarBadge 为 tabBar 某一项的右上角添加文本。
uni.showTabBarRedDot 显示 tabBar 某一项的右上角的红点。

8.api网络

点击查看更多

uni.request 发起网络请求。

9.数据缓存

点击查看更多

uni.setStorage 将数据存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个异步接口。
uni.setStorageSync 将 data 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口。
uni.getStorageSync 从本地缓存中同步获取指定 key 对应的内容。
uni.removeStorageSync 从本地缓存中同步移除指定 key。
uni.clearStorageSync() 同步清理本地数据缓存。

三、项目打包

在manifest配置文件中进行打包,选择要发布的类型,配置好相关内容,点击发行即可完成打包
打包

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

uni-app 的相关文章

  • 从 JavaScript 加载图像

    在我的专辑幻灯片放映页面上 我有类似的代码 span style display none img src imageUrl span span show loader span in showImage 我确定图像已加载 因此我显示图像并
  • 如何在 React JS 中根据键创建动态表?

    我正在尝试在 React JS 中创建一个动态表组件 该组件当前只有一个静态标头 其中包括最常见的结果键 有些结果还包含更多信息 例如电话号码 学位 如何根据键 值的存在动态地使用附加列扩展表 我应该与state并在存在时使其可见 或者我应
  • 为什么 Jshint 在此 if 语句中说“变量已定义”?

    我有这个代码 if something is true var someVar true else var someVar false JsHint 表示在 else 语句部分 someVar 已被定义 这是为什么 我该如何解决 Thank
  • 如何使用标准 JavaScript 在 CSS 转换结束后立即重新启动它?

    我构建了一种密码生成器 只要倒计时到期 它就会显示新密码 不幸的是 我只设法弄清楚如何运行我的代码一次 倒计时由一个简单的 CSS 过渡组成 我想保留它 因为它比我的其他尝试平滑得多 其中我尝试使用 JavaScript 重复更新宽度 va
  • 如何从 javascript 错误对象读取错误消息

    有人可以帮我解决以下问题吗 我正在通过 redux 操作进行后调用 如下所示 export const addEmployee firstName surname contactNumber email gt async dispatch
  • Javascript:使用 IIFE 和块语句之间的区别

    IIFE主要用于封装作用域 function let myVar 10 not global 但为什么不直接使用块语句呢 let myVar 10 also not global 除了范围封装之外 进一步使用 IIFE 是否还有其他好处 块
  • CSS 内边框?

    我纯粹用 CSS 创建了左侧的按钮 它是一个div 中的一个div 然而 右侧的三个按钮是background属性于img标签 我这样做是为了按照以下说明模拟翻转效果here http kyleschaeffer com best prac
  • JavaScript 可以检测用户的浏览器是否支持 gzip 吗?

    我可以使用 JavaScript 来检测用户的浏览器是否支持 gzip 压缩内容 客户端 而不是 Node js 或类似内容 我正在尝试支持以下边缘情况 有很多可能的文件可以加载到特定的 Web 应用程序上 最好在应用程序运行时根据需要加载
  • 为动态加载的 HTML 内容触发 Bootstrap JS 行为

    我正在动态加载包含 Bootstrap 标记的 HTML 模板 但是 Bootstrap Javascript 行为不会应用于加载的内容 例如 如果加载的内容包含 Bootstrap 模式的标记 则该模式将无法正确运行 有没有办法可以触发
  • 个人 Tumblr 帖子上的 Javascript

    我知道您可以编辑在 tumblr 博客上呈现所有帖子博客主页的 html AngularJS 但是 有什么办法可以添加自定义到各个帖子 我想在逐个帖子的基础上做一些 javascript 的东西 但似乎无法找到可以编辑代码的位置 或者 如果
  • 如何用 JavaScript 修复图像透视变形和旋转?

    我有一些用手机拍摄的图像 有没有可以拉直纸张照片并将其压平的 JavaScript 库 例如 我想创建一个矩形图像 该图像没有任何失真 换句话说我想知道如何用 JavaScript 修复透视变形和旋转 例如 我发现下面的示例图像来自this
  • 纯 JS 相当于 Jquery eq()

    jquery 的纯等价物是什么eq 例如 我怎样才能实现 class1 class2 eq 0 text 1254 在纯 JavaScript 中 要获取数组中的元素索引 可以使用 在 JavaScript 中 因此 要重现您的代码 您可以
  • 如何将本地文本文件上传到文本区域(网页内)

    我是一名新手程序员 需要一些帮助来弄清楚如何将本地文本文件上传到我正在构建的网站内的文本区域 我非常精通 HTML CSS 对 Javascript JQuery 有相当的了解 而且我刚刚学习 PHP 您能提供的任何帮助我将不胜感激 我有一
  • jquery 中可点击 div 中的按钮

    我有整个 div 您可以单击它来切换该 div 的主要部分 问题是我在该 div 中也有可点击的按钮 当我点击它时 它会执行它应该做的事情 但同时也会切换整个 div 我怎样才能禁用它 Use event stopPropagation 单
  • 使用 JavaScript 防止网页导航离开

    如何使用 JavaScript 防止网页导航离开 Using onunload允许您显示消息 但不会中断导航 因为为时已晚 然而 使用onbeforeunload将中断导航 window onbeforeunload function re
  • 在 javascript 中实现固定位置会导致 Safari 滚动时出现抖动

    固定位置不适用于我的用例 因为它固定在浏览器窗口上 您可能会处于文本在屏幕右侧之外且无法到达的状态 无论如何 我尝试使用绝对定位 然后调整javascript中的 顶部 它在 Firefox 和 Chrome 中运行良好 但在 Safari
  • ES6 静态方法引用 self? [复制]

    这个问题在这里已经有答案了 我有两节课 存储库和用户存储库 我想在 Repository 中定义一个静态方法 该方法在运行时调用 UserRepository 中的静态函数 有什么干净的方法可以做到这一点吗 class Repository
  • Javascript等待/异步执行顺序

    所以我试图把我的头脑集中在 Promise await async 上 我不明白为什么当 go 执行时 带有 finished 的警报会紧随 console log coffee 之后 当所有函数都使用等待 承诺时 为什么它只等待 getC
  • 如何将项目插入到特定索引处的空数组中?

    我想将一个项目插入到空数组的指定索引中 我看到有 Array prototype splice 方法 但是 如果我在空数组上使用 splice 它只会添加项目来结束数组 如下所示 var a a splice 3 0 item 3 cons
  • Safari 扩展将消息发送到特定选项卡

    有没有办法从全局页面发送消息到特定选项卡 我目前正在做的是 在创建选项卡时 注入的脚本会创建一个唯一的 ID 并将包含该编号的消息发送到全局页面 并且全局页面会保存该编号 如果全局页面需要发送一些数据到一个tab 即 tab 3 然后全局页

随机推荐

  • 前端Ajax之请求

  • 网络协议——七层、五层、四层协议概念及功能

    OSI是一个开放性的通信系统互连参考模型 它是一个定义得非常好的协议规范 OSI模型有7层结构 每层都可以有几个子层 OSI的7层从上到下分别是 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 其中高
  • 知云文献翻译打不开_Xtranslator翻译软件:文献、网页、word,所有翻译阅读统统拿下...

    由于知云只支持PDF格式 有人希望翻译阅读英文网页 WORD 软件的chm格式帮助文件等等 还有些人有自己喜欢的PDF阅读器 比如foxit reader等 使用知云则无法使用自己喜欢的PDF阅读器了 还有些高频使用PDF注释功能的人不习惯
  • VS开发Linux程序(VisualGDB)

    点击打开链接 VisualGDB是在vs上开发Linux程序的工具 利用visual studio强大的功能调试Linux程序真的是很惬意的一件事情 VisualGDB支持Linux的原理是 通过ssh连接到Linux系统上通过ssh给li
  • shell脚本进阶1——精读ansible+shell脚本

    文章目录 一 脚本规划思路 二 主控机shell脚本 2 1 脚本输出字体特效 2 2 生成菜单栏对话框 2 3 配置本地yum源仓库 2 4 配置受控机yum源 2 5 关闭防火墙和selinux 2 6 把docker安装包给受控机 2
  • MATLAB安装MinGW编译器

    第一步 打开matlab主页里附加功能的获取附加功能 第二步 搜索MinGW 接着选择第一个选项 第三步 点击下载 将下载的文件放在安装matlab的一级文件夹下 打开matlab找到该文件 双击安装 如果你安装成功 恭喜你 但一般都会出现
  • Okhttp关于 java.lang.NoSuchMethodError: okio.BufferedSource报错

    我们可以从报错的内容来下手 NoSuchMethod 就是说okio并没有其中的方法 我找了很久才恍然大悟 这都说出来了还傻呵呵的找解决办法 我用的okio 1 7 0很明显这个版本早就过时了 当我换成okio1 9 0问题迎刃而解 哎 浪
  • 谈高考志愿填报

    目录 不如先说说我自己 一 选专业还是选学校 二 你想推荐 避雷的专业 三 填报志愿的策略 四 影响专业选择的因素 各省高考成绩已出 又到一年高考季 张雪峰提到 普通家庭不要光谈理想 也要谈落地 志愿怎样填报 选专业还是选学校 什么专业好就
  • 贝叶斯优化

    贝叶斯优化 BO RF贝叶斯优化随机森林多输入单输出回归预测 Matlab完整程序 目录 贝叶斯优化 BO RF贝叶斯优化随机森林多输入单输出回归预测 Matlab完整程序 预测结果 基本介绍 评价指标 程序设计 参考资料 预测结果 基本介
  • eclipse+maven搭建web项目(非常详细)

    一 前言 用maven我们能做什么 有什么好处 用maven 我们可以方便统一的进行jar包管理 jar包版本升级 快速项目构建以及分模块开发等相关功能 maven使用得好 项目开发速度就会成倍的提升 总之 项目越大 越能体现maven的优
  • java获取服务器一些信息的方法(服务器地址/相对路径/端口/项目名字)

    request getServletContext getRealPath 获取项目所在服务器的全路径 如 D Program Files apache tomcat 7 0 25 webapps TestSytem request get
  • 商品期货人数(期货品种数量)

    现在中国有多少万人从事期货投资呢 比投资的股市人数 相差多少呢 目前来说 期货账户大约150万 活跃账户大约90万左右吧 与股票投资相比肯定是小巫见大巫了 股票投资至少是期货投资的数十倍以上 中国炒期货的人数大概多少 现在期货有很多人在炒
  • 实现简单的人脸识别项目

    目录 前言 一 首先 os 文件操作
  • 使用openfeign远程过程调用java.net.sockettimeoutexception: read timed out

    项目场景 做谷粒商城的调用openfeign时报错 问题描述 一直走不下去第二步 一开始以为代码错了 debug是可以调用到那个返回的却有返回值 但是它调用了两次那个方法 因为我方法里面还有远程调用别的方法导致了超时 解决方案 方法一 修改
  • Ubuntu下Linux系统部署fisco时bash操作报错权限不足(permission denied) failed to run command ‘........‘

    Ubuntu下Linux系统部署fisco时bash操作报错权限不足 permission denied failed to run command 例如这里就指的是fisco bcos这个文件权限不足 解决方法 进入该文件目录下 执行ch
  • 3个指标,帮助您衡量数字化转型成效

    当今社会 科技的引领作用十分明显 除了各种新科技 新发明 科技也带动了数字化经济的蓬勃发展 为了更好地支撑业务 赋能业务 很多企业开启了数字化转型之路 这是一个全新的尝试 我们该如何判断企业数字化转型是否成功呢 以下3个指标 可以帮助您了解
  • 基于STM32F103的IIC实验

    实验七 IIC实验 一 实验目的 1 掌握基于固件库进行编程的方法 2 掌握基于IIC的编程方法 二 实验内容 1 实现EEPROM中数据读写并通过串口输出显示 三 预备知识 1 基于STM32固件库进行编程的方法 2 基于STM32的II
  • JUC 并发编程学习

    JUC 并发编程学习笔记 学习过程观看视频 狂神说Java https www bilibili com video BV1B7411L7tE p 13 1 并发编程包 java util concurrent 普通的线程代码 Thread
  • canvas结合background实现水印平铺效果

    canvas结合background实现水印平铺效果 const text1 水印文字1 const text2 水印文字2 let canvas document createElement canvas canvas height ca
  • uni-app

    uni app 一 准备工作 1 新建项目 2 配置浏览器 3 兼容 4 新建页面 二 上手 1 pages json文件的页面配置与全局配置 2 rpx尺寸单位 3 内置组件 4 vue2写法 1 模板 2 插值语法 3 指令 4 sty