简介
一般常见的Web页面的结构会由3部分组成:
- 模板html(因工程而异,一般需要跟后端配合,最终是渲染成html
- 样式css(一般由less或sass编译而来
- 脚本javascript(大部分原生Javascript,其它会用coffeescript,typescript,或者是ES6+转换器等之类转换而来
Web工程演变
起先,最简单的一个web页面开始,就是一个html,然后css和javascript都是直接写在html,
这时的页面组成:
- html
然后,css和javascript开始增多,就把css和javascript分成单独的文件,通过link标签和script引入
- 一个html
- 几个css
- 几个javascript
最后,html,css,javascript越来越多,越来越复杂,尤其是在多人开发的情况下,这简直是噩梦。
这个时候常做的事情就是按功能,按模块划分,剥离出公共的模板、样式、javascript库,
这个时候一个Web页面的组成成分就会是这样:
- 公共的模板(头部,底部,悬浮操作栏等
- 组件的模板(如翻页,弹框等
- 业务功能的模板
- 公共的样式或变量(需要less或sass
- 组件的样式
- 业务功能的样式
- 工具库javascript(如jquery及其插件,各种polyfill,以及其它组件等)
- 工程架构型的javascript(如angular,react及其插件等,
- 具体业务逻辑的javascript
围绕的最后的情形,各个开发者则根据自己的方法来构建自己的工程
或者直接依赖现有的工具,如yeaoman
回归正题
吐槽对象为一个用yeoman构建的工程,基于compass和requriejs,jquery
在css方面,
居然是所有的页面都是使用同一个css文件,构建工具居然是把工程下所有的scss文件都编译至一个文件,
@import 'style1';
@import 'style2';
@import 'style3';
...(以下省略一串)
然后所有的模板都引用这个文件,这导致
- 命名的冲突
- 更改scss都需要重新编译并汇总(这个过程预估是秒级别),这导致是grunt lreload的自动刷新简直形同虚设。
在js方面
使用requirejs加载模块,那么诡异的地方在于,居然是所有的第一级的页面都引入了main.js,在main.js内部判断页面的类型,再加载相应的模块。
其次是各种jquery插件,jquery的插件通常都是挂在$对象下,所以当你想要使用某个插件,只要引入jquery和该插件的js。
那么在这里jquery插件是如何使用的呢?居然是一次性全部加载进来
//libs.js
define(['jquery','addOne1','addOne2',...(省略一长串)],function($){
return $
})
在程序初始化时,工程下的所有jquery插件都会被初始化。
然后到时候需要使用插件时,虽然只要引入一个libs.js即可,但是很明显非常多非常多的冗余。
end
剩余其它就懒得吐槽了,主要是针对其中各种冗余的代码,虽然问题不大,尤其是在现在的电脑性能下,多个几百KB基本不影响使用,但喔对于代码的大量冗余就是不爽。
作为一个前端的小菜,我一直认为程序猿,或说是工程师,使用各种的工具,应该是不断为了为了追求更快,更轻,更简洁的目标而努力的,不断的向其靠近,这样才能更快的成长起来。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。