//父类class Dad {constructor(x, y) {蓝狮注册this.x = 5;this.y = 1;this.state = 789} static x = 521 state1 = 666 say() { console.log("父类bark"); } talk = () => { console.log("父类talk"); } static speak() { console.log("父类speak"); console.log(this.state); } speak(){ console.log("父类不会speak"); } }//子类class Child extends Dad {constructor() {super()this.x = 987this.toString = this.toString.bind(this)} state = {} toString() { return '(' + this.x ...
蓝狮注册开户flv.js的追帧、断流重连及实时更新的直播优化方案
前言最近在处理前端直播的业务,根据业务需要,使用 flv.js 的方案播放实时的flv视频流。不得不承认,flv.js 是一个伟大的库。 在使用flv.js开发的过程中,遇到了一些问题,也无外乎是视频延迟,视频卡顿等问题,经过在github issues里摸爬滚打,加上长时间的试错,将这些问题归纳出了对应的解决方案,也自己封装了一个扩展插件 flvExtend。 于是写这篇文章来对我遇到的一些问题进行总结,我提出的解决方案不一定适合所有场景,如果有更好的解决方案,欢迎讨论,这也是我写这篇文章的目的,也是我写文章的初心。 前端直 ...
蓝狮注册开户从原生 JavaScript 到 React
从头开始理解 reactReact 是一个用于构建用户界面的 JavaScript 框架。它可用于通过动态操作页面内容来创建 JavaScript 应用程序。浏览器已经提供了在页面中创建元素的 api,即 dom,所以新手可能想知道 React 带来了什么以及它与 DOM 的关系。 原生 JavaScript 和 DOM在 JavaScript 中,就像在大多数编程语言中一样,您将可以访问具有各种对象和函数的全局范围,您可以操纵这些对象和函数来构建您的应用程序。在 Web 环境中运行的 JavaScript 应用程序中,您将有权访问文档对象模型 (DOM) API。如果您在基于节点的应用程序中 ...
蓝狮注册开户搭建前端监控,采集用户行为的 N 种姿势
大家好,我是杨成功。 上一篇我们详细介绍了前端如何采集异常数据。采集异常数据是为了随时监测线上项目的运行情况,发现问题及时修复。在很多场景下,除了异常监控有用,收集用户的行为数据同样有意义。 怎么定义行为数据?顾名思义,就是用户在使用产品过程中产生的行为轨迹。比如去过哪几个页面,点过哪几个按钮,甚至在某个页面停留了多长时间,某个按钮点击了多少次,如果有需求都可以记录下来。 但是记录行为数据是一个和业务紧密关联的事情,不可能把每个用户每一步操作都极其详细的记录下来,这样会产生极其庞 ...
蓝狮注册开户一文带你掌握虚拟 DOM 的灵魂
概述react 和 vue 中都有虚拟 dom,我们应该如何理解和掌握虚拟 DOM 的精髓呢?我推荐大家学习Snabbdom 这个项目。Snabbdom 是一个虚拟 DOM 实现库,推荐的原因一是代码比较少,核心代码只有几百行;二是 Vue 就是借鉴此项目的思路来实现虚拟 DOM 的;三是这个项目的设计/实现和扩展思路值得参考。 snabb /snab/,瑞典语,意思是快速的。 调整好舒服的坐姿,打起精神我们要开始啦~ 要学习虚拟 DOM,我们得先知道 DOM 的基础知识和用 JS 直接操作 DOM 的痛点在哪里。 DOM 的作用和类型结构DOM(Document Object Model) ...
蓝狮注册开户jsonp解决跨域插件(js、ts)
介绍: 有时候请求某些第三方api用nginx做反向代理解决跨域不能满足需求,例如请求百度或者腾讯地图的ip定位接口,该接口会根据请求来源的ip返回该ip地址对应的位置信息,但是若是用ng做了代理或者是后端做接口转发的话实际获取到的ip位置信息是服务器的ip地址,想要直接解析客户端的ip位置信息就必须得从客户端直接调用第三方ip定位接口,但是直接请求第三方接口会出现跨域,蓝狮注册开户这时候就可以使用jsonp来解决这个跨域问题。注意:jsonp只能发送get类型的请求。 jsonp插件地址:https://gitee.com/ml_plugins/json ...
蓝狮注册Vue3结合TS项目开发实践总结
概述vue3出来已经有一段时间了,在团队中,也进行了大量的业务实践,也有了一些自己的思考。 总的来说,Vue3无论是在底层的原理上,还是在业务的实际开发中,都有了长足的进步。 使用 proxy 代替之前的 Object.defineProperty 的api,性能更加优异,也解决了之前vue在处理对象、数组上的缺陷;在diff算法上,使用了静态标记的方式,大大提升了Vue的执行效率。 在使用的层面,我们从options Api,变成了composition Api,慢慢的在实际的业务中,我们抛弃了原本的data、methods、computed那种隔离式的写法。compositon Ap ...
蓝狮注册事件循环机制:JavaScript被设计为单线程,那如何做到异步的呢?
JavaScript是单线程的语言,单线程是指所有的程序路径按照一定的顺序执行,只有前面的程序执行了,后面的程序才会执行。 也就是说在同一时间,JavaScript只能做一件事情,为了协调浏览器产生的各种事件、网络处理、前端渲染等行为,js的事件循环机制,即EventLoop应运而生。 JavaScript是单线程的原因js的设计初衷是作为浏览器的脚本语言,浏览器中涉及到与用户互动、频繁操作dom等动作,如果js设计为多线程,会有很复杂的线程同步问题,即使同步问题被解决,也会降低浏览器的响应效率,得不偿失,因此,JavaScript被设计 ...
蓝狮注册原生JS也要支持类型注解啦?
大家好,我卡颂。 在布达佩斯2022 JSConf会议上,tc39(ES标准委员会)成员「Gil Tayar」介绍了一份当前仍处于stage 1阶段的提案 —— Type Annotations,意在让原生JS支持类型注解。 换句话说,如果提案通过,很多.ts文件将后缀改为.js后就能直接在浏览器中运行。 一份tc39提案通常会经历5个阶段: stage 0:被提出。stage 1:接受审议。stage 2:规范基本完成。stage 3:等待被实现。stage 4:纳入语言标准中。所以Type Annotations当前仍处于「接受审议」的状态。 但是提案发起者「Gil Tayar」对这份提案的通过 ...
蓝狮注册Vue3.2 中新出的 expose 是做啥用的?
随着vue 3.2的发布,一个新的组合工具提供给我们,叫做 expose。 你是否曾经创建过一个需要向模板提供一些方法和属性的组件,但又希望这些方法对组件是私有的,不能被父类调用? 如果你在开发一个开源的组件或库,你有可能想保持一些内部方法的私有性。在Vue 3.2之前,这并不容易实现,因为所有在选项api中声明的方法或数据等都是公开的,所以模板可以访问它。 组合API也是如此。我们从setup方法中返回的所有东西都可以被父类直接访问。 组合 API让我们看一个实际的例子。想象一下,我们有一个组件,它创建了一个计 ...