技术最前端,专注 Web 技术学习与总结。JavaScript, JS, ES6, TypeScript, Vue, PHP, CSS3, Html5, Node, Git, Markdown 等技术文章。
第一次翻译外文,就拿这篇作为第一次练习。加上一些自己的理解并且做了些删减。
正文开始:
我的实践经验证明有两种好方法来学习一项新技术
自己重新实现这个项目
分析那些你所知道的技术概念是如何运用在这个项目里的
在一些情况下第一种方式很难做到。比如,如果你为了理解 kernel(linux内核)的工作原理而去重新实现一次它会很困难很慢。往往更有效的是你去实现一个轻量的版本,去除掉那些你没兴趣的技术细节,只关注核心功能。
第二种方法一般是很有效的,特别是当你具有一些相似的技术经验的时候。最好的证明就是我写的 angularjs-in-patterns
前端的视图层和数据层有时需要实现双向绑定(two-way-binding),例如 mvvm 框架,数据驱动视图,视图状态机等,研究了几个目前主流的数据双向绑定框架,总结了下。目前实现数据双向绑定主要有以下三种。
比较老的实现方式,有点像观察者编程模式,主要思路是通过在数据对象上定义 get 和 set 方法(当然还有其它方法),调用时手动调用 get 或 set 数据,改变数据后出发 UI 层的渲染操作;以视图驱动数据变化的场景主要应用于 input、select、textarea 等元素,当 UI 层变化时,通过监听 dom 的 change,keypress,keyup 等事件来出发事件改变数据层的数据。整个过程均通过函数调用完成。