DIY 一个 Babel 插件
August 06, 2019Babel,是一个 JavaScript 的编译工具,它可以将 es6+语法的代码,转换为浏览器兼容的低版本的代码。它简直就是一个神兵利器,前端工程师拥有了它,就可以在项目中使用一些较新的 es 语法。笔者决定弄懂它,并实现一个自己的 Babel 插件。Babel 的工作原理,…
继续阅读 »Babel,是一个 JavaScript 的编译工具,它可以将 es6+语法的代码,转换为浏览器兼容的低版本的代码。它简直就是一个神兵利器,前端工程师拥有了它,就可以在项目中使用一些较新的 es 语法。笔者决定弄懂它,并实现一个自己的 Babel 插件。Babel 的工作原理,…
继续阅读 »跳表是基于链表建立多级索引的动态数据结构跳表的查询时间复杂度是 ,而单链表的查询时间复杂度是 跳表需要额外的内存空间存储索引,实现空间换时间动态插入,删除数据时,跳表需要维护索引大小平衡性,避免退化为单链表跳表是一种高效的动态数据结构,它是基于链表实现的。在遍历有序单链表中,需…
继续阅读 »在前端性能优化策略中,耳熟能详的手段有,雅虎 35 条军规,使用 cache,减少请求数量,使用cookie-free domain,critical asset,使用 CDN,Lazy load,PreLoad 等,这些手段其实主要都是围绕怎么样更快的拿到所需关键资源。当我们…
继续阅读 »基础数据结构,最基础的就只有两种,一个是数组,一个是链表。其他的数据结构都是在它们之上抽象出来的,比如,栈,队列,散列表,树,图等。数组在内存中是申请的一组连续的内存空间,在一些强类型语言中,初始化数组时是要事先指定数组大小和类型的,一旦完成,则数组大小和类型不可改变。我们常说…
继续阅读 »数据结构和算法,在程序员的知识体系中应该是占据非常重要的位置,特别是对于后端工程师。对于一个前端仔,确实很少用到复杂的数据结构和算法,更多的是与前端框架,项目配置,页面性能,浏览器兼容等打交道。前端技术飞速发展,前端框架层出不穷,现在很多人都感叹”学不动了”。为何会感觉学不动了…
继续阅读 »最近老板来了一个新需求,地理位置组团。其中一个功能点,就是用户可以进入地图页面,查看当前自身位置,且扫描圈内和圈外其他玩家,将玩家头像显示在地图页面上,标明玩家在哪个位置。老板说,在地图上要可以同时显示 200 个玩家头像,且保证页面流畅;Android6 的手机上,在拖拽,缩…
继续阅读 »好快,2018 没了。2018 年初计划是:去腾讯或者阿里 【没有完成】阅读 12 本书 【基本完成】写 12 篇笔记 【完成】学习 canvas 相关 【完成】学习 vue 相关 【完成】弄清楚 vue-cli 实现细节 【完成】弄清楚 Snabbdom 实现细节 【完成】弄…
继续阅读 »在跨平台客户端开发中,H5 是使用最为广泛的方式,它既可以运行在 iOS 中,也可以运行在 Android 中,还可以运行在 web 浏览器中,可以说是”write once, run anywhere”。但是,H5 最为人诟病的就是用户体验不如 native 流畅,特别是对于…
继续阅读 »最近想了解一下 React 和 Vue 框架分别在 virtual dom 部分的实现,以及他们的不同之处。于是先翻开 Vue 的源码去找 virtual dom 的实现,看到开头,它就提到了 Vue 的 virtual dom 更新算法是基于 Snabbdom 实现的。于是,…
继续阅读 »原因:在调用 play()时,现代浏览器返回的是一个 promise,对于执行失败的,会触发一个 Unhandled Promise Rejection,但是对于低版本的浏览器,调用 play()并不会返回一个 promise。解决:应该在调用 play()时做如下处理,增加对…
继续阅读 »