一、为什么前端模块化?
举一个例子,稍微是前端公司(大部分是切图)。他会这么问你,bootstrap的css文件是不是太大了?
其实这就是考虑模块化问题,如果你说webpack,答案出来。在浏览帖子中,有一部分人webpack,那requirejs和seajs有什么用?这类就是典型蛇精病(这话不是我说的)。requirejs是推广amd的产物,seajs是cmd的产物,node是commonjs的产物。
二、这些js技术诞生是解决什么问题?
前端性能问题
三、前端性能优化表现在哪里?
1.图片压缩
2.css压缩
3.js压缩
如果你知道前端四大金刚,grunt,gulp,webpack,borowserify(老早的Fis,最新的facdbook的yarn)。那就直接过。即使你不知道,用最蠢,最low的方法是,ctrl+v,ctrl+c去网上压缩。
然而你还是会发现文件足够大,在怎么压缩也是很大?以我个人经验55kb的css文件大小挺多压缩到40kb;在想想看,bootstrap的.min.css文件就140k。
四、那怎么处理css文件大的问题?
最初我想到用[email protected]的解决,将重复的使用sass模块单独放在css/template目录下,每个html页面建立一个对应的css文件,通过@import引入所学要的sass模块。
这是好办法,然而了sass生成css文件,是要叠加引入的文件。这样做虽然在浏览器每个页面css文件都保持最小,但是在服务器,会占据很大空间。
五、那要怎么做,在引入文件而不叠加文件?
所以出现了模块工具,当然最早出现,是在js方面,便有amd,即requirejs,culbrojs。requirejs出名,在github是10k的star。在后来出现seajs,也就是通常说的cmd,github是6.5k的star,作者是玉伯。
后来他们发现这样写,很low。于是便有webpack,通常情况,是和gulp或这grunt使用。暂时把webpack丢到一边。
六、cmd和amd是什么?
这里提供两个demo傻瓜是入门教程(资源真的不好找,有些人写的文档,根本无排版【基本判断这人压根没水平,根本不用看】,要么故意排版 ,排得是很花哨,实际上是很乱【技术不扎实】。英文排版就干净多,前提是要懂英文)。
seajs:http://blog.csdn.net/uikoo9/article/details/37990765
requirejs:http://www.ruanyifeng.com/blog/2012/11/require_js.html
我自己写的傻瓜是demo地址:https://github.com/LiangChengweb/requireSeaDemo
在资源学习方面requirejs比较好找,因为用的人多,社区活跃,资源就多,我以后主要选择requirejs,但了解必要seajs是比要。这就像你选择grunt还是gulp。
我的理解是这样的:
amd: 在未来某一天,项目来临之前,你提前做了一些工作,当项目真的要做,你可一少做些事情。但是你不可能确定你提前做的工作不是多余的,明明只是活动页面,我却用了整个框架(依赖前置,有点夸张)。
cmd: 是将所有的准备工作做好了,你说要做项目的时候,我就做,好处永远不会做提前做多余的事情,坏处永远没有提前做一些事情,干等着(就近依赖)。
虽然有些谬论,但意思就是那么个意思。
在说的重口味点,一个正房,一个小三。
说道这里,下面说的都是废话了,剩下就去看npm社区,github社区,和一些大牛博客。