五月份开发笔记

144 阅读2分钟

腾讯即时通信、实时音视频对接记录

背景: 使用的是vue2搭建的H5端页面,后续因为首屏加载的问题,又尝试了SSR(Nuxtjs)和纯Html+JQuery两种方案,以下为各注意点记录:

  1. 获取信息列表getMessageList方法默认返回最近15条信息,没有一次性全部返回的API

  2. Nuxtjs对接实时音视频时,需要将依赖包放入vendor中,引用时写法也需要调整,否则页面加载时会报错找不带依赖

// nuxt.config.js
  build: {
    vendor: ['trtc-sdk-v5']
  }
  
// 组件中
let TRTC = null
if(process.browser) {
  TRTC = require('trtc-sdk-v5')
}
export default {}
  1. 实时音视频包会将JQuery的$覆盖掉,所以需要将JQuery对象符号重新定义
// 首先加载jQuery库
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

// 然后在jQuery代码执行之后,将$符号重新定义
<script>
jQuery.noConflict();
var $$ = jQuery;

// 现在可以使用$$来代替$
$$(document).ready(function(){
    $$('selector').method();
});
</script>

// 加载其他资源
...

js-audio-recorder

录音结束后获取录音时长,最好用对象的duration属性,不要用onprogress里记录的duration;
录音开始后的系列操作一定要在start的resolve回调中进行,不然出现录制错误(我真傻,真的😮‍💨)
刚开始记得要获取一下录音授权,有提供getPermission方法处理

全局样式变量设置

处理系统换肤功能时,可增加全局样式变量,子页面设置样式时用var使用变量即可,项目需要使用css预编译额

// app.vue
<template>
    <div id="app" :style="{'--bg-color': '#f00'}">
      <router-view />
    </div>
</template>

// page.vue
<style lang="less" scoped>
.container {
 background-color: var(--bg-color);
}
</style>

vue本地开发时跨域请求Cookie携带问题

使用iframe嵌入页面,接口调用在不同域下会有跨域问题,且项目接口是自动将Cookie携带在请求头进行鉴权的,但是浏览器因为安全策略,是不允许手动设置Cooike的。
以上问题发布线上环境时放在同一个域名下即可,但是本地开发调试会有困难。
此时可以登录测试环境,复制到可使用的Cookie后,在vue.config.js的本地代理中添加onProxyReq配置(修改配置后要重新运行项目噢~)

// vue.config.js
module.exports = {
    
  devServer: {
      ...
      '^/api': {
        target: 'XXX',
        ws: true,
        changeOrigin: true,
        pathRewrite: {
          '^/api/': '/'
        },
        onProxyReq: function (proxyReq) {
          proxyReq.setHeader(
            'Cookie',
            'XXX'
          )
        }
      }
}

Antdv全局配置a-config-provider下只能有一个子元素

...还有想到再说