文章

requestAnimationFrame

更好的逐帧动画函数 — requestAnimationFrame 简介
从setTimeout谈JavaScript运行机制
requestAnimationFrame 动画接口
你需要知道的requestAnimationFrame
js动画—–setTimeout、setInterval、requestAnimationFrame
谈谈requestAnimationFrame的动画循环

requestAnimationFrame

SCSS

SASS基础教程

javascript运行机制

浏览器的渲染线程与JavaScript引擎线程是互斥的,这容易理解,因为JavaScript脚本是可操纵DOM元素,在修改这些元素属性同时渲染界面,那么渲染线程前后获得的元素数据就可能不一致了.在JavaScript引擎运行脚本期间,浏览器渲染线程都是处于挂起状态的,也就是说被”冻结”了.
浏览器模型定时计数器并不是由JavaScript引擎计数的,因为JavaScript引擎是单线程的,如果处于阻塞线程状态就计不了时,它必须依赖外部来计时并触发定时,所以队列中的定时事件也是异步事件.
JavaScript 运行机制详解:再谈Event Loop
Javascript定时器学习笔记
理解 JavaScript 的 async/await
async 函数的含义和用法

commonjs是同步的,为服务端设计的,不适用前端,所以有了使用define([依赖项列表],function(依赖项列表){})定义的 amd
通用模块定义(Universal Module Definition) ,即我们通常说的 UMD ,就是用来解决这个特殊问题的。本质上,UMD 是一套用来识别当前环境支持的模块风格的 if/else 语句。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// UMD 风格编写的 sum 模块
//sum.umd.js
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD
define(['add', 'reduce'], factory);
} else if (typeof exports === 'object') {
// Node, CommonJS-like
module.exports = factory(require('add'), require('reduce'));
} else {
// Browser globals (root is window)
root.sum = factory(root.add, root.reduce);
}
}(this, function (add, reduce) {
// private methods

// exposed public methods
return function(arr) {
return reduce(arr, add);
}
}));

在当前的JavaScript模块系统中,你必须执行代码,来找出什么是 导入 和 什么是 导出。这是 ECMAScript 6 与这些模块系统(注:指 CMD,AMD)决裂的主要原因: 通过将模块系统构建到JavaScript语言中,您可以在语法上强制执行静态模块结构。让我们先来看看这意味着什么,带来什么好处。

模块的静态结构,意味着您可以在编译时确定导入和导出(静态) – 你只需要看看源代码,你不必执行它,webpack的打包优化也依赖这一点。下面是两个 CommonJS 模块的例子,告诉你为什么 CommonJS 模块在编译时确定导入和导出是不可能的。在第一示例中,你必须运行代码才可以找出它导入的是什么:

安全

带你了解CSRF和XSS(一)
漏洞科普:对于XSS和CSRF你究竟了解多少
web前端安全主要会涉及以下几种

react

React key值的作用和使用详解
React沉思录
Redux深度揭秘

HTTP缓存机制

Cache-Control 在 HTTP 响应头中,用于指示代理和 UA 使用何种缓存策略)。比如:

  1. no-cache 为本次响应不可直接用于后续请求(在没有向服务器进行校验的情况下)
  2. no-store 为禁止缓存(不得存储到非易失性介质,如果有的话尽量移除,用于敏感信息)
  3. private为仅 UA 可缓存
  4. public为大家都可以缓存。
  5. must-revalidate 如果缓存过期,必须去源服务器进行有效性验证
    面试精选之http缓存

彻底弄懂 Http 缓存机制 - 基于缓存策略三要素分解法

HTTP缓存控制小结-IMWEB

HTTP Cache 为什么让人很困惑

使用 HTTP 缓存:Etag, Last-Modified 与 Cache-Control

面试

前端面试之道
收集的前端面试题和答案
【半月刊】前端高频面试题及答案汇总
【半月刊 2】前端高频面试题及答案汇总
前端进阶系列
最新前端面试题攻略
如何通过饿了么 Node.js 面试

其他

使用原生 JS 实现事件委托
EventTarget.addEventListener
Mutation Observer API
聊聊我对现代前端框架的认知
Daily-Interview-Question
系列专题
怎样防止重复发送 Ajax 请求?
使用JavaScript 写Web路由
web性能优化-预加载


git 用远程覆盖本地

1
2
git fetch --all
git reset --hard origin/master

深入浅出js

什么是 JS 原型链

ES6

let 声明会提升(hoist)吗

JS变量封禁大法:薛定谔的X

这是CommonJS模块和ECMAScript模块之间的关键区别,因为在评估包装函数时动态定义CommonJS模块的导出,因此ESM的导出是在词法上定义的。也就是说,ESM导出的符号是在实际评估JavaScript代码之前解析的。

1
<meta http-equiv="refresh" content="2;URL=http://www.lxxyx.win/"> //意思是2秒后跳转向我的博客