分类: JavaScript
webpack 4 快速搭建
理解 serverless 无服务架构原理[转]
一:什么是 serverless 无服务?
serverless 中文的含义是 "无服务器",但是它真正的含义是开发者再也不用过多考虑服务器的问题,但是并不代表完全去除服务器,而是我们依靠第三方资源服务器后端,比如使用 Amazon Web Services(AWS) Lambda. 计算服务来执行代码,那么 Serverless 架构分为 Backend as a Service(BaaS) 和 Functions as a Service(FaaS) 两种技术,Serverless 它是由开发者实现的服务端逻辑运行在无状态的计算容器中,它是由事件触发,完全被第三方管理的。
"理解 serverless 无服务架构原理[转]"继续阅读
浏览器与 Node.js 的事件循环(Event Loop)有何区别?[转]
前言
本文我们将会介绍 JavaScript 实现异步的原理,并且了解了在浏览器和 Node.js 中 Event Loop 其实是不相同的。
一、线程与进程
1. 概念
我们经常说 JavaScript 是单线程执行的,指的是一个进程里只有一个主线程,那到底什么是线程?什么是进程?
官方的说法是:进程是 CPU 资源分配的最小单位;线程是 CPU 调度的最小单位。这两句话并不好理解,我们先来看张图。
- 进程好比图中的工厂,有单独的专属自己的工厂资源。
- 线程好比图中的工人,多个工人在一个工厂中协作工作,工厂与工人是 1:n 的关系。也就是说一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线。
- 工厂的空间是工人们共享的,这象征一个进程的内存空间是共享的,每个线程都可用这些共享内存。
- 多个工厂之间独立存在。
"浏览器与 Node.js 的事件循环(Event Loop)有何区别?[转]"继续阅读
如何在 JS 代码中消灭 for 循环[转]
Edit: 在我入职第三家公司的第一天,看到代码库里面一堆的 for 循环,内心有些崩溃,于是做了一次技术分享,展示怎样在代码中避免 for 循环。这篇文章是那次分享的总结。本文并不完美,其中递归的部分其实不应该在生产环境中用的。之所以写出来了,主要是受这篇文章影响 Rethinking JavaScript: Death of the For Loop 我这篇文章重点其实应该是怎样用 reduce 和其它高阶函数,至于这些高阶函数底层用的是 while 循环还是 for 循环,都不重要,我们可以不在乎这些细节。在实际写代码的时候,只要被允许,我都会尽量使用 Ramda。
一、用好 filter,map,和其它 ES6 新增的高阶遍历函数
问题一:
将数组中的 falsy 值去除
const arrContainsEmptyVal = [3, 4, 5, 2, 3, undefined, null, 0, ""];
答案:
const compact = arr => arr.filter(Boolean);
"如何在 JS 代码中消灭 for 循环[转]"继续阅读
hasOwnProperty 会失效的场景
一、hasOwnProperty 是什么
hasOwnProperty()
返回 true
/ false
,判断对象自身属性中是否具有指定的属性。和 in
的区别是 in
会判断原型链上继承下来的属性。
"hasOwnProperty 会失效的场景"继续阅读
如何记录页面加载时间
节流和去抖的简单实现
一、节流
高频率的函数执行会给浏览器和服务器太大压力,设置一个间隔时间可以优化执行频率,记录上一次(初始)函数执行的时间,与此次执行时间比较;如果这个差值在设置的间隔时间内则定时执行,否则立即执行;如果在这个间隔时间内反复触发函数则无视。
"节流和去抖的简单实现"继续阅读
async-await 同时触发(等待)多个异步操作
使用 async-await
等待异步操作完成的时候,如果前后两个异步操作不存在依赖关系,同时触发应该是更好的方案。
"async-await 同时触发(等待)多个异步操作"继续阅读
使用事件委托提高性能
当需要在大量元素上绑定事件的时候,特别是在动态更新的元素上,这个绑定是既麻烦又消耗性能的一件事。比较好的做法是在它们共同的父级元素上绑定一个事件,在事件冒泡阶段触发相应的效果。这种把一个元素的响应事件函数委托给另一个元素的用法便叫事件委托。
"使用事件委托提高性能"继续阅读