• uniapp


    第一次运行到小程序:
        1再HBuilder中设置微信小程序的路径,
        2在微信小程序中打开安全-》设置-》端口
    项目目录:unpackages:打包的文件
        packages.json:页面配置
        manifest.json:打包配置
    
    生命周期函数:
        应用生命周期:定义在app.vue中
            onLaunch:当app初始化完成时触发(全局只触发一次);
            onShow: 当app显示时,触发;(浏览器从最小化切换到最大化,切换页签时) 
            onHide:当app隐藏时,触发;(浏览器从最大化切换到最小化,切换页签时)
            onError:当app报错时,触发
        页面生命周期:
            onload:监听页面加载,参数为上个页面传递的参数
            onShow:监听页面显示,
            onReady:监听页面初次渲染完成
            onHide:监听页面隐藏
            onUnload:监听页面卸载
    
            onPullDownRefresh :监听用户的下拉动作,一般用于下拉刷新  
                    uni.startPullDownRefresh();可以通过按钮来开始下拉刷新,会触发onPullDownRefresh()中的方法
                    uni.stopPullDownRefresh();停止下拉刷新
            onReachBottom:页面滚动到底部的事件,(下拉加载数据)
    
    网络请求:
        uni.request({
                           url: 'https://www.example.com/request', //仅为示例,并非真实接口地址。
                           data: {
                                 text: 'uni.request'
                           },
               methods: "POST",//默认为GET
                           header: {
                                'custom-header': 'hello' //自定义请求头信息
                           },
                           success: (res) => {
                                  console.log(res.data);
                            }
                      });
        注意
        对于 GET 方法,会将数据转换为 query string。例如 { name: 'name', age: 18 } 转换后的结果是 name=name&age=18。
        对于 POST 方法且 header['content-type'] 为 application/json 的数据,会进行 JSON 序列化。
        对于 POST 方法且 header['content-type'] 为 application/x-www-form-urlencoded 的数据,会将数据转换为 query string。
    
    数据缓存:
        设置:uni.setStorageSync("userMsg",JSON.stringify(this.apiValue));
        获取:let res = uni.getStorageSync("userMsg");   console.log(JSON.parse(res));
        移除:uni.removeStorageSync("userMsg");
    
    文件上传:
        uni.chooseImage({
            count: 3, //上传的数量限制,默认为9   h5不生效
            success: (chooseImageRes) => {
                console.log(chooseImageRes)
                this.imgList = chooseImageRes.tempFilePaths; //获取页面所展示的图片集合
                uni.uploadFile({
                    url: 'http://39.98.225.237:9119/bcs/userInfo/updateUserInfo', //仅为示例,非真实的接口地址
                    //filePath: tempFilePaths[0],
                    //name: 'file',
                    formData: {
                        token: "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJsZjA5MjMiLCJhdWRpZW5jZSI6IndlYiIsImNyZWF0ZWQiOjE2MDQzODIxMDYxNjgsImF1dGhUb2tlbiI6InR0c2Y6dG9rZW46cGM6MjU2OmRlZjY3MTg2LTkxNjUtNDk5OC1iOTU2LTJlZWFjZGU0ZjVmMiIsImNvbXBhbnkiOjI1NiwiZXhwIjoxNjA0NDY4NTA2LCJ1c2VySWQiOjM2MX0.R85s0MmEd6Qt9DdpkPwtlNvfvaNt5_79-g3XydT5I9uOUTLrCnSxnCTJnoNuetvIx7YBHEaCMJC9FOH5jQdQXw",
                        id: 361,
                        company_id: 256,
                        depart_id: 230,
                        create_user_id: 352,
                        user_name: "lf0923",
                        user_nike_name: "梁飞",
                        user_sex: 1,
                        user_phone: 13612345675,
                        user_email: "213465987465123@qq.com",
                        //这里会有一个默认的参数 file   就是chooseImageRes.tempFiles[0] 这个参数就是向后端传递的参数
                        multfile:chooseImageRes.tempFiles[0] //向后端传递的参数
                    },
                    success: (uploadFileRes) => {
                        console.log(“接口返回数据”, uploadFileRes.data);
                    }
                });
            }
        })
    
    图片预览:
        uni.previewImage({
            current:item,//当前显示的图片
            urls: this.imgList,//图片列表 左右滑动的,
            indicator:"number",//图片指示器样式,可取值:"default" - 底部圆点指示器; "number" - 顶部数字指示器; "none" - 不显示指示器。 仅在安卓ios上生效
            loop:true,//是否可循环预览,默认值为 false 仅在安卓ios上生效
            longPressActions: {
                itemList: ['发送给朋友', '保存图片', '收藏'],
                success: function(data) {
                    console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
                },
                fail: function(err) {
                    console.log(err.errMsg);
                }
            }
        });
    
    条件编译:
        <!-- #ifdef H5  -->
        <view>
            <text>只在H5展示</text>
        </view>
        <!-- #endif -->
        <!-- #ifdef MP-WEIXIN -->
        <view>
            <text>只在微信小程序中展示</text>
        </view>
        <!-- #endif -->
        注:script中同样支持 只不过是 // #ifdef H5     //#endif
                           style中同样支持 只不过是 /* #ifdef H5*/     /*#endif */
    
    路由跳转:
        <!-- 声明式导航 -->
        <navigator url="../detail/index?id=20&name=wangqi">跳转至详情页面</navigator>
        <navigator url="../detail/index" open-type="redirect">open-type为redirect无返回按钮(将之前页面销毁了)</navigator>
        <navigator url="../my/index" open-type="switchTab">跳转tabbar页面需要设置 open-type</navigator>
        <!-- 编程式导航 -->
        //不卸载之前页面
        uni.navigateTo({
            url:"../detail/index?name=xiaowang&age=100"
        })
        //跳转至tabbar页面
        uni.switchTab({
            url:"../my/index"
        })
        //卸载之前页面
        uni.redirectTo({
            url:"../detail/index"
        })
        接收路由参数:在onload(data){}这个生命周期中,有一个默认的参数,这个默认的参数就是路由传递的值,为一个对象
    
    组件:引入方式同vue,生命周期同vue created,monted等等    
    传值:子传父,父传子,同vue,非父子 uni.$emit;    uni.$on
    
    
    插件:去插件市场下载
              HBuilderX 2.5.5起,只需将本组件导入项目,在页面template中即可直接使用,无需在页面中import和注册componets。
    
    
    
    
    
    
    api请求封装
    建立一个公共的js文件
    const BASE_URL = "http://39.98.225.237:9119";
    //公共接口
    export const myRequestApi = (parm) => {
        return new Promise((resolve, reject) => {
            let contentType = "";
            if (parm.method == "POST") {
                if (parm.contentType == 1) {
                    contentType = "application/x-www-form-urlencoded"
                } else if (parm.contentType == 2) {
                    contentType = "application/json"
                } else {
                    contentType = ""
                }
            }
            uni.request({
                url: BASE_URL + parm.url,
                method: parm.method,
                header: {
                    'content-type': contentType //自定义请求头信息
                },
                data: parm.data || {},
                success: (res) => {
                    if(!res){
                        resolve()
                    }
                    if (res.data.code == 200) {
                        resolve(res.data)
                    } else {
                        return uni.showToast({
                            title: res.data.message,
                            icon:'none',
                            duration: 2000
                        })
                    }
                },
                fail: (err) => {
                    return uni.showToast({
                        title: res.data.message,
                        icon:'none',
                        duration: 2000
                    })
                    resolve(err)
                }
            })
        })
    }
    
    //文件上传 平台上传图片返回结果是字符串
    建立一个公共的js文件 
    export const myRequestFile = (parm) => {
        return new Promise((resolve, reject) => {
            uni.uploadFile({
                url: BASE_URL + parm.url,
                formData: parm.data || {},
                success: (res) => {
                    let temp = JSON.parse(res.data);
                    if(!res){
                        resolve()
                    }
                    if (temp.code == 200) {
                        resolve(temp)
                    } else {
                        return uni.showToast({
                            title: temp.message,
                            icon:'none',
                            duration: 2000
                        })
                    }
                },
                fail: (err) => {
                    let temp = JSON.parse(res.data);
                    return uni.showToast({
                        title: temp.message,
                        icon:'none',
                        duration: 2000
                    })
                    resolve(err)
                }
            })
        })
    }
    
    然后再main.js中引入
        import {
            myRequestApi,
            myRequestFile
        } from "./static/js/api.js"
    再
    Vue.prototype.$myRequestApi = myRequestApi;
    Vue.prototype.$myRequestFile = myRequestFile;
    页面中在methods中使用
    async getData() {
        let res = await this.$myRequestApi({
            url: "/bcs/userInfo/selectComAndDeptById",
            method: "POST",
            contentType: 1,
            data: {
                token: "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJsZjA5MjMiLCJhdWRpZW5jZSI6IndlYiIsImNyZWF0ZWQiOjE2MDQ0NjE0MTAzNjMsImF1dGhUb2tlbiI6InR0c2Y6dG9rZW46cGM6MjU2OjEwMWI3NTc0LTJmNDEtNGFjYS1hZjVjLWE1MzFkZjQ4MmRkMyIsImNvbXBhbnkiOjI1NiwiZXhwIjoxNjA0NTQ3ODEwLCJ1c2VySWQiOjM2MX0.CsbFgOcSb1bM2VrcN-7lG4qaMOR1IkvRarbGSYx6dVTGpzavAq1odNmjvZu6HlXBEbW2L14sntXqXe2M7awecw",
                id: 360
            }
        })
        if (res) {
            this.apiValue = res.data;
            uni.showToast({
                title: "请求成功",
                icon: 'success',
                duration: 2000
            })
        }
    },
    
    
    
    
    打包:
        微信小程序:
        在manifest.json文件中:微信小程序配置--》appId(微信公众平台,开发,开发设置中)-》发布
                    在微信公众平台上 点击版本管理 -》提交审核
       H5网页版本:设置完默认应用名称后;运行h5打包就行了
  • 相关阅读:
    内网穿透
    canvas 满天星
    swift 获取文件的Md5值
    swift UITextView内容距离边框边距设置
    swift UITextField光标聚焦以及光标颜色修改
    swift3.0 移除当前页面的前一个页面
    swift3.0 屏幕截图并且保存到本地相册
    swift3.0 UITableView侧滑支持多选项
    swift3.0 点击UIScrollView中输入框之外的区域关闭键盘
    swift3.0 底部弹出菜单 UIAlertController的使用
  • 原文地址:https://www.cnblogs.com/wangqi2019/p/14441821.html
Copyright © 2020-2023  润新知