政府的项目吧,没啥说的,呵呵。
简单的说说模块化,网页越来越像桌面程序,需要一个团队分工协作、进度管理、单元测试等等......开发者不得不使用软件工程的方法,管理网页的业务逻辑。
Javascript不是一种模块化编程语言,它不支持"类"(class),更遑论"模块"(module)了。抄点阮一峰老师的段落 JavaScript模块化编程。
一个页面的js所需要的代码在main.js里,然后需要一个插件来辅助你的开发,当然简单的tab、slide、dropdown等小效果手写就不需要插件了,一是减小体积,二是简单的都不会写还做什么程序?重点回来了,所有引用的js都写在一个main.js里,另一个页面没有用到这些,而后端把js都配置到公共部分引入,然后问题就出来了,浏览器报错。jQuery($) is not dedined。查看源代码,发现jq库引入顺序出错,调好了,问题又来了,xx is not a function,原因是之前引用的插件,但init或者调用方法写在main.js里,所以报了一个错。最笨的方法就是放到插件最后。或者用seajs或者require.js等来做到依赖自动加载,异步模块定义。
有人若想问,为何不把调用方法直接写在HTML页面中,我想说,干干净净的HTML不好吗?
还有一点,团队的协调性在于前期通气沟通研讨,理论化的流程便是让各自都知道这个项目,互动的不仅仅是一个文档嘛。
以后的项目可能会越来越大,跨平台开发也会越来越多。如果还像以前一样刀耕火种的页面中加载各种插件一大堆,前后台各自加各自,页面也会打开的慢,各种插件的全局变量暴露出来,全局作用域下容易造成变量冲突,文件只能按照,开发人员必须主观解决模块和代码库的依赖关系。在大型项目中各种资源难以管理,长期积累的问题导致代码库混乱不堪。我相信最后妥协的一方永远是开发者。(本集完)
最后说一句,提前祝大家鸡年大吉吧。