MVC vs MVP vs MVVM

先说一下本文讨论什么吧。主要讨论一下MV*的原理,以及MV*与JavaScript的结合。讨论常见的Framework的横向对比。所以,隐约觉得,又是一篇枯燥的长文。

为什么要写这么一篇文章?一年前毕业,正式成为一个全职的前端选手,了解到JavaScript中的MV*类的框架,不明觉厉,碍于水平限制一直没有过多了解。近几个月,断断续续用Backbone/Angular/Ractive写过一些小的Demo,使用之后的感觉是仿佛在按照Framework要求的API在拼凑,而对所谓的MV*的每一部分没有清晰的认识,最终结果是,使用过一段时间后很容易忘记API,忘记API之后它们就成了陌生的框架。当然这个问题与我使用的深度有很大很直接的关系,但同时我认为也与自身缺少对原理的认知有关系。所以,花了一些时间学习了一下原理,稍作记录。

Read more

Numbers in JavaScript

Mozilla开发者社区是我学习的重要途径,有一次逛到这个API看到Polyfill有几行代码:

The Unsigned Right Shift Operator
1
2
var list = Object(this);
var length = list.length >>> 0;

由于非CS的某野生专业出身,我对位运算符的了解比较模糊,大概能明白的只是list.length >>> 0list.length做无符号右移,而返回值是>=0的整数,但背后的运算过程,就不能说得清楚了。复习了一下相关知识,做个笔记。

Read more

Async JavaScript

最近看了一些JavaScript异步编程方面文章,也反复读了几遍薄薄的《Async JavaScript》。总结一下,供自己后续学习使用,并分享给大家。

首先,有几个问题。什么是异步编程/异步函数?异步函数和回调函数有什么关系?为什么异步编程经常与JavaScript同时出现?JavaScript中的异步函数的机制是怎样的?那么现在异步编程有什么解决方案?未来的JavaScript异步编程是什么样子?如果你对上述几个问题已经虽不至“如数家珍”但已是“一目了然”,那么再往下的内容就不适合你了。那么,我们开始吧~

Read more