当前位置:   article > 正文

rrweb学习案例(网页录制,回放)-demo_vue录屏 rrweb

vue录屏 rrweb

昨天在抖音上刷到了一个up主分享的一个好玩儿的东西,叫做rrweb,它可以帮助我们录制网页视频/快照网页内容,这样我们可以清晰的看到记录的用户行径,便于优化我们的系统。

文档地址:热门极速下载/rrweb

下面是我进行学习的一个使用案例

首先我选择了HbuilderX快速创建一个空的vue项目

前端组件选择了 ant-design-vue ,很久没用了,熟悉一下,虽然写不了几行代码哈哈。

1、main.js引入ant-design-vue 相关依赖

  1. import Vue from 'vue'
  2. import App from './App.vue'
  3. import Antd from 'ant-design-vue'
  4. import 'ant-design-vue/dist/antd.css'
  5. Vue.config.productionTip = false
  6. Vue.use(Antd)
  7. new Vue({
  8. render: h => h(App),
  9. }).$mount('#app')

2、编写测试页面 、App.vue 加入rrweb、rrweb-player依赖

下面直接贴代码了,

rrweb只包含了录制,回放等功能

rrweb-player 作为播放器UI来使用

  1. <template>
  2. <div id="app">
  3. <div >
  4. <a-row >
  5. <a-col :span="8">
  6. <HelloWorld msg="rrweb 测试用例"/>
  7. <a-button type="primary" ghost @click="startRecord">
  8. 录制
  9. </a-button>
  10. <a-button type="danger" ghost @click="stopRecord">
  11. 停止录制
  12. </a-button>
  13. <a-button type="primary" ghost @click="doReplay">
  14. 回放
  15. </a-button>
  16. </a-col>
  17. <a-col :span="8">
  18. <a-avatar :size="avatarSize" src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fww2.sinaimg.cn%2Fmw690%2F006T846Aly1gtpt61xg2nj31jk2bcwo7.jpg&refer=http%3A%2F%2Fwww.sina.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1634540023&t=f6071ad6cc906d41f4a91862d213041a" />
  19. </a-col>
  20. </a-row>
  21. </div>
  22. <div>
  23. <a-row >
  24. <a-col :span="8">
  25. <a-textarea placeholder="请输入多行文本" v-model="text" :rows="4" />
  26. </a-col>
  27. </a-row>
  28. <a-row >
  29. <a-col :span="8">
  30. <a-slider id="test" :default-value="30" @change="handleAvatarSize" :disabled="disabled" />
  31. </a-col>
  32. </a-row>
  33. </div>
  34. <a-card >
  35. </a-card>
  36. <div id="doPlay" style="width=600px;height=500px;" class="margin-8">
  37. </div>
  38. </div>
  39. </template>
  40. <script>
  41. import HelloWorld from './components/HelloWorld.vue';
  42. import * as rrweb from 'rrweb';
  43. import rrwebPlayer from 'rrweb-player';
  44. import 'rrweb-player/dist/style.css';
  45. let events = [];
  46. export default {
  47. name: 'app',
  48. components: {
  49. HelloWorld,rrweb,rrwebPlayer
  50. },
  51. data(){
  52. return {
  53. text:'',
  54. user:{},
  55. options:{
  56. root: null,
  57. },
  58. avatarSize:30,
  59. }
  60. },
  61. methods:{
  62. //开始录制
  63. startRecord(){
  64. rrweb.record({
  65. emit(event) {
  66. // 用任意方式存储 event
  67. console.log(event);
  68. events.push(event);
  69. },
  70. });
  71. },
  72. //停止录制
  73. stopRecord(){
  74. let stopFn = rrweb.record({
  75. emit(event) {
  76. if (events.length > 100) {
  77. // 当事件数量大于 100 时停止录制
  78. stopFn();
  79. }
  80. },
  81. });
  82. },
  83. //回放
  84. doReplay(){
  85. location.href = "#doPlay";
  86. const dataList = this.text.split("\n")
  87. console.log(dataList)
  88. for (let item of dataList) {
  89. this.user = {
  90. title : item
  91. }
  92. }
  93. console.log(this.user)
  94. /* this.options.root = document.getElementById("doPlay")
  95. const replayer = new rrweb.Replayer(events, this.options);
  96. replayer.play(); */
  97. const replayer = new rrwebPlayer({
  98. target: document.getElementById("doPlay"), // 可以自定义 DOM 元素
  99. // 配置项
  100. props: {
  101. events,
  102. },
  103. });
  104. },
  105. handleAvatarSize(e){
  106. this.avatarSize = e
  107. }
  108. }
  109. }
  110. </script>
  111. <style>
  112. .margin-8{
  113. margin: 8px 0;
  114. }
  115. #app {
  116. font-family: 'Avenir', Helvetica, Arial, sans-serif;
  117. -webkit-font-smoothing: antialiased;
  118. -moz-osx-font-smoothing: grayscale;
  119. text-align: center;
  120. color: #2c3e50;
  121. margin-top: 60px;
  122. }
  123. </style>

不方便制作gif,简单截几个图看效果吧。

 倍速,快进,全屏应有尽有。

 以上只是简单的做了个快速使用案例。想要更系统的学习,还要看一下文档介绍,里面有一些其他的方法或许能盖满足你的需求。

就这样,回家过中秋了。

后面有时间看看怎么导出视频文件。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/714597
推荐阅读
相关标签
  

闽ICP备14008679号