Leonsux

Try Everything

模块化

为什么要有模块化? 项目庞大时,js文件多,变得不好维护 js文件作用域都是顶层,这会造成变量污染 js文件依赖问题,稍微不注意顺序引入错,代码全报错 CommonJS CommonJS 是一个更偏向于服务器端的规范。NodeJS 采用了这个规范。CommonJS 的一个模块就是一个脚本文件。require 命令第一次加载...

React 性能优化

避免不必要的组件更新。 将 props 设置为数组或对象 每次调用 React 组件都会创建新组件,就算传入的数组或对象的值没有改变,他们的引用地址也会发生改变,比如,如果按照如下的写法,那么每次渲染时 style 都是一个新对象 // 不推荐 <button style= /> // 推荐 const style = { color: 'red' } <butto...

防抖与节流

防抖与节流都是一种优化高频操作的手段。 比如在搜索框输入关键词时,如果不做处理,输入 “keyword” 会触发 7 次搜索,而实际上有效搜索只有最后一次。 节流(throttle): n 秒内只运行一次,若在 n 秒内重复触发,只有一次生效。 防抖(debounce): n 秒后在执行该事件,若在 n 秒内被重复触发,则重新计时。 节流 const throttled = (fn,...

网络安全

网络安全 XSS 攻击 跨站脚本攻击,将恶意脚本注入到页面中,例:<script>alert('warning')</script>。 XSS攻击有两种 一种是通过修改浏览器 URL 导致脚本被注入页面,这种一般会被 chrome 浏览器自动防御 另一种是通过输入框将脚本提交到后端并注入数据库,需要我们手动防御。前端后都需要对数据进行合理的转译。 cons...

事件循环

我们都知道 js 是单线程的,靠同步任务、异步任务来模拟实现多线程。 代码执行时,同步代码正常在主线程中执行,遇到异步代码(比如异步请求或者settimeout),则进入 Event Table(交给js的运行环境来处理,浏览器或者nodejs),并将其回调函数放入 Event Queue 中(当异步行为结束时,比如计时器倒计时结束后)。 主线程代码执行完后,会去 Event Queue...

this指向 & apply与bind重写

函数中 this 的指向 & 箭头函数中 this 的指向 如果调用者函数,被某一个对象所拥有,那么该函数在调用时,内部的this指向该对象。如果函数独立调用,那么该函数内部的this,则指向undefined。但是在非严格模式中,当this指向undefined时,它会被自动指向全局对象。 箭头函数中的 this,跟定义该函数时所在的执行上下文中的 this 指向...

带你搞懂 执行上下文 和 作用域

执行上下文(Execution Context) 每当 Javascript 代码在运行的时候,它都是在执行上下文中运行,用来跟踪记录代码运行时环境的抽象概念。 执行上下文的三种类型: 全局执行上下文 任何不在函数内部的代码都在全局环境中 一个程序只有一个全局执行上下文 全局环境会生成一个全局对象,在浏览器中为 window,this 会指...

LeetCode 刷题笔记【160. 相交链表】

题目 https://leetcode-cn.com/problems/intersection-of-two-linked-lists/ 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果...

LeetCode 刷题笔记【19. 删除链表的倒数第 N 个节点】

题目 https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ 给你一个链表,删除链表的倒数第 n个结点,并且返回链表的头结点。 示例 输入: head = [1,2,3,4,5], n = 2 输出: [1,2,3,5] 输入: head = [1], n = 1 输出: []...

为你的 GitHub 博客添加 GitTalk 评论系统

Gitalk 是一个基于 GitHub Issue 和 Preact 开发的评论插件。 先看一下最终效果,并且欢迎来体验:https://leonsux.github.io 添加授权 首先为我们的博客添加 GitHub 的登陆授权,点击头像到设置里找到新建授权 Settings -> Developer settings -> OAuth Apps -> ...