uni-app

uni-app

  • 一、准备工作
    • 1.新建项目
    • 2.配置浏览器
    • 3.兼容
    • 4.新建页面
  • 二、上手
    • 1.pages.json文件的页面配置与全局配置
    • 2.rpx尺寸单位
    • 3.内置组件
    • 4.vue2写法
      • (1)模板
      • (2)插值语法
      • (3)指令
      • (4)style绑定与绑定class的多种写法
      • (5)计算属性computed的用法
      • (6)easycom自动导入自定义组件
      • (7)Vue中的生命周期与小程序周期的对比
    • 5.uniapi路由与页面跳转的使用方式
    • 6.页面传参
    • 7.api界面
      • (1)交互反馈
      • (2)设置导航条
      • (3)设置TabBar
    • 8.api网络
    • 9.数据缓存
  • 三、项目打包

一、准备工作

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)//1console.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配置文件中进行打包,选择要发布的类型,配置好相关内容,点击发行即可完成打包
打包

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/13239.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

猿人学web刷题1

1.第一题 js混淆源码乱码 - 猿人学 : url 时间戳加密 右键遇到反调试&#xff0c;参考前面的文章 过反调试 2.ast解混淆 首页1.js 拿到 function oo0O0, 在<script>标签里面, 无法调试&#xff0c;分析自己提取出来&#xff0c;或则hook替换 加密逻辑存在于window.a中&a…

分布式概念

分布式系统中的相关概念 1 大型互联网项目架构目标 2 集群和分布式 替换模块 3 架构演进

代码随想录day11

20. 有效的括号 思路&#xff1a;这里用模拟栈的方法会更好理解&#xff0c;也就是我们每次遇到朝左方向的三种类型的时候&#xff0c;就加入相反方向的右括号到result栈中。由于栈是一个先进后出的方式&#xff0c;所以我们会有一个判断stack当前为不为空&#xff0c;和stack[…

大型语言模型与知识图谱协同研究综述:两大技术优势互补

机器之心报道 编辑&#xff1a;杜伟 多图综述理清当前研究现状&#xff0c;这篇 29 页的论文值得一读。 大型语言模型&#xff08;LLM&#xff09;已经很强了&#xff0c;但还可以更强。通过结合知识图谱&#xff0c;LLM 有望解决缺乏事实知识、幻觉和可解释性等诸多问题&am…

JVM源码剖析之SymbolTable和StringTable

很多读者在观看JVM相关的书籍时会看到SymbolTable和StringTable&#xff0c;书中的三言二语介绍的不是很清楚&#xff0c;并且读者的水平有限&#xff0c;导致无法理解SymbolTable和StringTable。所以特意写此篇图文并茂的文章来彻底理解SymbolTable和StringTable这两张表。 版…

mac电脑上,webm格式怎么转换成mp4?

mac电脑上&#xff0c;webm格式怎么转换成mp4&#xff1f;webm格式的视频也是最近几年也越来越多的&#xff0c;小编最近就不止一次的下载到过webm格式的视频&#xff0c;很多小伙伴肯定对它还并不是很了解&#xff0c;webm是由谷歌公司所提出以及开发出来的视频文件格式&#…

debian to go

可以使用虚拟机操作&#xff0c;在运行镜像到安装步骤时选择 u盘 不需要手动分 /boot 分区之类的&#xff0c;“Automaction”自动分区就行&#xff0c;全安装到根目录。boot load 安装到 /dev/sdb&#xff0c;也就是硬盘本身 推荐使用gpt分区表&#xff0c;建议拿不用的盘练…

MySQL表单查询

根据题目完成下列要求 CREATE TABLE emp ( empno int(4) NOT NULL, ename varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, job varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, mgr int(4) NULL DEFAULT …

UML类图的6种关系

目录 一、UML类图的6种关系&#xff08;依赖关系由弱到强&#xff09;&#xff1a; 二、6种关系归纳总结 2.1 第一种归纳方式&#xff1a;先分组&#xff0c;再分组&#xff08;由大到小&#xff0c;由宏观到微观&#xff09; 2.2 第二种归纳方式&#xff1a;先聚合&#x…

计算机毕业论文内容参考|基于微信小程序和云开发的小区垃圾分类知识手册平台的设计与实现

文章目录 导文摘要前言绪论1课题背景2国内外现状与趋势相关技术与方法介绍系统分析总结与展望1本文总结2后续工作展望导文 计算机毕业论文内容参考|基于微信小程序和云开发的小区垃圾分类知识手册平台的设计与实现 摘要 本文介绍了基于微信小程序和云开发的小区垃圾分类知识手…

网络编程1—— IP地址 + 端口号 +TCP/IP协议 + 协议分层的封装与应用

文章目录 前言一、网络发展各阶段二、网络通信的三大要素1.IP地址2.端口号3.网络协议 三、TCP/IP五层网络模型各层级的用处网络设备所在分层 四、封装和分用封装分用网络传输的实际情况 总结 前言 本人是一个刚刚上路的IT新兵,菜鸟!分享一点自己的见解,如果有错误的地方欢迎各…

Flutter流式组件Wrap

Wrap组件类似Row组件都是横向依次排列&#xff0c;唯一的区别就是Wrap能自动换行。 主要代码&#xff1a; Wrap(spacing: 10, //左右间距runSpacing: 10, //上下间距// direction: Axis.vertical,//主轴的方向&#xff0c;默认横向// alignment: WrapAlignment.spaceBetween, …