为什么前端模块化?

一、为什么前端模块化?

举一个例子,稍微是前端公司(大部分是切图)。他会这么问你,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社区,和一些大牛博客。

http://yslove.net/seajs/

时间: 2024-10-12 09:31:06

为什么前端模块化?的相关文章

前端模块化

前端模块化 前端模块化 在JavaScript发展初期就是为了实现简单的页面交互逻辑,寥寥数语即可:如今CPU.浏览器性能得到了极大的提升,很多页面逻辑迁移到了客 户端(表单验证等),随着web2.0时代的到来,Ajax技术得到广泛应用,jQuery等前端库层出不穷,前端代码日益膨胀 这时候JavaScript作为嵌入式的脚本语言的定位动摇了,JavaScript却没有为组织代码提供任何明显帮助,甚至没有类的概念,更不用说模块(module)了,JavaScript极其简单的代码组织规范不足以驾

js前端模块化之加载器原理解析(一)

先来说一下前端模块化的价值:引用模块此处有详细的介绍,可以自行前往观看. 一.总结如下优点: (1)解决命名冲突(2)烦琐的文件依赖(3)模块的版本管理(4)提高可维护性(5)前端性能优化(6)跨环境共享模块 二.加载器的基本思路: 如何去定义我们的模块? 如何将我们定义的模块去合并? 我们想一下,如果我们正常的引用入js到页面我们需要做神马事情,是否是使用:<script type="text/javascript" src="xxx"></sc

前端模块化杂谈

Teambition是一家追求卓越技术的公司,我们工程师都很Geek,我们使用了很多新潮的,开源的技术.同时我们也贡献了很多开源的项目.我们希望能够把一些技术经验分享给大家.于是有了这个「创作随笔」.废话休说,「创作随笔」第一弹,来自我们的前端工程师寸志,谈一谈他在前端模块化开发方面的一些感想. 在模块化方面,Node.js就显得游刃有余. 作为用户,我们把代码放到一个个JavaScript文件中,然后Node.js就有一套规则帮我们把这些代码组织起来,Node.js还有包的概 念,于是我们就可

前端模块化开发的价值

本文发表在<程序员>杂志 2013 年 3 月刊,推荐购买. 前端模块化开发的价值 随着互联网的飞速发展,前端开发越来越复杂.本文将从实际项目中遇到的问题出发,讲述模块化能解决哪些问题,以及如何使用 Sea.js 进行前端的模块化开发. 恼人的命名冲突 我们从一个简单的习惯出发.我做项目时,常常会将一些通用的.底层的功能抽象出来,独立成一个个函数,比如 function each(arr) { // 实现代码 } function log(str) { // 实现代码 } 并像模像样地把这些函

前端模块化发展简史

前端发展日新月异,短短不过 10 年已经从原始走向现代,甚至引领潮流.网站逐渐变成了互联网应用程序,代码量飞速增长,为了支撑这种需求和变化,同时兼顾代码质量.降低开发成本,接入模块化势在必行.伴随这一变化的是相对应的构建工具的快速成长,或是为了优化.或是为了转义,都离不开这类工具. 所谓温故而知新,本篇回顾总结下前端模块化的发展历程及辅助工具.在回顾中可以更清晰的看到当前我们用的方案所处的位置,为什么会发展到这一步,目前模块化方案带来的优势等. 1. 没有模块化的日子 最开始 JavaScrip

前端模块化工具-webpack

详解前端模块化工具-webpack webpack是一个module bundler,抛开博大精深的汉字问题,我们暂且管他叫'模块管理工具'.随着js能做的事情越来越多,浏览器.服务器,js似乎无处不在,这时,使日渐增多的js代码变得合理有序就显得尤为必要,也应运而生了很多模块化工具.从服务器端到浏览器端,从原生的没有模块系统的`<script>`到基于Commonjs和AMD规范的实现到ES6 modules.为了模块化和更好的模块化,我们总是走在探索的路上. 但是这些实现模块化的方法或多或

前端模块化(CommonJs,AMD和CMD)

前端模块规范有三种:CommonJs,AMD和CMD. CommonJs用在服务器端,AMD和CMD用在浏览器环境AMD 是 RequireJS 在推广过程中对模块定义的规范化产出.CMD 是 SeaJS 在推广过程中对模块定义的规范化产出.AMD:提前执行(异步加载:依赖先执行)+延迟执行CMD:延迟执行(运行到需加载,根据顺序执行) 模块 函数写法 function f1(){ //... } function f2(){ //... } 模块就是实现特定功能的文件,把几个函数放在一个文件里

前端模块化方案:CommonJS/AMD/CMD/ES6规范

模块化的开发方式可以提高代码复用率,方便进行代码的管理.通常一个文件就是一个模块,有自己的作用域,只向外暴露特定的变量和函数.目前流行的js模块化规范有CommonJS.AMD.CMD以及ES6的模块系统.前端模块化的演进过程可以看看阮一峰老师的文章.本文主要介绍各规范下的模块化实现方式. 一.CommonJS Node.js是commonJS规范的主要实践者,它有四个重要的环境变量为模块化的实现提供支持:module.exports.require.global.实际使用时,用module.e

前端模块化开发学习之gulp&amp;browserify篇

 随着web应用的发展,前端的比重占得越来越多,编写代码从而也越来越复杂.而通常我们需要将不同功能或者不同模块的代码分开写,最后在html中一起加载,这样做是可以的,但是当你需要进行维护或者是二次开发的时候,你会觉得十分费劲,因为你不知道文件之间复杂的关系,所以我们需要利用一些插件来配合进行模块化的开发. 所谓模块化的开发,写过nodejs的人都知道,文件之间的依赖可以用require()实现,但是浏览器端是不支持这样的依赖形式的,而browserify却可以解决这个问题,再加上gulp这个强大

前端模块化:RequireJS

前言 前端模块化能解决什么问题? 模块的版本管理 提高可维护性 -- 通过模块化,可以让每个文件职责单一,非常有利于代码的维护 按需加载 -- 提高显示效率 更好的依赖处理 -- 传统的开发模式,如果B依赖A,那么必须在B文件前面先加载好A.如果使用了模块化,只需要在模块内部申明依赖即可. AMD规范 & CMD规范 说到前端模块化,就不得不提AMD规范(中文版.英文版)和CMD规范(英文版) 它们的区别: http://www.zhihu.com/question/20351507 http: