URI-Scheme
Universal-Links
Intent
iOS
Android
12/24 2017
Deep Linking 只是一个概念,
是指通过一个链接进入另一个网站/App,并直接浏览其内部的某个页面。
Deep Linking 给用户带来的是非常顺滑的浏览体验,尤其在 Web 世界中 Deep Linking 的实现非常容易。
但如果要进入 App 并定位到对应的页面则较为困难,URI Scheme, Universal Links, Android App Links, 以及 Chrome Intent 都是为了解决从 Web 页面 Deep Linking 到 App 而做的尝试。
本文从 Web 一侧的视角总结调起 App 的各种实现方式,能达到的效果,以及对应的兼容性问题。
HTTP
URL
路由
12/03 2017
URL 是 Web 三大基石之一,在 Web 开发、运维和使用过程中随处可见。
而且在 Web 开发中遇到的第一个设计问题,可能就是 URL 的设计。
在很多 MVC 架构下的开发者眼中它的作用却只是路由到一个控制器,这正是一切罪恶的开端。
Git-Workflow
Git
重构
12/01 2017
在 基于 Git/npm 的开发流程实践 中提到,
Git 所做的不仅仅是同步文件,它更是一种编写和组织代码的方式。
我们知道 Commit Message 是每次 提交代码 时的附加信息,
为什么 Commit Message 是一个问题呢?
设想这样一个场景:你发现一个最近上的功能有 Bug,
现在要马上回滚到上那个功能之前。但当你打开 git log 时看到了这样一幅场景:
Git-Workflow
Git
Github
NPM
测试
编译
版本
11/30 2017
如果说 SVN 改变了人们同步代码的方式,那么 Git 改变了人们写代码的方式。
在 Harttle 看来 Git 基于 commit 的管理机制让开发者可以管理每一份代码变更,
而分支、合并、衍合等 Git 操作则使得这些变更可以随意拼接,
甚至可以把昨天的一个改动拼接到今天的改动之后。
这透露了 Git 对开发过程是有观点的,而非仅仅是同步代码。要遵循这些观点才能用得顺手,
比如明确地细分每个特性(Commit)、组织这些特性所在的线条(Branch)、合入功能或版本(Merge)。
本文以开发一个 NPM 的包的场景来介绍如何高效地使用 Git。
Bash
Session
Tmux
11/24 2017
Harttle 此前介绍过 Tmux 的使用 ,我们知道 Tmux 可以把所有打开的 Shell 都保存在服务器。
你的 Terminal 重启不会丢失任何东西,但 Server 重启后 Session 会全部丢失。
如果你像 Harttle 一样在开发 PC 本地运行 Tmux Server 的话,每次开机后都需要重新建立各种会话和窗格。
本文介绍一个 Tmux 插件:tmux-resurrect ,
可以一键保存当前 Tmux 状态,包括 Session、Window、Pane 布局,甚至 Vim 状态也可以恢复。
如果你更偏向 The Hard Way,可以参考 恢复 TMUX 工作区 - The Hard Way ,手动完成一切初始化工作。
BDD
Mocha
Node.js
测试
Ramdisk
10/30 2017
在 利用 Mocha 进行 BDD 风格测试 中介绍了
Node.js 下如何做单元测试,要确保软件的质量我们还需要 e2e 测试,
确保整个系统在真实场景下能够正常工作。
End-to-end testing involves ensuring that the integrated components of an application function as expected. The entire application is tested in a real-world scenario such as communicating with the database, network, hardware and other applications. – techopedia
本文 Node.js 的命令行程序(CLI)为例,介绍如何测试一个可执行程序的输入输出以及文件修改。
样例代码可参考 APM 的 e2e 测试代码 。
MVVM
异步渲染
路由
兼容性
pushState
popstate
10/28 2017
从别的角度出发,客户端渲染有很多其他名字比如前端渲染、前端异步、前端 MVC。
今天的 Web 稍有交互的站点都会做一套前端渲染,从早期的 Backbone,AngularJS 1.0,
到现在的流行的 Vue,React。基于这些技术做 MVVM 的同时甚至可以完成服务器端渲染。
但浏览器的客户端渲染(也就是前端 MVC)仍然存在不少限制,这些限制都是前端渲染绕不过的问题。