大型应用的javascript架构
目前很多网站基本没有明确的前端架构,大多是服务端渲染视图页,输出到浏览器,再配合一些js,来进行交互。
如果只是实现一些简单的效果,没有较复杂的逻辑,那么这种处理是合理的, 尤其是有了jQuery之类的利器,js代码写起来甚至有种随心所欲的感觉。
但一旦网站要改版,或者随着网站的发展,逻辑变得越来越复杂,或者为了更好的用户体验, js要承担更多的任务,这时如果维持现状不变,那js就会变得越来越臃肿,越来越难维护。
解决之道就是采用模块化编程,将页面分成多个模块,模块之间互相独立, 通过发布/订阅方式来进行模块间交互,从而使模块与模块解耦,也就是说移除一个模块不会对当前页面造成影响。
配合模板的话,可以让前端和后端程序员更高效地配合。 前端只负责数据的显示与页面的交互,开发时,可以拟造数据,而不需要服务端程序。 后端程序员也可以专注于提供更易用,稳定的接口,而不需要关心数据的展示。
yahoo的这个视频详细地阐述了前端模块化编程,大致摘录如下:
js架构的4个组成部分
- 模块(Modules)
- 沙箱(Sandbox)
- 应用(App Core)
- 类库(Base Lib)
模块就像孩子一样,他们需要遵守一些规则才能保证不会到处惹麻烦
模块必须在沙箱里,无论条件多么苛刻
模块不知道页面到底是怎样的,他们只知道沙箱
模块之间要解耦
模块的规则
-
管好自己
- 只能调用自己的或沙箱的方法
- 不要访问不属于自己的DOM节点
- 不要访问非内置全局变量
-
先申请,再使用
- 你需要的任何东西,要向沙箱提出申请
-
不要把玩具放得到处都是
- 不要创建全局变量
-
不要和陌生人说话
- 不要直接引用其他模块
沙箱要保证接口的一致性,模块调用时一定要有
模块只知道沙箱,其他的架构对模块而言是不存在的
沙箱就像一个安保员,知道哪些是模块可以调用的
沙箱的职责
- ...