半年技术复盘

1 大屏幕终极解决方案,注意配置个别页面方法ceshi是指该页面当前目录,不需要src等一大堆

module.exports = {

  plugins: {

    // autoprefixer: {},

    tailwindcss: {},

    autoprefixer: {},

    "xy-postcss-px-to-viewport": {

      unitToConvert: "px", // 要转化的单位

      viewportWidth: 1920, // UI设计稿的宽度

      unitPrecision: 6, // 转换后的精度,即小数点位数

      propList: ["*"], // 指定转换的css属性的单位,*代表全部css属性的单位都进行转换

      viewportUnit: "vw", // 指定需要转换成的视窗单位,默认vw

      fontViewportUnit: "vw", // 指定字体需要转换成的视窗单位,默认vw

      selectorBlackList: ["wrap"], // 指定不转换为视窗单位的类名,

      minPixelValue: 1, // 默认值1,小于或等于1px则不进行转换

      mediaQuery: true, // 是否在媒体查询的css代码中也进行转换,默认false

      replace: true, // 是否转换后直接更换属性值

      // exclude: [/node_modules/], // 设置忽略文件,用正则做目录名匹配

      landscape: false, // 是否处理横屏情况

      // include:  /\/src\/views\/ehs\//

      include: [/ceshi/],

    },

  },

};

2、echarts 的高度只需在父级设置100%便会盛满高度,echarts的兜底处理坑是

需要借助this.$nextTick(() => {}),但是判断复制的时候,需要将控制展示的变量放在nextTick之外,也就是前面,而操作echarts的配置包括获取放在里面

例如

 if (data.length === 0) {

        this.isShowBottom = true;

      } else {

        this.isShowBottom = false;

      }

      this.$nextTick(() => {

        let myChart = this.$echarts.init(this.$refs.bar);

        let option = {}

})

3 、复盘三就是第三方大屏dataV的使用坑,动态翻译表格每个单元格如果内容很多,不支持自定义和tooltip,我自己已经二次重构了官网并重新发包了

@zhaochengxian/big-screen-components - npm

4、小程序新增知识

    一、小程序官网编辑器是可以自动生成骨价屏的

    二、小程序的webview封装是存在缓存的,需要提前加上随机数

    三、小程序的手机号授权官网已经更新了api

 <button open-type="getPhoneNumber" class="login_button" @getphonenumber="login"
                                v-show="!logged">一键登录</button>

//一键登录

const login = (e) => {

        let detail = e.detail

        if (detail.errMsg == "getPhoneNumber:ok") {

                let code = detail.code

                loginByPhone(code, openid.value)

        }

}

/**

 * 根据手机号登录

 */

const loginByPhone = (code, openid) => {

        Taro.request({

                url: baseUrl + 'auth/wechat/loginByPhone?code=' + code + "&openId=" + openid,

                success: (data) => {

                        if (data.data.code === 200) {

                                const { registerFlag, access_token } = data.data.data

                                if (registerFlag !== "1") {

                                        Taro.setStorageSync('access_token', access_token)

                                        // 系统存在该用户,直接进入系统逻辑

                                } else {

                                   

                                        Taro.navigateTo({

                                                url: `/pages/bindAccount/index?openid=${openid}`,

                                                success: function (res) { },

                                        });

                                }

                        }

                }

        })

}

  

用户点击一键登录,会唤起小程序的手机号授权,用户点击允许,拿到微信code传给后端获取手机号查询数据库,如果用户点击拒绝授权

,唤起拒绝二次确认提示

后端具体实现参考这个博客

微信小程序登录获取手机号教程(超详细)_微信小程序获取手机号-优快云博客

前后端遇到的坑:

就是利用秘钥查询手机号的时候提示不合法,密钥在后台管理重置一下即可

5、app新增知识和遇到的坑

    一、热部署不起作用,重新打包,部署到服务器即可

    二、打包,选择云打包,使用共有证书和传统打包一般会省去很多麻烦

    三、hbuilder版本问题,4.06以后打出的dist目录接口变了

    四、pad扫描问题实际上走的是input confirm,为了解决扫描同一个bug问题,解决方案采用两个input

<input v-show="focus1" class="input" v-model="formData.labelCode" type="text" placeholder="请输入"
					:clearable="true" :inputBorder="false" @confirm="scanChange" :focus="focus1" />
				<input v-show="focus2" class="input" v-model="formData.labelCode" type="text" placeholder="请输入"
					:clearable="true" :inputBorder="false" @confirm="scanChange" :focus="focus2" />

   

uiniapp本地跨域解决注意是放在mainfest.json里面

"h5": {
        "devServer": {
            "proxy": {
                "/api": {
                    "target": "https://baidu.com",
                    "changeOrigin": true,
                    "pathRewrite": {
                        "^/api": ""
                    }
                }
            }
        }
    },

小程序扫描创建声音的时候注意,要及时的销毁否则页面对接,内存达到一定的程度就不响了 

data(){
    return {
        innerAudioContext:null,
    }
},
methods:{
    playAudio(id) {
                  const innerAudioContext = uni.createInnerAudioContext();
                  innerAudioContext.autoplay = true;
                  innerAudioContext.src = '/static/'+id+'.mp3';
                  innerAudioContext.onPlay(() => {
                    console.log('开始播放');
                  });
                  innerAudioContext.onError((err) => {

                      this.clear()
                  });
                  innerAudioContext.onEnded(() => {
                    this.clear()
                    
                    console.log('播放结束');
                  });
                }

    clear(){
                 if(this.innerAudioContext){
                     this.innerAudioContext.stop();
                     this.innerAudioContext.destroy();
                     this.innerAudioContext = null
                 }
                
            },
},

onUnload() {
			this.clear()	
		},

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值