阅读博客汇总
模块加载机制
JavaScript 模块化入门Ⅰ:理解模块 - 知乎 (zhihu.com)
模块打包构建
JavaScript 模块化入门Ⅱ:模块打包构建 - 知乎 (zhihu.com)
ES6模块和CommonJS, AMD一类规范最主要的区别是,当你载入一个模块时,载入的操作实际是在编译时执行的——也就是在代码执行之前。所以去掉那些不必要的exports导出语句可以优化我们应用的性能。
DNS解析过程
通过Wireshark抓包分析谈谈DNS域名解析的那些事儿 - 朱季谦 - 博客园 (cnblogs.com)
函数柯里化:三行代码实现 add(1)(2)(3) - 掘金 (juejin.cn)
const add = x => y => z => x + y + z ; console.log(add(1)(2)(3))
利用闭包的特性,将参数分批次、一一对应的传入原函数中去,并在收集完所有参数后执行最终函数得到结果。
简单实现
/* 这里参数可分两次传入 */
function curry(fn, ...initArgs) {
return function (...args) {
return fn(...initArgs, ...args)
}
}
function sum(a, b, c) {
return a + b + c
}
console.log(curry(sum)(1, 2, 3)) // 6
console.log(curry(sum, 1)(2, 3)) // 6
console.log(curry(sum, 1, 2)(3)) // 6
console.log(curry(sum, 1, 2, 3)()) // 6
HTTP 2
二进制;多路复用;头部压缩;允许服务器主动将响应"推送"到客户端缓存
React世界的函数式编程(Functional Programming) - 知乎 (zhihu.com)
TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。
- 防御 XSS 攻击
- HttpOnly 防止劫取 Cookie
- 用户的输入检查
- 服务端的输出检查
- 防御 CSRF 攻击
- 验证码
- Referer Check
- Token 验证
浙公网安备 33010602011771号