• uniApp笔记


    uniApp

    学习路线:>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    文中下方出现的http链接均为官网纤详细教程地址,官网讲的很全没必要再重新记录一编

    组件


    响应式宽度单位

    rpx 整个屏幕占满的宽是750rpx,它会根据你的屏幕大小进行自适应

    .box{
        width:750rpx; // 全屏 
        height:300rpx;
        background: green;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    icon

    https://uniapp.dcloud.net.cn/component/icon.html# icon官网

     <icon type="success" size="26"/>
    
    • 1



    text

    文本组件:https://uniapp.dcloud.net.cn/component/text.html



    scroll-view

    可滚动视图区域:https://uniapp.dcloud.net.cn/component/scroll-view.html



    swiper

    滑块视图容器(轮播图):https://uniapp.dcloud.net.cn/component/swiper.html

    <swiper class="swiper" circular="true" autoplay="true" duration="400" interval="3000" indicator-dots>
        <swiper-item class="item">
            <image src="https://img.alicdn.com/imgextra/i2/6000000008101/O1CN01pgKEuY29iJJRNkCfJ_!!6000000008101-2-octopus.png" mode="">image>
        swiper-item>
        <swiper-item class="item">
            <image src="https://img.alicdn.com/imgextra/i3/6000000004754/O1CN01G2onsB1kzNg9NfdBH_!!6000000004754-2-octopus.png" mode="">image>
        swiper-item>
        <swiper-item class="item">
            <image src="https://img.alicdn.com/imgextra/i4/6000000004885/O1CN0101FvmP1lxNZ8vWgR6_!!6000000004885-0-octopus.jpg" mode="">image>
        swiper-item>
    swiper>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11



    image

    图片组件:https://uniapp.dcloud.net.cn/component/image.htmlf

    表单

    按钮

    https://uniapp.dcloud.net.cn/component/button.html

    输入框

    https://uniapp.dcloud.net.cn/component/input.html



    navigator

    跳转组件:https://uniapp.dcloud.net.cn/component/navigator.html#

    类似于h5a标签 ,只能跳转到非tabBar页面,如果你就要跳到tabBar的页面,那就可以用第二种用法设置open-type

    <navigator url="/page/list/list">新闻列表navigator>
    <navigator rul="/page/list/list" open-type='reLaunch'>新闻列表navigator>
    
    • 1
    • 2



    tabBer

    https://uniapp.dcloud.net.cn/collocation/pages.html#tabbar

    tabBar里面有 color:默认颜色;selectedColor选中颜色;list下方按钮(列表中也有名字,颜色,图标,选中图标)

    {
    	"pages": [ 
    		{
    			"path": "pages/index/index",
    			"style": {
    				"navigationBarTitleText": "首页"
    			}
    		},
    		{
    		    "path" : "pages/list/list",
    		    "style" :                                                                                    
    		    {
    		        "navigationBarTitleText": "",
    		        "enablePullDownRefresh": false
    		    }
    		    
    		},
    		{
                "path" : "pages/about/about",
                "style" :                                                                                    
                {
                    "navigationBarTitleText": "",
                    "enablePullDownRefresh": false
                }
                
            }
        ],
    	"globalStyle": {
    		"navigationBarTextStyle": "black",
    		"navigationBarTitleText": "测试app",
    		"navigationBarBackgroundColor": "#F7F7F7",
    		"backgroundColor": "#F8F8F8"
    	},
    	"tabBar": {
    		"color": "#333",
    		"selectedColor": "#00AEEC",
    		"list": [
    			{
    				"text": "首页",
    				"pagePath": "pages/index/index",
    				"iconPath": "static/tabbar/index.png",
    				"selectedIconPath": "static/tabbar/index-h.png"
    			},
    			{
    				"text": "列表",
    				"pagePath": "pages/list/list",
    				"iconPath": "static/tabbar/list.png",
    				"selectedIconPath": "static/tabbar/list-h.png"	
    			},
    			{
    				"text": "我的",
    				"pagePath": "pages/about/about",
    				"iconPath": "static/tabbar/about.png",
    				"selectedIconPath": "static/tabbar/about-h.png"
    			}
    		]
    	},
    	"uniIdRouter": {}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59

    和vue比较

    计算属性和监听器

    每一个计算属性都包含一个 getter 和一个 setter ,默认是利用 getter 来读取。所有 gettersetterthis 上下文自动地绑定为 Vue 实例。

    https://uniapp.dcloud.net.cn/tutorial/vue-basics.html#%E8%AE%A1%E7%AE%97%E5%B1%9E%E6%80%A7computed



    组件

    不用导入,按照约定创建直接用即可

    https://uniapp.dcloud.net.cn/tutorial/vue-components.html



    父组件给子组件传参props

    使用的时候需要在子组件中定义props去接收定义的属性

    https://uniapp.dcloud.net.cn/tutorial/vue-components.html#props

    简单使用

    父组件
    
    
    子组件
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    也可以这样写设置默认值

    		props:{
    			title:{
    				type: String,
    				default: "默认标题"
    			},
    			time:{
    				type:Number,
    				default: Date.now()
    			},
    			list:{
    				type: Array,
    				default(){
    					return [1,2,3]
    				}
    			},
    			user:{
    				type: Object,
    				default(){
    					return {name:"匿名",gender:"保密"}
    				}
    			}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21



    子组件给父组件传值emit

    https://uniapp.dcloud.net.cn/tutorial/vue-components.html#%E8%87%AA%E5%AE%9A%E4%B9%89%E4%BA%8B%E4%BB%B6下滑找到自定义事件

    子组件,传的值不只是字符串,还可以时对象,数组

    
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    父组件

    
    
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c3x1jtpH-1667539006951)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20221020114541858.png)]



    事件修饰符

    native

    比如在自定义组件上,执行比如@click事件,如果不加事件修饰符的话,就会以为这个事件是在组件中定义的,这里如果还想让他出发@click的话,那几就 加上事件修饰符@click.native

    sync

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

    
    
    子组件中
    methods:{
    	onClose(){
    		this.$emit("update:stte",false)
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    表示组组件的这个state属性是个响应式的,子组件是可以控制这个属性的



    生命周期函数·

    created(){} 实例创建完成后立即调用 一般做网络请求

    mounted(){} 挂载到实例上去之后调用 一般做数据渲染 f



    路由和页面跳转

    https://uniapp.dcloud.net.cn/api/router.html#navigatetof

    跳转到demo4页面
    或者
    跳转
    
    methods:{
    	goDemo4(){
    		uni.navigateTo({
    			url:"/pages/demo4/demo4",
    			success: res=>{
    				
    			}
    		})
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14



    onload页面传参和vue route路由的差异

    路由取

    # 传递一个参数,传递多个用 & 拼接
    # 页面 传参
    跳转到demo4
    
    # 在H5中  取参
       	mounted(){
    		console.log( this.$route.query.wd )
    	}
    
    # 在小程序中 取参
    	onLoad(e){
    		console.log(e)
    		console.log( getCurrentPages() )
    	}
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17



    常用小功能

    消息提示框

    https://uniapp.dcloud.net.cn/api/ui/prompt.html

    uni.showToast() ·

    ... @click="clickImg"
    
    methods: {
    	clickImg(){
    		uni.showToast({
    			title:"发布失败",
                // icon:"error",
                image:"/static/logo.png",
                mask:true,
                duration:1500,
                success(){
                    setTimeout(()={
                        uni.navigateTo({
                        	url:"/pages/demo/demo"
                    	})
                    },1500)
                }
    		})
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20



    showLoding和showModal模态弹窗

    showLoding

    onLoad(){
        uni.showLoading({  // 开启加载窗
            title:"数据加载中...",
            mask:true
        })
        
        setTimeout(()={  // 模拟请求,关闭加载框
            uni.hideLoading()
        },2000)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    showModal

    methods: {
        clickBox(){
            uni.showModal({
                title:"提示",
                content:"是否继续进入下一个页面?",
                editable:true,  // 展示输入框
                success:res=>{
                    console.log(res)
                    if(res.confirm){
                        uni.navigateTo({
                            url:"page/demo/demo"
                        })
                    }else{
                        uni.showToast({
                            title:"您已取消",
                            icon:"none"
                        })
                    }
                }
            })
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    showActionSheet从底部向上弹出操作菜单
    data(){
        return {
            arr: ["三国演义","红楼梦","水浒传"]
        }
    }
    
    uni.showActionSheet({
    	itemList: this.arr,
    	success: (res) => {
    		console.log('选中了第' + (res.tapIndex + 1) + '个按钮');
            console.log(this.arr[res.tapIndex])
    	},
    	fail: function (res) {
    		console.log(res.errMsg);
    	}
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16



    设置导航条

    可以在page.json中进行设置,配合官方文档https://uniapp.dcloud.net.cn/collocation/pages.html#style

    也可以在页面中进行设置,不过要在页面初始化的时候设置https://uniapp.dcloud.net.cn/api/ui/navigationbar.html

    • 如果需要在页面进入时设置标题,可以在onReady内执行,以避免被框架内的修改所覆盖。如果必须在onShow内执行需要延迟一小段时间
    onLoad(){
        uni.setNavigationBarTitle({
            title:"js操作的导航标签,优先级大于page.json"
        })
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5



    tabbar配置iconfont字体图标

    https://uniapp.dcloud.net.cn/api/ui/tabbar.html 这个在小程序不支持

    先去官网,https://www.iconfont.cn/manage/index?manage_type=myprojects&projectId=3729232&keyword=&project_type=&page=把自己想用的图标给都添加到一个项目中去,然后直接下载到本地,把下载的文件解压后,里面有一个 iconfont.ttf 文件,把这个文件复制到static下面去,之后去page.json用即可,在list里面配置iconfont

    	"tabBar": {
    		"iconfontSrc": "static/font/iconfont.ttf", //导入
    		"color": "#333",
    		"selectedColor": "#00AEEC",
    		"list": [
    			{
    				"text": "首页",
    				"pagePath": "pages/index/index",
    				"iconPath": "static/tabbar/index.png",
    				"selectedIconPath": "static/tabbar/index-h.png",
    				"iconfont": {
    					"text": "\ue751",  //直接去icon官网复制代码   然后把前三个字符使用 \u 进行转译
    					"selectedText": "\ue751",
    					"color": "#333",
    					"selectedColor": "#007AFF",
    				}
    			},
    			{
    				"text": "列表",
    				"pagePath": "pages/list/list",
    				"iconPath": "static/tabbar/list.png",
    				"selectedIconPath": "static/tabbar/list-h.png"	
    			},
    			{
    				"text": "我的",
    				"pagePath": "pages/about/about",
    				"iconPath": "static/tabbar/about.png",
    				"selectedIconPath": "static/tabbar/about-h.png"
    			}
    		]
    	},
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31



    uni.request网络请求API接口

    https://uniapp.dcloud.net.cn/api/request/request.html

    一个简单案例 不带参数

    
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    带有参数,可以写在data里面,也可以?拼接

    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    小案例

    list.vue是一个新闻列表,点击查看详情,和这个详情下面的评论内容

    list.vue

    
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57

    detail.vue

    
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105



    数据缓存Storage的用法

    https://uniapp.dcloud.net.cn/api/storage/storage.html#setstorage

    每个方法都有一个同步和异步,一般用异步即可

    设置缓存

    onLoad() {
        uni.setStorageSync("mykey",{name:"wangmenghu",age:20})
        // 或者用
        uni.setStorage({
            key: "demo",
            data: "123"
        })
    },
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    读取缓存

    let value = uni.getStorageSync('mykey');
    if (value) {
        console.log(value);
    }
    
    // 或者
    uni.getStorage({
    	key: 'storage_key',
    	success: function (res) {
    		console.log(res.data);
    	}
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    清空缓存

    try {
        uni.removeStorageSync('mykey');
    } catch (e) {
        // error
    }
    
    //或者
    uni.removeStorage({
        key: 'mykey',
        success: function (res) {
            console.log('success');
        }
    });
    
    
    // 清除所有
    try {
    	uni.clearStorageSync();
    } catch (e) {
    	// error
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22



    打包不同平台

    H5

    打开manifest.json ,左侧菜单找到Web配置 ,在这里可以设置 标题,路由模式…等等,配置完过后,去上方菜单找到发行,点击网站Pc-Web或手机H5... 然后点击发行,就会进行打包,打包后的文件会在 unpackage这个文件夹下面的dist/build/h5

    微信小程序

    AppId :打开自己注册的小程序,进入开发者的主页,左侧菜单找到开发管理,在这里找到开发设置 ,在这里面就能找到AppID

    appid填好后其他的基本上不需要配置,点击发行,发行到微信小程序,它会打包到unpackage/dist/build/mp-weixin,然后就可以去微信开发者工具中进行配置: 点击右上角详情 下的 项目配置 找到合法域名 ,把项目中的接口地址拿过去比如https://menghu.cloud,这里不知道怎么配可以去小程序的后台,开发管理中找到服务器域名进行添加 ,也可以到本地设置中,不校验合法域名

    之后,在微信开发者工具中点击右上角的上传,这时候你再去小程序的后台管理系统,版本管理中就能看到

    App

    manifest.json中选择App图标配置,启动界面配置,模块配置,等等。发行的时候选择 APP云打包。打包后在unpackage/release/apk/...



    青年帮项目

    1.左右滑动的导航

    使用组件scroll-view

    
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63

    ew class=“item”>国内
    国内
    国内
    国内
    国内
    国内

    		
    			
    				每一行的新闻
    			
    		
    		
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    
    
    
    
    
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  • 相关阅读:
    经典垃圾回收器
    xlwings笔记
    如何理解数据库事务
    更改linux开发板默认shell为bash
    ROSIntegration ROSIntegrationVision与虚幻引擎4(Unreal Engine 4)的配置
    微电子领域常见概念(九)势垒层
    Linux——MySQL安装的几种方式
    Spark GraphX 图算法的理解
    C语言:动态内存分配(2)
    创建性-构造者设计模式
  • 原文地址:https://blog.csdn.net/w13966597931/article/details/127686985