Introducing Plain Blog

The Plain Blog builder which emits zero client-side JavaScript. With minimal configuration, your blog will be fast and elegant. Although it emits no JavaScript to the the client-side, you can composite your page layout using React components, writing content in…

实现一个 JavaScript Sandbox

在某些项目中,特别是低代码平台、在线代码编辑器等,我们往往需要提供一个沙盒环境,让用户可以自行编写并运行 JavaScript 代码。这个沙盒需要提供一些平台内置 API…

多语言全文搜索

百度一下,你就知道;谷歌一下,你知道的太多了。 在工作中的一个项目里,我在文档系统 Docusaurus v2 之上实现了一个支持多语言的(针对中文文档有特别优化的…

编写一个 Chrome 开发者工具的扩展程序

在工作中的一个项目里,我们的前端框架建立在 Web Components 技术之上,每个界面都由数个到数十个 Custom Elements 组成。它们基于 Web 标准技术,因此开发者可以直接使用浏览器…

我的第一个 VS Code 扩展

在工作中的一个项目里,我们为静态声明式的配置文件(JSON)添加了一个在运行时处理动态数据的能力。 我们尝试在 JSON 的字符串中扩展了类似 JS 的模板字符串…

狂野澳大利亚

从太空俯瞰地球,有一块砖红色的大陆特别醒目,像一颗瑰丽的宝石镶嵌在我们的蓝色星球上。 突然有了兴致整理一下澳大利亚之行的文字。跳过瑰丽多彩的大…

编写良好的单元测试

“万物之始,大道至简” 本文尝试从简单的单元测试思想着手,探讨如何编写良好的单元测试。以下将主要基于 TypeScript, Jest, React, Enzyme 给出示例。关于单元测试的基本概念和重要性不在…

纯净新西兰

在太平洋的深处,有一片土地,它和最近的陆地相隔两千公里,从恐龙时代开始,八千万年来它与世隔绝,直到七百多年前,才第一次有人类涉足,而实际上人类是站在这…

一个模拟时钟的时间选择器 ClockPicker

最近开发的一个模拟时钟的时间选择器 ClockPicker,用于 Bootstrap,或者单独作为一个 jQuery 插件。 源代码托管在 GitHub 上: ClockPicker 最近项目中需要用到一个时间选择器,之前用到的 bootstrap-datetimepicker 在…

JavaScript 语法陷阱

码代码虽易,不出bug不易,且码且珍惜 没有一门编程语言是完美的,JavaScript 也不例外,它语法陷阱重重,防不胜防: 加号 "with" 分号自动插入 声明提升 "eval" 多行…

JavaScript 基于原型的面向对象

JavaScript 支持面向对象的编程风格。 对很多开发者来说,“JavaScript 面向对象”这句话听起来就是在扯淡,它连 class 都没有,你是在逗我吗? 事实上 JavaScript 确实支持面向对象,它通过原型来…

JavaScript 作用域和闭包

作用域的嵌套将形成作用域链,函数的嵌套将形成闭包。闭包与作用域链是 JavaScript 区别于其它语言的重要特性之一。 作用域 JavaScript 中有两种作用域…

JavaScript 特性

动态和函数式编程,是 JavaScript 的几个基本特性之一。动态让语言更加灵活和自由,函数式编程则是 JavaScript 的主要编程风格。 JavaScript 的另外几个重要特性,如作用域链…

用 Markdown 写作

Content is king. 比尔盖茨1996年关于互联网的论点 “内容为王”,我们花了十几年才充分体会到这几个字的智慧。 过去十年,基于 WYSIWYG (what you see is what you get) 的“所见即所得编辑器…