requirejs主要是为了模块化开发,这样带来的好处不言而喻。但是分成多个js文件增加了请求数,那么就要用到合并压缩。合并压缩了原来的许多独立的js模块,那requirejs又是怎么冲压缩的文件中找到各个独立的模块进行加载的呢,感觉两者有点冲突,这个问题想了很久也假想了很多可能。在知乎上找到了一个回答,好像有那么点意思。

这个问题设计到多个概念词汇:
1:模块化开发;模块化开发无非是为了解耦和代码重用;期间的优势你如果不能理解说明你还没达到那个水平;
2:requirejs;requirejs在模块化开发中作为落地方案之一的技术框架,主要功能是按需加载依赖模块;所有的加载器无非是实现几个功能:(1:解析运行环境,解析主程序入口;(2:解析模块路径;加载模块代码并执行回调业务;所有类型模块加载器基本都会执行以上业务(amd,cmd,kmc……);在浏览器环境下的模块代码的加载跟在node环境下的模块代码加载的解析会有一些差异;
3:代码合并:在web前端静态文件上线之前必做的一个优化手段:减轻代码文件的体积,减少http请求;
减轻代码体积的手段就是压缩代码(俗称ugly),在node环境下有很多类似的工具库可以用;
减少http请求的手段一般就是代码合并;如将a和b的代码放到一个js文件里面去(css同理)(俗称combo);
在执行amd标准时,一个js文件只允许一个模块的存在,故在减少http请求层面,这是相斥的,但amd和cmd标准都有一个具名模块的定义方式,这个时候是允许一个js文件存在多个模块代码的;

你所不能理解的应该是r.js(requirejs的打包工具);它的工作其实就是解读出根据你的配置环境的目录结构下的代码存放目录结构,然后把标准的代码结构转换成具名模块的代码结构,如果你执行了合并,则把依赖的模块的代码合并到制定的一个文件中;

链接 http://www.zhihu.com/question/34007485

关于requirejs和grunt压缩合并是否矛盾的更多相关文章

  1. grunt压缩合并代码

    module.exports = function(grunt) { // 配置 grunt.initConfig({ pkg : grunt.file.readJSON('package.json' ...

  2. 引用:使用grunt 压缩 合并js、css文件

    引用:https://www.jianshu.com/p/08c7babdec65 压缩 js 文件 1.创建一个目录 名为grunt   目录.png 2.在grunt目录下创建一个 src目录,存 ...

  3. 折腾一两天,终于学会使用grunt压缩合并混淆JS脚本,小激动,特意记录一下+spm一点意外收获

    很长时间没有更新博客了,实在是太忙啦...0.0 ,以下的东西纯粹是记录,不是我原创,放到收藏夹还担心不够,这个以后常用,想来想去,还是放到这里吧,,丢不了..最后一句废话,网上搜集也好原创也罢,能解 ...

  4. nodejs:grunt使用合并压缩的基本使用

    一.模块化历史 1,nodejs出现:主要解决后端js规范 2,commonjs:这个组织出来一些服务器规范 3,后端规范commonjs应用升级到前端commonjs2:cmd规范(seajs)和完 ...

  5. GruntJs安装及使用入门(自定义grunt任务,合并压缩js、css)

    一.Grunt.js简介(实现自动化) 1)简要说明: 1.GruntJs是基于node的javascript命令行工具,可以自动化构建.测试.生成文档的项目管理工具: 2.使用GruntJs可以自动 ...

  6. gulp实时编译less,压缩合并requirejs模块文件

    gulp的使用命令简单,就几个,gulp的简单使用教材可以参考一点的gulp使用教材(http://www.ydcss.com/archives/18). 下面就简单的介绍这些命令如何互相配合的完成前 ...

  7. RequireJS模块化后JS压缩合并

    使用RequireJS模块化后代码被拆分成多个JS文件了,在部署生产环境需要压缩合并,RequireJS提供了一个打包压缩工具r.js来对模块进行合并压缩.r.js非常强大,不但可以压缩js,css, ...

  8. requireJs压缩合并路径问题

    描述 随着前端开发的重要性,以及业务的复杂性,前端的模块化开发也被大众所接收,最常见的js框架requireJs,一个js文件对应一个模块,方便开发人员调试与维护,但是一个文件对应一个模块增加了htt ...

  9. Grunt的配置及使用(压缩合并js/css)

    Grunt的配置及使用(压缩合并js/css) 安装 前提是你已经安装了nodejs和npm. 你能够在 nodejs.org 下载安装包安装.也能够通过包管理器(比方在 Mac 上用 homebre ...

随机推荐

  1. 一个页面有相同ID元素的情况分析

    经常会遇到一个页面中有相同定义相同id的情况,从道理上来说,id应该是这个页面中某个元素的唯一标识,所以不应该出现有相同id的情况,否则会产生意想不到的结果.而且各个浏览器的表现也是不一样的.我只做了 ...

  2. 极简的css浮动窗口

    <!doctype html> <html> <head> <meta charset="utf-8"> <meta http ...

  3. Java虚拟机(JVM),JDK,JRE和JVM的区别——通过示例学习Java编程(2)

    Java虚拟机(JVM),JDK,JRE和JVM的区别 作者:CHAITANYA SINGH 来源:https://www.koofun.com/pro/kfpostsdetail?kfpostsid ...

  4. Android recyclerview 只显示一行 宽度不适配

    最近学习recyclerview 遇到的问题 1.宽度不适配 正确写法 LayoutInflater.from(context).inflate(R.layout.item_view,parent,f ...

  5. iphone图片简单处理

    使用sips批量缩放图片大小 >>sips -s format jpeg -Z 250 someImage.PNG --out myImage.JPEG 把someImage.PNG转换为 ...

  6. 在Ubuntu16.04安装YouCompleteMe

    作为从事了4年多嵌入式Linux工作的软件工程师,最近决定完全在ubuntu上工作,使用vim进行代码的阅读和编辑,然后尝试去安装vim相关的各种插件.从来没用过代码补全的我,在网上找到了插件omni ...

  7. 51Nod 1007 正整数分组 -简单DP

    题意: 将一堆正整数分为2组,要求2组的和相差最小. 例如:1 2 3 4 5,将1 2 4分为1组,3 5分为1组,两组和相差1,是所有方案中相差最少的. N<=100 sum<=100 ...

  8. winhex 中磁盘大小与偏移

    下图为c盘(活动分区).上方base offset为相对于整个硬盘的字节偏移量.partition 1中信息包括c盘开始扇区,总扇区数.partition 2 信息为扩展分区开始扇区和扇区数.由 P1 ...

  9. Mac终端(Terminal)自定义颜色,字体,背景

    使用Mac作为开发机的时候,苹果终端自带的颜色黑白,字体又小,看起来确实不是很舒服.那推荐大家使用Solarized配色方案.Solarized 是目前最完整的 Terminal/Editor/IDE ...

  10. 二分查找 && 三分查找

    LeetCode34. Find First and Last Position of Element in Sorted Array 题意:找出指定元素出现的范围,Ologn 思路:两次二分 cla ...