在软件开发中,我们通常通过单元测试(Unit Test, UT)来确保编写的代码符合软件需求,UT也往往作为自动化集成的一部分存在于软件工程中。说来惭愧,笔者在过去的工作中没有写过UT,最近主动接受了为项目做UT的任务,以弥补这方面的经验不足。本文主要介绍使用Jest对TypeScript项目中异步代码做UT的一些实践。
Read more
数据驱动是Vue的核心思想之一,Vue官方也鼓励使用数据驱动思想进行开发,这样可以有效利用Vue的diff算法提升性能。拖拽是前端开发中一种常见的交互形式,本文介绍一种利用Vue的数据驱动特性和双向绑定能力实现的跨区域拖拽方案(兼容IE9+)。
Read more
在基于Vue构建大型应用时,不可避免地需要在不同层级的组件之间进行通信,Vue提供了props/event、event bus、Vuex、provide/inject等方式来实现组件间通信。本文将阐述一种基于provide/inject来统一管理组件库中各类弹窗组件的思路。
Read more
现在团队除了一些老项目,基本上已经完全切换到了Vue,我们也开发了自己的基础组件库VHTML。不过最近接手的一个项目是纯静态的,没有使用任何的构建或打包工具。但是设计师大大给出的设计稿沿用了基础组件库的设计风格,如果要用jQuery来实现,工作量将会很大,因此考虑在页面中引入Vue并使用VHTML的基础组件,从而大大缩短开发量。本以为像使用jQuery一样,简单的引入Vue之后使用就可以了,事实证明我还是too young too naive。就用这篇文章来纪念一下开发过程中踩过的各个坑。
Read more
Highcharts是一个优秀的数据可视化图表库,它具有很高的自定义度,只需要通过JSON对象进行配置即可。在最近的一个需求中要求区域图的填充必须为斜线,调研了一番之后发现Highcharts本身并不支持斜线填充,所幸highcharts提供了一个可以实现此功能的插件pattern-fill。本文简要分析pattern-fill的实现原理及使用方法。
Read more
我们都知道在Vue中,代码复用和抽象的主要形式是组件。但是在有些情况下,我们可能仅需要操作一些普通元素,这个时候如果也使用自定义组件会显得很笨重。因此,Vue允许注册自定义指令来实现一些简单的功能。本文将结合自定义指令on-scrollto来看看在Vue中是如何实现自定义指令的。
Read more
一直以来都没有彻底理解JavaScript的闭包特性及其使用,《JavaScript Ninja》中 闭包 一章是我读过讲解闭包的书籍或博客中,梳理的最清晰的,以此为基础整理了自己对闭包的理解。
主要内容
闭包是什么,如何工作? - 闭包的几个重要概念
闭包的使用
私有变量
函数回调
绑定函数上下文
偏应用函数
函数重载
立即执行函数
Read more
JavaScript作为一门动态性的面向对象的编程语言,其核心思想就是一切皆对象。为了深入理解JS面向对象的编程思想,本文总结了几种常见的创建JS对象的方法,比较了各自的优缺点以及使用场景。
参考书籍:《Javascript高级程序设计》(第3版)、《Javascript权威指南》
Read more