无锡企业网站制作报价,高端品牌名称,网页界面设计ppt(完美版)百度文库,七牛云微信打开wordpressuni-app的基本使用
uni-app介绍 官方网页
uni-app 是一个使用 Vue.js 开发所有前端应用的框架#xff0c;开发者编写一套代码#xff0c;可发布到iOS、Android、H5、以及各种小程序#xff08;微信/支付宝/百度/头条/QQ/钉钉#xff09;等多个平台。
即使不跨端#xf…uni-app的基本使用
uni-app介绍 官方网页
uni-app 是一个使用 Vue.js 开发所有前端应用的框架开发者编写一套代码可发布到iOS、Android、H5、以及各种小程序微信/支付宝/百度/头条/QQ/钉钉等多个平台。
即使不跨端uni-app同时也是更好的小程序开发框架。
具有vue和微信小程序的开发经验可快速上手uni-app
为什么要去学习uni-app
相对开发者来说减少了学习成本因为只学会uni-app之后即可开发出iOS、Android、H5、以及各种小程序的应用不需要再去学习开发其他应用的框架相对公司而言也大大减少了开发成本。
环境搭建
安装编辑器HbuilderX 下载地址
HBuilderX是通用的前端开发工具但为uni-app做了特别强化。
下载App开发版可开箱即用
安装微信开发者工具 下载地址
利用HbuilderX初始化项目 点击HbuilderX菜单栏文件项目新建 选择uni-app,填写项目名称项目创建的目录 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8bW1h2Dn-1677136476352)(./images/create.jpg)]
运行项目
在菜单栏中点击运行运行到浏览器选择浏览器即可运行
在微信开发者工具里运行进入hello-uniapp项目点击工具栏的运行 - 运行到小程序模拟器 - 微信开发者工具即可在微信开发者工具里面体验uni-app
在微信开发者工具里运行进入hello-uniapp项目点击工具栏的运行 - 运行到手机或模拟器 - 选择调式的手机
注意
如果是第一次使用需要先配置小程序ide的相关路径才能运行成功微信开发者工具在设置中安全设置服务端口开启
介绍项目目录和文件作用
pages.json 文件用来对 uni-app 进行全局配置决定页面文件的路径、窗口样式、原生的导航栏、底部的原生tabbar 等
manifest.json 文件是应用的配置文件用于指定应用的名称、图标、权限等。
App.vue是我们的跟组件所有页面都是在App.vue下进行切换的是页面入口文件可以调用应用的生命周期函数。
main.js是我们的项目入口文件主要作用是初始化vue实例并使用需要的插件。
uni.scss文件的用途是为了方便整体控制应用的风格。比如按钮颜色、边框风格uni.scss文件里预置了一批scss变量预置。
unpackage就是打包目录在这里有各个平台的打包文件
pages所有的页面存放目录
static静态资源目录例如图片等
components组件存放目录
为了实现多端兼容综合考虑编译速度、运行性能等因素uni-app 约定了如下开发规范
页面文件遵循 Vue 单文件组件 (SFC) 规范组件标签靠近小程序规范详见uni-app 组件规范接口能力JS API靠近微信小程序规范但需将前缀 wx 替换为 uni详见uni-app接口规范数据绑定及事件处理同 Vue.js 规范同时补充了App及页面的生命周期为兼容多端运行建议使用flex布局进行开发
全局配置和页面配置
通过globalStyle进行全局配置
用于设置应用的状态栏、导航条、标题、窗口背景色等。详细文档
属性类型默认值描述navigationBarBackgroundColorHexColor#F7F7F7导航栏背景颜色同状态栏背景色navigationBarTextStyleStringwhite导航栏标题颜色及状态栏前景颜色仅支持 black/whitenavigationBarTitleTextString导航栏标题文字内容backgroundColorHexColor#ffffff窗口的背景色backgroundTextStyleStringdark下拉 loading 的样式仅支持 dark / lightenablePullDownRefreshBooleanfalse是否开启下拉刷新详见页面生命周期。onReachBottomDistanceNumber50页面上拉触底事件触发时距页面底部距离单位只支持px详见页面生命周期
创建新的message页面
右键pages新建message目录在message目录下右键新建.vue文件,并选择基本模板
templateview这是信息页面/view
/templatescript
/scriptstyle
/style通过pages来配置页面
属性类型默认值描述pathString配置页面路径styleObject配置页面窗口表现配置项参考 pageStyle
pages数组数组中第一项表示应用启动页
pages: [ 、{path:pages/message/message},{path: pages/index/index,style: {navigationBarTitleText: uni-app}}]通过style修改页面的标题和导航栏背景色并且设置h5下拉刷新的特有样式
pages: [ //pages数组中第一项表示应用启动页参考https://uniapp.dcloud.io/collocation/pages{path:pages/message/message,style: {navigationBarBackgroundColor: #007AFF,navigationBarTextStyle: white,enablePullDownRefresh: true,disableScroll: true,h5: {pullToRefresh: {color: #007AFF}}}}]配置tabbar
如果应用是一个多 tab 应用可以通过 tabBar 配置项指定 tab 栏的表现以及 tab 切换时显示的对应页。
Tips
当设置 position 为 top 时将不会显示 icontabBar 中的 list 是一个数组只能配置最少2个、最多5个 tabtab 按数组的顺序排序。
属性说明
属性类型必填默认值描述平台差异说明colorHexColor是tab 上的文字默认颜色selectedColorHexColor是tab 上的文字选中时的颜色backgroundColorHexColor是tab 的背景色borderStyleString否blacktabbar 上边框的颜色仅支持 black/whiteApp 2.3.4 支持其他颜色值listArray是tab 的列表详见 list 属性说明最少2个、最多5个 tabpositionString否bottom可选值 bottom、toptop 值仅微信小程序支持
其中 list 接收一个数组数组中的每个项都是一个对象其属性值如下
属性类型必填说明pagePathString是页面路径必须在 pages 中先定义textString是tab 上按钮文字在 5APP 和 H5 平台为非必填。例如中间可放一个没有文字的号图标iconPathString否图片路径icon 大小限制为40kb建议尺寸为 81px * 81px当 postion 为 top 时此参数无效不支持网络图片不支持字体图标selectedIconPathString否选中时的图片路径icon 大小限制为40kb建议尺寸为 81px * 81px 当 postion 为 top 时此参数无效
案例代码
tabBar: {list: [{text: 首页,pagePath:pages/index/index,iconPath:static/tabs/home.png,selectedIconPath:static/tabs/home-active.png},{text: 信息,pagePath:pages/message/message,iconPath:static/tabs/message.png,selectedIconPath:static/tabs/message-active.png},{text: 我们,pagePath:pages/contact/contact,iconPath:static/tabs/contact.png,selectedIconPath:static/tabs/contact-active.png}]}condition启动模式配置
启动模式配置仅开发期间生效用于模拟直达页面的场景如小程序转发后用户点击所打开的页面。
属性说明
属性类型是否必填描述currentNumber是当前激活的模式list节点的索引值listArray是启动模式列表
list说明
属性类型是否必填描述nameString是启动模式名称pathString是启动页面路径queryString否启动参数可在页面的 onLoad 函数里获得
组件的基本使用
uni-app提供了丰富的基础组件给开发者开发者可以像搭积木一样组合各种组件拼接称自己的应用
uni-app中的组件就像 HTML 中的 div 、p、span 等标签的作用一样用于搭建页面的基础结构
text文本组件的用法
001 - text 组件的属性
属性类型默认值必填说明selectablebooleanfalse否文本是否可选spacestring.否显示连续空格可选参数ensp、emsp、nbspdecodebooleanfalse否是否解码
text 组件相当于行内标签、在同一行显示除了文本节点以外的其他节点都无法长按选中
002 - 代码案例
view!-- 长按文本是否可选 --text selectabletrue来了老弟/text
/viewview!-- 显示连续空格的方式 --viewtext spaceensp来了 老弟/text/viewviewtext spaceemsp来了 老弟/text/viewviewtext spacenbsp来了 老弟/text/view
/viewviewtextskyblue/text
/viewview!-- 是否解码 --text decodetruenbsp; lt; gt; amp; apos; ensp; emsp;/text
/viewview视图容器组件的用法 View 视图容器 类似于 HTML 中的 div 001 - 组件的属性
view
002 - 代码案例
view classbox2 hover-classbox2_activeview classbox1 hover-classactive hover-stop-propagation :hover-start-time2000 :hover-stay-time2000/view
/viewbutton按钮组件的用法
001 - 组件的属性
属性名类型默认值说明sizeStringdefault按钮的大小typeStringdefault按钮的样式类型plainBooleanfalse按钮是否镂空背景色透明disabledBooleanfalse是否按钮loadingBooleanfalse名称是否带 loading t图标
button 组件默认独占一行设置 size 为 mini 时可以在一行显示多个
002 - 案例代码
button sizemini typeprimary前端/buttonbutton sizemini typedefault disabledtrue前端/buttonbutton sizemini typewarn loadingtrue前端/buttonimage组件的使用
image
图片。
属性名类型默认值说明平台差异说明srcString图片资源地址modeString‘scaleToFill’图片裁剪、缩放的模式
Tips
image 组件默认宽度 300px、高度 225pxsrc 仅支持相对路径、绝对路径支持 base64 码页面结构复杂css样式太多的情况使用 image 可能导致样式生效较慢出现 “闪一下” 的情况此时设置 image{will-change: transform} ,可优化此问题。
uni-app中的样式 rpx 即响应式px一种根据屏幕宽度自适应的动态单位。以750宽的屏幕为基准750rpx恰好为屏幕宽度。屏幕变宽rpx 实际显示效果会等比放大。 使用import语句可以导入外联样式表import后跟需要导入的外联样式表的相对路径用;表示语句结束 支持基本常用的选择器class、id、element等 在 uni-app 中不能使用 * 选择器。 page 相当于 body 节点 定义在 App.vue 中的样式为全局样式作用于每一个页面。在 pages 目录下 的 vue 文件中定义的样式为局部样式只作用在对应的页面并会覆盖 App.vue 中相同的选择器。 uni-app 支持使用字体图标使用方式与普通 web 项目相同需要注意以下几点 字体文件小于 40kbuni-app 会自动将其转化为 base64 格式 字体文件大于等于 40kb 需开发者自己转换否则使用将不生效 字体文件的引用路径推荐使用以 ~ 开头的绝对路径。 font-face {font-family: test1-icon;src: url(~/static/iconfont.ttf);}如何使用scss或者less
uni-app中的数据绑定
在页面中需要定义数据和我们之前的vue一摸一样直接在data中定义数据即可
export default {data () {return {msg: hello-uni}}
}插值表达式的使用 利用插值表达式渲染基本数据 view{{msg}}/view在插值表达式中使用三元运算 view{{ flag ? 我是真的:我是假的 }}/view基本运算 view{{11}}/viewv-bind动态绑定属性
在data中定义了一张图片我们希望把这张图片渲染到页面上
export default {data () {return {img: http://destiny001.gitee.io/image/monkey_02.jpg}}
}利用v-bind进行渲染
image v-bind:srcimg/image还可以缩写成:
image :srcimg/imagev-for的使用
data中定以一个数组最终将数组渲染到页面上
data () {return {arr: [{ name: 刘能, age: 29 },{ name: 赵四, age: 39 },{ name: 宋小宝, age: 49 },{ name: 小沈阳, age: 59 }]}
}利用v-for进行循环
view v-for(item,i) in arr :keyi名字{{item.name}}---年龄{{item.age}}/viewuni中的事件
事件绑定
在uni中事件绑定和vue中是一样的通过v-on进行事件的绑定也可以简写为
button clicktapHandle点我啊/button事件函数定义在methods中
methods: {tapHandle () {console.log(真的点我了)}
}事件传参 默认如果没有传递参数事件函数第一个形参为事件对象 // template
button clicktapHandle点我啊/button
// script
methods: {tapHandle (e) {console.log(e)}
}如果给事件函数传递参数了则对应的事件函数形参接收的则是传递过来的数据 // template
button clicktapHandle(1)点我啊/button
// script
methods: {tapHandle (num) {console.log(num)}
}如果获取事件对象也想传递参数 // template
button clicktapHandle(1,$event)点我啊/button
// script
methods: {tapHandle (num,e) {console.log(num,e)}
}uni的生命周期
应用的生命周期
生命周期的概念一个对象从创建、运行、销毁的整个过程被成为生命周期。
生命周期函数在生命周期中每个阶段会伴随着每一个函数的触发这些函数被称为生命周期函数
uni-app 支持如下应用生命周期函数
函数名说明onLaunch当uni-app 初始化完成时触发全局只触发一次onShow当 uni-app 启动或从后台进入前台显示onHide当 uni-app 从前台进入后台onError当 uni-app 报错时触发
页面的生命周期
uni-app 支持如下页面生命周期函数
函数名说明平台差异说明最低版本onLoad监听页面加载其参数为上个页面传递的数据参数类型为Object用于页面传参参考示例onShow监听页面显示。页面每次出现在屏幕上都触发包括从下级页面点返回露出当前页面onReady监听页面初次渲染完成。onHide监听页面隐藏onUnload监听页面卸载
下拉刷新
开启下拉刷新
在uni-app中有两种方式开启下拉刷新
需要在 pages.json 里找到的当前页面的pages节点并在 style 选项中开启 enablePullDownRefresh通过调用uni.startPullDownRefresh方法来开启下拉刷新
通过配置文件开启
创建list页面进行演示
templateview杭州学科view v-for(item,index) in arr :keyindex{{item}}/view/view
/templatescriptexport default {data () {return {arr: [前端,java,ui,大数据]}}}
/scriptstyle
/style通过pages.json文件中找到当前页面的pages节点并在 style 选项中开启 enablePullDownRefresh
{path:pages/list/list,style:{enablePullDownRefresh: true}
}通过API开启
api文档
uni.startPullDownRefresh()监听下拉刷新
通过onPullDownRefresh可以监听到下拉刷新的动作
export default {data () {return {arr: [前端,java,ui,大数据]}},methods: {startPull () {uni.startPullDownRefresh()}},onPullDownRefresh () {console.log(触发下拉刷新了)}
}关闭下拉刷新
uni.stopPullDownRefresh()
停止当前页面下拉刷新。
案例演示
templateviewbutton typeprimary clickstartPull开启下拉刷新/button杭州学科view v-for(item,index) in arr :keyindex{{item}}/view/view
/template
scriptexport default {data () {return {arr: [前端,java,ui,大数据]}},methods: {startPull () {uni.startPullDownRefresh()}},onPullDownRefresh () {this.arr []setTimeout(() {this.arr [前端,java,ui,大数据]uni.stopPullDownRefresh()}, 1000);}}
/script上拉加载
通过在pages.json文件中找到当前页面的pages节点下style中配置onReachBottomDistance可以设置距离底部开启加载的距离默认为50px
通过onReachBottom监听到触底的行为
templateviewbutton typeprimary clickstartPull开启下拉刷新/button杭州学科view v-for(item,index) in arr :keyindex{{item}}/view/view
/template
scriptexport default {data () {return {arr: [前端,java,ui,大数据,前端,java,ui,大数据]}},onReachBottom () {console.log(触底了)}}
/scriptstyleview{height: 100px;line-height: 100px;}
/style网络请求
在uni中可以调用uni.request方法进行请求网络请求
需要注意的是在小程序中网络相关的 API 在使用前需要配置域名白名单。
发送get请求
templateviewbutton clicksendGet发送请求/button/view
/template
scriptexport default {methods: {sendGet () {uni.request({url: http://localhost:8082/api/getlunbo,success(res) {console.log(res)}})}}}
/script发送post请求
数据缓存
uni.setStorage
官方文档
将数据存储在本地缓存中指定的 key 中会覆盖掉原来该 key 对应的内容这是一个异步接口。
代码演示
templateviewbutton typeprimary clicksetStor存储数据/button/view
/templatescriptexport default {methods: {setStor () {uni.setStorage({key: id,data: 100,success () {console.log(存储成功)}})}}}
/scriptstyle
/styleuni.setStorageSync
将 data 存储在本地缓存中指定的 key 中会覆盖掉原来该 key 对应的内容这是一个同步接口。
代码演示
templateviewbutton typeprimary clicksetStor存储数据/button/view
/templatescriptexport default {methods: {setStor () {uni.setStorageSync(id,100)}}}
/scriptstyle
/styleuni.getStorage
从本地缓存中异步获取指定 key 对应的内容。
代码演示
templateviewbutton typeprimary clickgetStorage获取数据/button/view
/template
scriptexport default {data () {return {id: }},methods: {getStorage () {uni.getStorage({key: id,success: res{this.id res.data}})}}}
/scriptuni.getStorageSync
从本地缓存中同步获取指定 key 对应的内容。
代码演示
templateviewbutton typeprimary clickgetStorage获取数据/button/view
/template
scriptexport default {methods: {getStorage () {const id uni.getStorageSync(id)console.log(id)}}}
/scriptuni.removeStorage
从本地缓存中异步移除指定 key。
代码演示
templateviewbutton typeprimary clickremoveStorage删除数据/button/view
/template
scriptexport default {methods: {removeStorage () {uni.removeStorage({key: id,success: function () {console.log(删除成功)}})}}}
/scriptuni.removeStorageSync
从本地缓存中同步移除指定 key。
代码演示
templateviewbutton typeprimary clickremoveStorage删除数据/button/view
/template
scriptexport default {methods: {removeStorage () {uni.removeStorageSync(id)}}}
/script上传图片、预览图片
上传图片
uni.chooseImage方法从本地相册选择图片或使用相机拍照。
案例代码
templateviewbutton clickchooseImg typeprimary上传图片/buttonviewimage v-foritem in imgArr :srcitem :keyindex/image/view/view
/templatescriptexport default {data () {return {imgArr: []}},methods: {chooseImg () {uni.chooseImage({count: 9,success: res{this.imgArr res.tempFilePaths}})}}}
/script预览图片
结构
viewimage v-foritem in imgArr :srcitem clickpreviewImg(item) :keyitem/image
/view预览图片的方法
previewImg (current) {uni.previewImage({urls: this.imgArr,current})
}条件注释实现跨段兼容
条件编译是用特殊的注释作为标记在编译时根据这些特殊的注释将注释里面的代码编译到不同平台。
**写法**以 #ifdef 加平台标识 开头以 #endif 结尾。
平台标识
值平台参考文档APP-PLUS5AppHTML5 规范H5H5MP-WEIXIN微信小程序微信小程序MP-ALIPAY支付宝小程序支付宝小程序MP-BAIDU百度小程序百度小程序MP-TOUTIAO头条小程序头条小程序MP-QQQQ小程序目前仅cli版支持MP微信小程序/支付宝小程序/百度小程序/头条小程序/QQ小程序
组件的条件注释
代码演示
!-- #ifdef H5 --
viewh5页面会显示
/view
!-- #endif --
!-- #ifdef MP-WEIXIN --
view微信小程序会显示
/view
!-- #endif --
!-- #ifdef APP-PLUS --
viewapp会显示
/view
!-- #endif --api的条件注释
代码演示
onLoad () {//#ifdef MP-WEIXINconsole.log(微信小程序)//#endif//#ifdef H5console.log(h5页面)//#endif
}样式的条件注释
代码演示
/* #ifdef H5 */
view{height: 100px;line-height: 100px;background: red;
}
/* #endif */
/* #ifdef MP-WEIXIN */
view{height: 100px;line-height: 100px;background: green;
}
/* #endif */uni中的导航跳转
利用navigator进行跳转
navigator详细文档文档地址
跳转到普通页面
navigator url/pages/about/about hover-classnavigator-hoverbutton typedefault跳转到关于页面/button
/navigator跳转到tabbar页面
navigator url/pages/message/message open-typeswitchTabbutton typedefault跳转到message页面/button
/navigator利用编程式导航进行跳转
导航跳转文档
利用navigateTo进行导航跳转
保留当前页面跳转到应用内的某个页面使用uni.navigateBack可以返回到原页面。
button typeprimary clickgoAbout跳转到关于页面/button通过navigateTo方法进行跳转到普通页面
goAbout () {uni.navigateTo({url: /pages/about/about,})
}通过switchTab跳转到tabbar页面
跳转到tabbar页面
button typeprimary clickgoMessage跳转到message页面/button通过switchTab方法进行跳转
goMessage () {uni.switchTab({url: /pages/message/message})
}redirectTo进行跳转
关闭当前页面跳转到应用内的某个页面。
!-- template --
button typeprimary clickgoMessage跳转到message页面/button
!-- js --
goMessage () {uni.switchTab({url: /pages/message/message})
}通过onUnload测试当前组件确实卸载
onUnload () {console.log(组件卸载了)
}导航跳转传递参数
在导航进行跳转到下一个页面的同时可以给下一个页面传递相应的参数接收参数的页面可以通过onLoad生命周期进行接收
传递参数的页面
goAbout () {uni.navigateTo({url: /pages/about/about?id80,});
}接收参数的页面
scriptexport default {onLoad (options) {console.log(options)}}
/scriptuni-app中组件的创建
在uni-app中可以通过创建一个后缀名为vue的文件即创建一个组件成功其他组件可以将该组件通过impot的方式导入在通过components进行注册即可 创建login组件在component中创建login目录然后新建login.vue文件 templateview这是一个自定义组件/view
/templatescript
/scriptstyle
/style在其他组件中导入该组件并注册 import login from /components/test/test.vue注册组件 components: {test}使用组件 test/test组件的生命周期函数
beforeCreate在实例初始化之后被调用。详见created在实例创建完成后被立即调用。详见beforeMount在挂载开始之前被调用。详见mounted挂载到实例上去之后调用。详见 注意此处并不能确定子组件被全部挂载如果需要子组件完全挂载之后在执行操作可以使用$nextTickVue官方文档beforeUpdate数据更新时调用发生在虚拟 DOM 打补丁之前。详见仅H5平台支持updated由于数据更改导致的虚拟 DOM 重新渲染和打补丁在这之后会调用该钩子。详见仅H5平台支持beforeDestroy实例销毁之前调用。在这一步实例仍然完全可用。详见destroyedVue 实例销毁后调用。调用后Vue 实例指示的所有东西都会解绑定所有的事件监听器会被移除所有的子实例也会被销毁。详见
组件的通讯
父组件给子组件传值
通过props来接受外界传递到组件内部的值
templateview这是一个自定义组件 {{msg}}/view
/templatescriptexport default {props: [msg]}
/scriptstyle
/style其他组件在使用login组件的时候传递值
templateviewtest :msgmsg/test/view
/templatescriptimport test from /components/test/test.vueexport default {data () {return {msg: hello}},components: {test}}
/script子组件给父组件传值
通过$emit触发事件进行传递参数
templateview这是一个自定义组件 {{msg}}button typeprimary clicksendMsg给父组件传值/button/view
/templatescriptexport default {data () {return {status: 打篮球}},props: {msg: {type: String,value: }},methods: {sendMsg () {this.$emit(myEvent,this.status)}}}
/script父组件定义自定义事件并接收参数
templateviewtest :msgmsg myEventgetMsg/test/view
/template
scriptimport test from /components/test/test.vueexport default {data () {return {msg: hello}},methods: {getMsg (res) {console.log(res)}},components: {test}}
/script兄弟组件通讯
uni-ui的使用
uni-ui文档
1、进入Grid宫格组件
2、使用HBuilderX导入该组件
3、导入该组件
import uniGrid from /components/uni-grid/uni-grid.vue
import uniGridItem from /components/uni-grid-item/uni-grid-item.vue4、注册组件
components: {uniGrid,uniGridItem}5、使用组件
uni-grid :column3uni-grid-itemtext classtext文本/text/uni-grid-itemuni-grid-itemtext classtext文本/text/uni-grid-itemuni-grid-itemtext classtext文本/text/uni-grid-item
/uni-grid摘自B站黑马课堂uni-app课程