从异步说起 我们知道,JavaScript是单线程的。JavaScript设计成单线程的原因,是因为最初它就是为了浏览器操作DOM的而生的,而单线程恰恰能保证页面的上的DOM操作是可预期的。 为了防止线程长时间被某项任务所阻塞,JavaScript设计了一种事件循环(Event Loop)的机制,这种机制可以将某些需要占用较长时间的任务完成后所要做的任务放入一个异步队列中,等待所有同步任务完成后再去执行异步任务,这也就是所谓的回调函数的由来。 下图是一个事件循环的示意图: 异步任务有哪些类型? 任务队列中的异步任务

JavaScript
2022-01-09
136

Vue2的数据响应式是基于Object.defineProperty开实现的,因此我们要先学习这个方法。 Object.defineProperty()方法 Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。 兼容性 先来看看兼容性,Object.defineProperty是ECMAScript 5 新增的语法,IE9 开始完全兼容,基本上2011年后主流的浏览器都支持该语法。 使用方法 let obj = {}; Object.def

Vue
2021-08-23
399

Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。 Flex布局的基本概念 采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器";它的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称"项目"。 容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。 主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cro

CSS
2021-05-27
356

JavaScript模块化开发,早期会使用CommonJS或者AMD标准进行开发,但从ES6开始确定了原生支持的模块化标准。本文主要探讨CMD模块化开发和ES模块化标准的使用差异。 CommonJS模块化 CommonJS模块化运用于Node.js开发中,使用require和exports语法来输入和输出。 例如,我们输出a变量和func函数: exports.a = 1; exports.func = function(){ console.log("hello!") } 那么输入语法可以这样写: var cmd

JavaScript
2021-05-21
378

为什么需要 WebSocket? HTTP 协议做不到服务器主动向客户端推送信息,只能由客户端向服务端主动发起请求来拉取信息。这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦。我们只能使用"轮询",即每隔一段时候,就发出一个询问,了解服务器有没有新的信息。最典型的场景就是聊天室。但是,轮询的效率低,非常浪费资源(因为必须不停连接,或者 HTTP 连接始终打开)。因此,工程师们一直在思考,有没有更好的方法,WebSocket因此而被发明。 Websocket的特性 建立在 TCP 协议之上

JavaScript
2021-05-11
393

本文将讨论如何使用cloudflare推出的workers边缘计算功能来代理B站视频。 从B站iframe视频嵌套说开去 笔者的几个网站经常需要引入一些B站视频来丰富网站内容。虽然B站默认为我们提供了iframe嵌入代码来方便将视频插入自己的页面中,但是缺点是iframe页面所需要加载的js文件多而庞大,而且视频的小小的封面图片居然没有做任何的压缩处理,光是加载完框架就要用去了2MB流量,渲染的内容也特别多,在网络环境不佳的情况下会严重拖慢我们页面整体加载速度。那么,如果我们能解析出B站视频地址直接加载不就好了吗?

服务器运维
2020-02-23
4490

新浪图床由于其国内外CDN节点多速度快,笔者在很长时间都在“借用”新浪的图床作为图片CDN来加快我的页面加载。虽然说新浪在2019年中已经封杀了其图床外链,例如ww1,wx1等图床域名使用非新浪网页的referer访问都会直接返回403错误,但是目前仍然留下了tva1之类的第三方头像调用域名可以外链。而实际上只要将已上传的图片的wx1这些已经被禁外链的域名修改为tva1,图片就又可以被正常外链访问了。 笔者还发现了一些新浪图床的图片裁剪API,通过修改域名后的裁剪参数值,即可生成不同尺寸的图片。这样我们就可以根据网

服务器运维
2020-02-17
2222

无限制全自动dd安装Windows 突破没有VNC,没有救援模式,内存比dd包小的限制. 使用Debian Live CD中的busybox做中间媒介,经过复杂的处理, 使本机的网络参数传进Windows操作系统中, 即使没有DHCP能够让Windows获取网络参数, 也能让Windows操作系统在开机的第一时间能够连通网络. 使用脚本 wget --no-check-certificate -qO InstallNET.sh 'https://moeclub.org/attachment/LinuxShell/I

服务器运维
2019-12-25
2547

对于很多站长来说,当网站流量大了以后我们会考虑使用CDN来缓解带宽压力,而作为入门的免费CDN成为很多草根站长的首选。现在有不少商家提供免费CDN,例如百度云加速(每日10GB),奇安信(不限流量),腾讯云(每月10GB),cloudflare(仅海外节点)等等。而作为免费CDN提供商的百度云加速,因国内节点多免费流量大而深受广大站长喜爱,但此前因免费版只支持http访问而使很多开启全站https的站长不得不放弃使用。不过好消息是从2019年11月份开始,百度云加速全新改版,免费版也开始支持https了! 百度云加

服务器运维
2019-11-04
2695

近期笔者想将手上的一个网站进行速度优化,最先想到的方法是动静分离,即将图片等静态文件使用CDN网络进行加速。由于网站针对的是全球的用户,CDN服务需要同时兼顾国内与国外,这一点必须要在我的考量范围内。目前提供CDN服务的商家很多,例如国内的七牛云、Ucloud、阿里云、腾讯云等,国外的Cloudflare。 其中Cloudflare是世界上最大的免费CDN提供商,同时提供了免费的https服务和无限DDOS等各种防护功能,对于国外加速效果显著。但是免费版本不提供国内CDN服务器,对国内加速效果并不理想,甚至会拖慢网

服务器运维
2019-07-08
6669
加载更多
SuperTyler
Tyler同学的个人博客