从一个页面开关, 说说有限状态机

故事起源于最近看一位朋友在实现一个 播放/暂停 按钮时, 一些思路上的碰撞,于是整理出本文, 讲解一下如何用 有限状态机 使代码更简洁可靠.我们想实现上面这样的按钮交互, 先看看原版实现:$('#botton').on('click', function(){ if ( $(this).text() === 'OFF' ){ /...

gitlab-ci 坑后感与指北

本文的目的:最主要是备忘, 其次是分享疗效:并不能让你一下子掌握CI/CD, 这只是一个比较完整的解决方案,其他基础知识,自行补充.基调首先,这不是屠龙刀,不要奢望一篇文章可以走遍天下.这里只是提供一个具体的落地方案, 一个具体的技术选型.阶段1: 代码仓库关于 代码仓库, 本文选取的方案是 gitlabgitlab的搭建:以目前的情况来说, 推荐使用...

深究JS引用類型傳參

深究JS引用類型傳參先看一段代碼:var obj = { name: 'Tom' }; function foo (o) { o.name = 'Jack'; } foo(obj); console.log(obj); //{ name: 'Jack' } 是不是說明,在 foo 調用的過程中, obj是按引用傳參的呢?我們不妨再看一段...

记一次结构化数据的经历

0.背景故事的背景,是源于要为第三方提供一套接口,而这套接口又是依赖于其他内部数据API。这看起来好像有点平常,不过事情通常没有想象中那么顺利。这问题在于,内部的API接口,正在处于一个动荡的年代,结构说变就变。有时候可能只是属性名变了,有时候甚至整块数据都不见了。而对于一套给第三方用的接口,这是致命的。我们需要保持数据模型的绝对稳定性。1.有哪些需要...

总结一些最近写Command Line Tool 的一些心得

总结一些最近写Command Line Tool 的一些心得yargsnpm install yargs --save yargs是优雅地接受命令行输入参数的模块,功能非常强大且易用,免去了很多重复的工作,一段代码足以证明: const argv = require('yargs').argv; // argv 会自动接受所有输入参数 ,比如 de...