前端
文章平均质量分 56
webRambler
努力,专注,知行合一!stay hungry,stay foolish!
展开
-
如何在ES6的class上实现私有属性
如何在ES6的class上实现私有属性原创 2023-04-04 16:58:47 · 1363 阅读 · 1 评论 -
web音视频播放器(html5)方案总结
webRTC,详解web音视频播放器在前端的体现,各种协议和方案对比,帮助大家更加了解H5音视频播放器的相关知识!原创 2022-08-06 10:45:02 · 6531 阅读 · 0 评论 -
React踩坑记录:Error: Minified React error #31;
根据react官网给出的提示,我们可以清晰的知道,这是由于我们代码书写的错误,导致react组件在render的时候,有一个孩子组件没有正确的返回react支持的数据结构,那么react组件支持render函数返回什么呢?很明显字符串、JSX和数组都可以,于是我们去排查代码。很明显,是react框架爆出来的错,遇到这种问题,别慌,先去看对应的介绍,先打开它提示的这个网址去看看啥情况,于是我们点开。的缩写,由于我们在这里返回了一个对象,所以导致了react框架报出了这个错误,所以,我们只需进行更改就好了。..原创 2022-07-29 10:31:19 · 15009 阅读 · 0 评论 -
yarn ignore-engines
yarn ignore-engines是用于修复node版本不兼容的命令配置本质上是忽略引擎版本检查主要用于在install过程中的版本过低提示翻译 2022-03-08 10:04:18 · 1856 阅读 · 2 评论 -
postcss简介
前言css预处理器在目前的开发中是很受欢迎的,但是它们也有一些缺点。在今天的介绍中,我们将探讨postcss的优势以及它是如何工作的,还有其一些丰富而且实用的插件。css预处理器的价值和局限性大多数CSS开发人员都非常熟悉css预处理器,像sass、less、stylus等,以及伴随着这些预处理器出现的一些概念,比如file partials, nesting, variables 和 mixins等。随着css的发展,预处理器的一些功能正在渐渐的被原生css所实现,但是还有大量非常实用的功能对于开发原创 2022-01-22 14:35:48 · 3747 阅读 · 1 评论 -
react+typescript正确的开发姿势之正确使用hooks之useReducer
在react + typescript项目中正确使用useReducer我们在Home页面增加一个组件Counter,用来保存一个数值count,来记录点击按钮的次数,如下:// Counter.tsximport React, { useReducer } from 'react'type StateType = { count: number;}type ActionType = { type: string; payload: number;}const原创 2022-01-22 14:33:50 · 1571 阅读 · 0 评论 -
react+typescript正确的开发姿势之正确使用hooks之useState
写在前面要想在react + typescript 项目中正确的使用 hooks ,请务必掌握泛型的使用,关于泛型的讲解,我在上一篇博文中详细的进行了介绍,如果你还不了解 typescript 中的泛型请看上一篇:正确认识typescript中的泛型。如何结合typescript正确使用hooks在react中使用函数式组件,难免会使用到hooks,hooks赋予了函数式组件可以像 class 组件那样拥有状态的能力,那么如何结合typescript正确的使用hooks呢?在react + type原创 2022-01-22 14:31:56 · 1757 阅读 · 0 评论 -
JavaScript原型之对象属性设置与屏蔽
前言JavaScript和面向类的语言不同,在ES6出现之前,它其实并没有类来作为对象的抽象模式,所以在描述对象中不免会遇到一个特别的词语,没错就是原型prototype,今天我们讨论的主角也是它,今天我们就来讨论JavaScript原型中的冰山一角。三道面试题让我们先来看三道面试题,慢慢的打开你的视野:先列出三道题目都会用到的对象objProto:const objProto = {}// 题目一objProto.a = 23const obj = Object.create(objPr原创 2021-12-21 10:14:19 · 793 阅读 · 0 评论 -
JavaScript归并排序
定义归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的一种有效的排序算法,效率为O(nlogn)。1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。算法逻辑思想采用分治法:分割:递归地把当前序列平均分割成两半。集成:在保持元素顺序的同时将上一步得到的子序列集成到一起(归并)。归并操作归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操原创 2021-12-18 19:16:09 · 303 阅读 · 0 评论 -
JavaScript快速排序
定义快速排序(英语:Quicksort),又称分区交换排序(partition-exchange sort),简称快排,一种排序算法,最早由东尼·霍尔提出。在平均状况下,排序 n 个项目要 O(nlogn) 次比较。在最坏状况下则需要 O(n^2) 次比较,但这种状况并不常见。事实上,快速排序 (nlogn) 通常明显比其他算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地达成。算法逻辑思想快速排序使用分治法(Divide and conquer)策略来把一个序列(lis原创 2021-12-18 20:04:01 · 146 阅读 · 0 评论 -
Javascript错误捕获
Javascript错误捕获同步代码错误捕获try,carchPromise错误捕获unhandledrejection总结同步代码错误捕获try,carch try { const a = 1, b = 2 let c = a + b } catch(err) { console.error(err) }Promise错误捕获unhandledrejection new Promise((resolve, reject) => { reject(3) }) win原创 2021-11-18 23:44:12 · 1039 阅读 · 0 评论 -
手写new
想要实现new操作符,首先得知道new操作符干了哪些事情:第一、new操作符会创建一个对象并返回,且此对象的__proto__等于此函数的原型prototype(这里需要注意__proto__和prototype的区别和联系,原型prototype是函数才有的,务必记住,而__proto__可以理解为对象的某个属性,此属性指向对象的构造函数的prototype,是不是很绕。举个例子);比如,new函数A创建了对象a,则a.proto = A.prototype,代码如下:function A(age原创 2021-09-18 11:35:45 · 129 阅读 · 0 评论 -
vue踩坑之eventBus.$on多次触发的问题
记录一下自己使用vue踩过的坑,希望别人看到能避免如此踩坑。先描述问题:假设有两个非父子组件A和组件B,组件A的data中绑定的某个值变化时,通知组件B需要做某些操作,代码如下:// 组件Athis.value = 1eventBus.$emit('getSomething', this.value)// 组件Bcreated() { eventBus.$on('getSomething', val => { console.log(val) })}我们会发现,当组件A已原创 2021-07-13 15:26:01 · 5085 阅读 · 0 评论 -
JavaScript算法系列--leetcode合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1: 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4]示例 2: 输入:l1 = [], l2 = [] 输出:[]示例 3: 输入:l1 = [], l2 = [0] 输出:[0]首先先给出链表节点ListNode的节点定义,如下:/** * Definition for singly-linked list.原创 2021-05-24 11:30:04 · 136 阅读 · 0 评论 -
JavaScript算法系列--leetcode搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1: 输入: [1,3,5,6], 5 输出: 2示例2: 输入: [1,3,5,6], 2 输出: 1示例 3: 输入: [1,3,5,6], 7 输出: 4示例 4: 输入: [1,3,5,6], 0 输出: 0方法一:(当初没看到条件是排序数组,想复杂了) /** * @param {nu原创 2021-05-24 11:19:37 · 103 阅读 · 0 评论 -
JavaScript算法系列--leetcode移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参作任何拷贝int l原创 2021-05-20 18:13:14 · 99 阅读 · 0 评论 -
JavaScript算法系列--leetcode整数转罗马数字
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况原创 2021-05-20 17:21:31 · 157 阅读 · 0 评论 -
JavaScript算法系列--leetcode罗马数字转整数
罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列的 1。12 写做XII,即为X+II。 27 写做XXVII, 即为XX+V+II。通常情况下,罗马数字中小的数字在大的数字的右边.原创 2021-05-17 16:33:51 · 153 阅读 · 0 评论 -
css居中大全集
在实际开发过程中,我们会碰到很多需要用到水平垂直居中的场景,为了方便大家的开发,特此做下总结和记录。话不多说,进入正题(温馨提示:以下所说的居中是相对于父盒子而言)。1.父盒子使用flex布局控制子盒子水平垂直居中例如:html部分: <div class="parent"> <div class="son"></div> </div>css部分: .parent { he原创 2020-11-24 11:56:00 · 135 阅读 · 0 评论 -
JavaScript算法系列--leetcode两数相加(链表)
给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807解法如下: /** * @param {Lis...原创 2020-06-28 15:45:12 · 871 阅读 · 0 评论 -
JavaScript算法系列--leetcode最长回文子串
给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"实现如下: /** * @param {string} s * @return {string} */ var longestPalindrome = function(s) { if (!s.length) return...原创 2020-05-21 16:29:34 · 254 阅读 · 0 评论 -
Git常用操作大全
什么是Git?Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。下面我们说一说Git常见的操作git config 常用配置 配置邮箱和用户名 全局配置git config --global user.name "your name"git config --global user.email "xxx@xxx.com"单个项目配置(先进...原创 2020-03-11 15:50:47 · 259 阅读 · 0 评论 -
JavaScript算法系列--leetcode多数元素
给定一个大小为n的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入: [3,2,3]输出: 3示例2:输入: [2,2,1,1,1,2,2]输出: 2实现如下: /** * @param {number[]} nums * ...原创 2020-03-09 19:34:35 · 310 阅读 · 0 评论 -
JavaScript算法系列--leetcode只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 4实现如下: /** * @param {number[]} nums * ...原创 2020-03-09 18:20:45 · 196 阅读 · 0 评论 -
JavaScript算法系列--leetcode 2的幂
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例1:输入: 1输出: true解释: 20= 1示例 2:输入: 16输出: true解释: 24= 16示例 3:输入: 218输出: false实现如下: /** * @param {number} n * @return {boolean} */ ...原创 2020-03-09 18:18:32 · 165 阅读 · 0 评论 -
JavaScript算法系列--leetcode整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231, 231− 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。实现如...原创 2020-03-09 18:12:54 · 166 阅读 · 0 评论 -
JavaScript算法系列--leetcode最大子序和
给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。实现方案如下: /** * @param {nu...原创 2020-03-09 18:02:09 · 198 阅读 · 0 评论 -
JavaScript算法系列--leetcode爬楼梯
假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定n是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. ...原创 2019-12-20 10:46:21 · 287 阅读 · 0 评论 -
JavaScript算法系列--leetcode除自身以外数组的乘积
给定长度为n的整数数组nums,其中n> 1,返回输出数组output,其中output[i]等于nums中除nums[i]之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]说明:请不要使用除法,且在O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的...原创 2019-12-20 10:43:14 · 255 阅读 · 0 评论 -
JavaScript算法系列--leetcode螺旋矩阵Ⅱ
给定一个正整数n,生成一个包含 1 到n2所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]解法如下: /** * @param {number} n * @return {number[][]} */ var generateMatr...原创 2019-12-10 19:44:07 · 310 阅读 · 0 评论 -
JavaScript算法系列--leetcode螺旋矩阵
给定一个包含mxn个元素的矩阵(m行,n列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例1:输入:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例2:输入:[ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12]]输...原创 2019-12-06 17:56:24 · 337 阅读 · 0 评论 -
JavaScript算法系列--leetcode盛最多水的容器
给定n个非负整数a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画n条垂直线,垂直线i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且n的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(...原创 2019-12-04 10:32:56 · 219 阅读 · 0 评论 -
JavaScript算法系列--leetcode最接近的三数之和
给定一个包括n个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).解法如下: /** ...原创 2019-12-03 17:00:44 · 302 阅读 · 0 评论 -
JavaScript算法系列--leetcode三数之和
给定一个包含n个整数的数组nums,判断nums中是否存在三个元素a,b,c ,使得a + b + c =0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]解法如下: ...原创 2019-12-03 15:21:37 · 253 阅读 · 0 评论 -
JavaScript算法系列--leetcode字符串相乘
给定两个以字符串形式表示的非负整数num1和num2,返回num1和num2的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例2:输入: num1 = "123", num2 = "456"输出: "56088"说明:num1和num2的长度小于110。 num1和num...原创 2019-12-03 10:22:18 · 367 阅读 · 0 评论 -
git将某分支的某次提交合并到别的分支
目录1.使用命令行2.使用图形化工具Sourcetree今天我们来学习一下git,git在我们进行代码托管时的首选,所以了解并学会使用git是每个开发人员的必备技能。在进行代码开发的时候,有时需要把某分支(比如dev分支)的某一次提交合并到另一分支(比如hotfix分支),这就需要用到git cherry-pick命令。1.使用命令行首先,切换到dev分支,敲 git lo...原创 2019-11-29 10:16:04 · 2657 阅读 · 0 评论 -
JavaScript算法系列--leetcode反转字符串中的单词 III
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例1:输入: "Let's take LeetCode contest"输出: "s'teL ekat edoCteeL tsetnoc"注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。解法: /** * @param {string} s...原创 2019-11-27 19:43:19 · 215 阅读 · 0 评论 -
JavaScript算法系列--leetcode合并两个有序数组
给定两个有序整数数组nums1和nums2,将nums2合并到nums1中,使得num1成为一个有序数组。说明:初始化nums1和nums2的元素数量分别为m和n。 你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存nums2中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 ...原创 2019-11-25 09:23:58 · 267 阅读 · 0 评论 -
sass小结《一》
目录1.变量1.1变量声明与使用1.2变量名用中划线还是下划线分隔2.嵌套规则2.1父选择器的标识符&2.2子组合选择器和同层组合选择器:>、+和~2.3嵌套属性1.变量sass使用$符号来标识变量。1.1变量声明与使用sass变量的声明和css属性的声明很像:$highlight-color: #F90;任何可以用作css属性值...原创 2019-11-22 15:51:15 · 131 阅读 · 0 评论 -
JavaScript算法系列--leetcode有效的括号
给定一个只包括'(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: false示...原创 2019-11-21 09:51:14 · 281 阅读 · 0 评论