admin 管理员组

文章数量: 887017

首先uniapp跟vue是比较像的,有vue基础的同学上手比较快 但是uniapp里面的api属性和方法是真的多,一时半会儿记不住  以下是我从项目搭建到学习完成的一些记录

我自己的理解,首先uniapp是一个使用vue开发所以前端应用的框架,可以做H5,也可以做移动端小程序的一款框架 正所谓 一套代码,多端报错

1.下载HBuilderX 直接去官网下载就行 我下载的是Win正式版,不太清楚跟Alpha版本有什么区别,下载完成之后开箱即用,我最近在学习微信小程序端的开发,其他端口的不太了解

以下以微信小程序开发为例

首先开发微信小程序 需要先注册一个微信小程序 然后在小程序的开发设置中点击--开发设置--,在开发者ID中会显示你的AppID 然后把他复制下来就可以关掉了,然后打开Hbuilder创建一个项目,找到manifest.json里面的微信小程序 把AppID粘贴进去就行了 这样就能在运行中打开微信小程序的开发了

然后就开始配置pages.json文件 很多东西都需要放到pages.json当中

"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
			//第一个应用启动页
            {
			"path": "pages/index/index",
            //style用来配置该启动页的样式
			"style": {
				"navigationBarTitleText": "ababab",
				"navigationBarBackgroundColor": "#007AFF"
			}
			},
            //第二个应用的启动页
			{
				"path": "pages/detail/detail"
			}

pages 是显示应用的启动页的 每个启动页都需要放到pages.json里面的pages中进行配置,主要是路径,还有一些样式

也可以配置在全局中

// 全局的配置文件
	"globalStyle": {
		// 文字颜色 只支持黑色和白色
		"navigationBarTextStyle": "black",
		// 
		"navigationBarTitleText": "babababa",
		// 设置导航栏的背景颜色
		"navigationBarBackgroundColor": "#7FFF00",
		"backgroundColor": "#F8F8F8",
		// 是否开启下拉
		"enablePullDownRefresh": true
	},

还可以通过tabbar来配置tab栏 通过list属性来添加tab栏的个数 2-5个只能是,然后默认的是在底下,可以显示图标和文字,也可以把tab栏放到上面,但是放到上面就只能显示文字,不能显示图标

"tabBar": {
		// tabbar中 未选中的文字颜色
		"color": "#A0522D",
		// 选中的颜色值
		"selectedColor": "#012345",
		// tabbar的背景颜色
		"backgroundColor": "#fff",
		// 设置tabbar上边框的颜色 仅支持black/white
		"borderStyle": "black",
		"list": [
			{
				"text": "首页",
				"pagePath": "pages/index/index",
				"iconPath": "static/logo.png",
				"selectedIconPath": "static/logo.png"
			},
			{
				"text": "信息",
				"pagePath": "pages/message/message",
				"iconPath": "static/logo.png",
				"selectedIconPath": "static/logo.png"
			},
			{
				"text": "我们",
				"pagePath": "pages/contact/contact",
				"iconPath": "static/logo.png",
				"selectedIconPath": "static/logo.png"
			}
		]
	},

 1.uniapp中的样式
 1.rpx即为响应式的样式,是一种根据屏幕宽度自适应的动态单位,以750宽为屏幕的精准值
 750rpx恰好为屏幕的宽度
 2.可以使用@import 用于导入外联样式表
 3.定义在App.vue中的样式为全局样式,作用于每一个页面,在pages目录下的vue文件中定义的样式为局部样式,之作用在对应的页面,并且会覆盖全局样式
 4.uniapp使用字体图标
    1.字体文字小于40kb的 uniapp会自己转换
    2.字体文字大于等于40kb的需要自己引入
    6.引用路径用 ~@开头来引入

2.基本的数据绑定
    跟vue中的数据绑定一样 通过v-bind来绑定数据 v-model还没用到 应该也能用

3.uniapp 中的生命周期
    定义:一个对象从创建到销毁的一个过程
    uniapp应用的生命周期 onLaunch 初始化完成时触发 只会出发一次
                        onShow 当启动uniapp 页面显示出来了就触发
                        onHide 页面隐藏起来就触发
                        onError 报错的时候触发
            应用的生命周期函数应该定义在App当中
            
    页面的生命周期 onLoad 监听页面加载,其参数为上个页面传递的参数 参数类型为Object,
                  能拿到上一个页面给下一个页面传递的参数
                  onshow 监听页面显示,页面每次出现的时候就会触发
                  onReady 监听页面初次渲染完成
                  onHide 监听页面隐藏 
                  onUnload 监听页面卸载‘ 不咋用到

这些生命周期跟Vue的生命周期很像

export default {
		data() {
			return {
				title: 'Hello'
			}
		},
		onLoad(options) {
			console.log('页面加载了,会触发一次' , options)
		},
		onShow() {
			console.log('页面显示了');
		},
		onReady() {
			console.log('页面初次渲染完成了,只会触发一次');
		},

就直接用就行,然后不同的生命周期监听不同的事件

 下拉刷新
 1.在全局中配置"enablePullDownRefresh": true
 2.在局部页面中定义 onPullDownRefresh处理函数 和(noLoad等生命周期函数同级),监听该页面用户的下拉刷新事件
 可以在pages.json的style中来配置 enablePullDownRefresh = true
 
 可以通过配置文件的方式来开启下拉刷新 

第一种方法配置的下拉刷新是局部刷新 就你想让谁有下拉刷新的功能你就去pages.json中找到响应的pages选项,在他的style中配置enablePullDownRefresh:true 就可以实现下拉刷新了

然后可以去相应的页面中通过onPullDownRefresh()方法去监听事件

也可以在全局的globalStyle中去配置 这样就都可以实现下拉刷新了

 第一种方式:在
    "style":{
        "enablePullDownRefresh" : true
    }
    
    然后在相对应的页面中去监听这个下拉刷新 通过
    onPullDownRefresh(){
        console.log('监听到下拉刷新')
        <!-- 关闭下拉刷新 调用以下方法 -->
        uni.stopPullDownRefresh()
    }

第二种方式:
    直接通过调用uni.startPullDownRefresh()方法来开启下拉刷新 通过绑定事件调用API来完成下拉刷新也可以

    <button @click='pullDown'></button>
    
    methods:{
        pullDown(){
            uni.startPullDownRefresh()
        }
    }

## onReadBottom 
    页面触底,监听页面滚动到底部的事件,常用于拉取下一页的数据

onReachBottom(){
    console.log('页面触底了')
    //触底的时候可以处理一些请求 比如说触底时增加跳转到下一页
    this.pageindex++
    //然后调用请求
    this.getGoodsList()
}

## uniapp发起网络请求
    可以通过uni.request方法来发起网络请求
    需要注意的是,在小程序中网络相关的API在使用前需要配置域名的白名单
 

   <button @click='get'>点击发送请求</button>
    
    methods:{
        get(){
            uni.request({
                url:'http://www.baidu',
                method:'GET',
                <!-- 配置项success时 收到开发者服务成功返回的回调函数-->
                success(res){
                    console.log(res)
                }
            })
        }
    }

## 数据缓存
    <!-- 这些都是异步接口 -->
    设置缓存 uni.setStorage() 将数据存储到本地缓存指定的key中,会覆盖掉原来的key对应的内容 是一个异步的接口
    获取数据 uni.getStorage()
    移除数据 uni.removeStorage()
    <!-- 同步接口 -->
    设置数据 uni.setStorageSync('id',80)

## 如何上传图片和预览图片
    uni.chooseImage(object)
    从本地相册选择图片或者使用相机拍照
  

 <button @click='chooseImg'>点击上传图片</button>
    
    methods:{
        chooseImg(){
            uni.chooseImg({
                <!-- 最多上传4张图片 -->
                count:4,
                <!-- 输出上传成功的回调函数 -->
                success(res){
                    console.log(res)
                }
            })
        }
    }
    预览图片 uni.preivewImage() aip
methods:{
        //选择图片
			chooseImg(){
				// uni.chooseImage({
				// })
				// console.log('上传图片')
				uni.chooseImage({
					// 最多上传图片的数量
					count:5,
					// 打印成功的回调
					success:res=> {
						console.log(res)
						this.image = res.tempFilePaths
					}
					
				})
			},
        //预览图片
			previewImg(current){
				// 获取当前图片的路径
				console.log(current)
				// 预览图片
				uni.previewImage({
					current,
                    //选择图片的地址
					urls:this.image,
					// loop开启轮播图循环
					loop:true,
					
				})
			}
		},

 ## 条件编译
    做跨端兼容的
    条件编译时用特殊工艺的注释作为标记,在编译时根据这些特殊的注释,将注释里面的代码编译到不同的平台
    写法:以 #ifdef加平台标识开头 以#endif结尾
    例如 #ifdef H5
            console.log('只在H5页面中显示')
        #endif

        <!-- #ifdef H5 -->
		<view>我希望只在h5页面中看见</view>
		<!-- #endif -->
		<!-- #ifdef MP-WEIXIN -->
		<view>我希望只在微信小程序页面中看见</view>
		<!-- #endif -->

## 导航跳转
  

  声明式跳转
        <navigator open-type='' url='跳转地址'>点击跳转</navigator>
    编程式跳转
    在button里面定义一个方法
        用 uni.navigateTo({
            <!-- 跳转的地址 -->
            url:''
        })
        
        <!-- 跳转到tabbar页面需要另一个api -->
        <!-- 跳转到tabbar页面 并且关闭所有的非tabber页面 -->
        uni.switchTab({
            url:''
        })
        
        <!-- 跳转到详情页并且关闭当前页 -->
        uni.redirectTo({
            url:''
        })


## 在uniapp中创建一个组件 
    在uniapp中创建一个组件 后缀名为Vue的文件,即创建一个组件成功,其他组件可以将该组件通过import的方式导入
    
    然后去需要调用的地方在通过components进行注册即可

## 组件之间的通讯
    父给子传值 通过props的方式去传递
    子给父传 用自定义事件 $on $emit
    兄弟组件传值 自定义事件

本文标签: 初体验 uniapp