常见跨域方式梳理

跨域是由于浏览器同源策略导致的,所以跨域只存在于浏览器端,非浏览器端不存在跨域问题,浏览器对跨域的请求、应答都能正常发送接收,只是浏览器在接收跨域应答时,将应答拦截了,所以我们需要一些额外的处理或设置让浏览器将跨域的应答返回给我们。常见的跨域处理方式有:jsonpCORSiframe + postMessageiframe + window.nameiframe + location.has...

Continue Reading →

浏览器渲染之回流(Reflow)与重绘(Repaint)

浏览器渲染流程浏览器渲染流程如下图所示:大概可以划分成以下几个步骤:通过HTML解析器解析HTML文本并构建DOM tree通过CSS解析器解析CSS样式表并构建CSSOM tree根据DOM tree 和 CSSOM tree 构建 Render treeRender tree 刚构建完后是没有元素节点坐标、尺寸大小等信息的,此时需要通过Reflow(Layout)进行布局处理,计算出...

Continue Reading →

N-Sum 问题

问题描述给定一个包含多个整数且排好序的数组 nums 和一个目标值 target,判断 nums 中是否存在 N(N>1) 个元素,使得 N 个元素之和与 target 相等?找出所有满足条件且不重复的N元组。解题思路通过递归降幂将 N-Sum问题 降幂到 2-Sum 问题,然后采用两边加逼的办法求解JavaScript 版本123456789101112131415161718192...

Continue Reading →

JavaScript之函数防抖与节流

函数防抖(debounce)函数防抖是指在函数调用动作触发n秒后才开始执行,n秒内若再次触发,则重新开始计时,再次等待n秒后才开始执行。如果n秒内不断触发,那就不断重新开始计时,一直等到有一个n秒内没有触发,才开始执行此函数。根据描述,我们可以用setTimeout来实现一个简单版的防抖函数第一版1234567891011/*** @ fn 回调函数 * @ delay 延迟时间 */fun...

Continue Reading →

基于 Docker 构建前端持续集成开发环境

本文将以一个标准的 Vue 项目为例,完全抛弃传统的前端项目开发部署方式,基于 Docker 容器技术打造一个精简的前端持续集成的开发环境。前置知识:CI(持续集成):阮一峰老师的关于 CI 的介绍Docker: Docker 快速入门目标:代码无需在本地构建只需将代码推上 Github ,自动构建 -> 部署版本易管理,可轻松回退版本现在开始进入主题第一步: 初始化 Vue 项目(使...

Continue Reading →

JavaScript 原型链与继承

原型对象无论什么时候,只要创建一个新函数,就会根据一组特定的规则为该函数创建一个 prototype 属性,这个属性指向函数的原型对象。默认情况下,所有原型对象都会自动获得一个 constructor(构造函数)属性,这个属性指向 prototype 属性所在的函数。12function Person(){}当我们用构造函数创建一个实例时,也会为这个实例创建一个 __pr...

Continue Reading →

JS 的正则表达式

正则表达式一种几乎可以在所有的程序设计语言里和所有的计算机平台上使用的文字处理工具。它可以用来查找特定的信息(搜索),也可以用来查找并编辑特定的信息(替换)。核心是 匹配,匹配位置或者匹配字符先简单的介绍一下语法基本元字符.: 匹配除了换行符之外的任何单个字符\ : 在非特殊字符之前的反斜杠表示下一个字符是特殊的,不能从字面上解释。例如,没有前\的'b'通常匹配小写'...

Continue Reading →

排序算法之堆排序

常见的内部排序算法有:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序等。这里主要介绍快速排序排序算法总览:堆排序不得不说说二叉树要了解堆首先得了解一下二叉树,在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。二叉树的每个结点至多只有二...

Continue Reading →

© 2020 GOYTH All Rights Reserved. 本站访客数人次 本站总访问量
Theme by hiero