requirejs的使用场景?模块开发?多人协作?
如果我写了3个模块,每个模块功能不太多,比如也就1000~2000行代码,也要用requirejs吗?a_module.js + b_module.js + c_module.js + require.js加载时间要比a.js + b.js + c.js长吧?优势体现在哪里?在开发时如何调试?不能用breakpoint, step in, step over了吧?
移动端的web开发,也适合用require.js吗?比如有的老Android机型,运行jQuery和原生javascript已经很慢了,再用requirejs岂不是更慢了?如果网速较慢,模块直接加载不起了。又回到了第一个问题,使用场景?从来没有人提起过??? 热炒技术???
老司机,求解答
模块化的目的是什么?一是让依赖关系更清晰,二是让模块更容易复用,三是让模块更容易维护,四是提供代码预处理。
在ES3/ES5时代,JS只是作为控制页面交互的辅助工具,在这个时代,人们对JS开发的印象就是在JS里写写代码,然后用script标签引入HTML。如果看到网上有好用的插件,好啊,又是一个个script标签。
日久天长,你的页面塞了一大片script标签,维护起来各种麻烦。你知道某个插件已经不用了,可是不知道改移除的是哪个标签,因为它们之间的依赖没有清晰的路线图,简直是牵一发而动全身。而且没有任何模块化规范,为了模块之间的通信,还制造各种魔幻般的全局变量。
为了解决这些问题,业界提出了各种模块化方案。AMD、CommonJS、UMD还有ES6 Module就是其中的方案。
题主所说的RequireJS,是对AMD的一种实现。但是,现在用webpack的人更多,如果借助babel,直接上ES6 module更好,毕竟后者是ECMA钦定的标准。直接可以享受ES6+语法开发。
至于开发的调试?以前怎么来,模块化之后就怎么来。我没觉得有什么区别。
再说题主所说的移动端,不知你有没有做过代码优化、合并、压缩工作,这其实也可以作为模块化工作的一部分,有了这些流程,反而更利于移动端优化吧。
最后再说,技术就是在热炒中进步的,试想当年不“热炒”AJAX、HTML5,现在的web开发将是怎样可怕的地步。有些东西没人提及,不是因为没人用,恰好相反,那是因为,它已经无处不在了。
当然,你也完全可以固守在ES3时代,用jQuery操作dom,用全局变量通信,用目测来管理依赖,顺序加载,不压缩,不合并。但是,需要注意一点,不要把项目做的太大,不要把页面做得太复杂,不要引用太多插件,不然,维护起来就像洪水猛兽,前人挖坑,后人遭殃。