初步认识Backbone.js
作为一个轻量级MVC框架,如果是与后端交互比较频繁的站点使用这个框架,其效果是很显著的。从我个人角度而言,这个框架适合微博这类的实时性比较强并且牵扯用户信息比较多的网站,据说豆瓣的阿尔法城也是用这个框架做的。
如果从它的原理出发,我觉得是模仿或抄袭了ActionScript的PureMVC框架,但又有自己的特点,因为它融合了HTML DOM的特征,这点从它视图的events中可以看出。框架应该是从event配置中,寻找了事件后的选择器,然后把该事件绑了上去。参数传递无非就是apply或call,不出其右。
- window.EmployeeView = Backbone.View.extend({ tagName : <script type="text/template" id="item-template"> <td><%= eid %></td> <td class="username"> <div class="display"><%= username %></div> <div class="edit"><input class="username" name="username"></input></div> </td> <td class="sex"> <div class="display"><%= sex=="1" ? "女":"男" %></div> <div class="edit"> <select name="sex" class="sex" style="width:45px"> <option value="0">男</option><option value="1">女</option> </select> </div> </td> <td class="age"> <div class="display"><%= age %></div> <div class="edit"> <input class="age" name="age"></input> </div> </td> <td class="position"> <div class="display"><%= position %></div> <div class="edit"> <input class="position" name="position"></input> </div> </td> <td> <a href="#" class="del">删除</a> </td> </script>
它的缺点也很明显,因为页面更新全依赖于JSON,如果禁掉JS,或者这些JS与浏览器中的某些插件起冲突,其后果也是很明显的,对于银行等这类需要考虑JS禁掉情况的站点来说,是不合适的。另外对于不需要M或C的单个页面来说,用这个有时反倒多余,很多API用不上。因此这个得看情况使用,如果全部页面都使用这个框架,则不太合理。尤其是手机网站,在中国这个流量比较贵的国度,页面上不用的代码最好不要有。