关于requirejs和grunt压缩合并是否矛盾
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压缩合并是否矛盾的更多相关文章
- grunt压缩合并代码
module.exports = function(grunt) { // 配置 grunt.initConfig({ pkg : grunt.file.readJSON('package.json' ...
- 引用:使用grunt 压缩 合并js、css文件
引用:https://www.jianshu.com/p/08c7babdec65 压缩 js 文件 1.创建一个目录 名为grunt 目录.png 2.在grunt目录下创建一个 src目录,存 ...
- 折腾一两天,终于学会使用grunt压缩合并混淆JS脚本,小激动,特意记录一下+spm一点意外收获
很长时间没有更新博客了,实在是太忙啦...0.0 ,以下的东西纯粹是记录,不是我原创,放到收藏夹还担心不够,这个以后常用,想来想去,还是放到这里吧,,丢不了..最后一句废话,网上搜集也好原创也罢,能解 ...
- nodejs:grunt使用合并压缩的基本使用
一.模块化历史 1,nodejs出现:主要解决后端js规范 2,commonjs:这个组织出来一些服务器规范 3,后端规范commonjs应用升级到前端commonjs2:cmd规范(seajs)和完 ...
- GruntJs安装及使用入门(自定义grunt任务,合并压缩js、css)
一.Grunt.js简介(实现自动化) 1)简要说明: 1.GruntJs是基于node的javascript命令行工具,可以自动化构建.测试.生成文档的项目管理工具: 2.使用GruntJs可以自动 ...
- gulp实时编译less,压缩合并requirejs模块文件
gulp的使用命令简单,就几个,gulp的简单使用教材可以参考一点的gulp使用教材(http://www.ydcss.com/archives/18). 下面就简单的介绍这些命令如何互相配合的完成前 ...
- RequireJS模块化后JS压缩合并
使用RequireJS模块化后代码被拆分成多个JS文件了,在部署生产环境需要压缩合并,RequireJS提供了一个打包压缩工具r.js来对模块进行合并压缩.r.js非常强大,不但可以压缩js,css, ...
- requireJs压缩合并路径问题
描述 随着前端开发的重要性,以及业务的复杂性,前端的模块化开发也被大众所接收,最常见的js框架requireJs,一个js文件对应一个模块,方便开发人员调试与维护,但是一个文件对应一个模块增加了htt ...
- Grunt的配置及使用(压缩合并js/css)
Grunt的配置及使用(压缩合并js/css) 安装 前提是你已经安装了nodejs和npm. 你能够在 nodejs.org 下载安装包安装.也能够通过包管理器(比方在 Mac 上用 homebre ...
随机推荐
- 《javascript设计模式》笔记之第五章:单体模式
一:单体的基本结构: 最简单的单体,实际就是一个对象字面量: var Singleton = { attribute1: true, attribute2, method1: function() { ...
- asp.net mvc 使用uploadfiles 实现异步上传数据
lesg.cn 文章发布在: http://www.lesg.cn/netdaima/net/2017-990.html 在实际开发过程中, 为了提高用户的体验,在上传文件的时候通常会使用异步上传文 ...
- 解析 MFC 中的 FromHandle
MFC 对 Windows API 进行了封装,在很多方面都会提供便利.用 FromHandle 返回零时对象的指针,就可以调用各种类的方法.临时对象会在 OnIdle 中销毁.这里对 FromHan ...
- [Rational Rose 2007]解决启动报”解决无法启动此程序因为丢失suite objects.dll“的问题
问题根源1:不是丢失suite objects.dll文件,而是环境变量配置错误或无配置 假如安装目录如:C:\Program Files\Rational 需要配置环境变量的路径为:C:\Progr ...
- spring 配置多个properties
复制多份,保证有效的配置文件,属性时true就行 <bean class="org.springframework.beans.factory.config.PropertyPlace ...
- codevs 1262 不要把球传我 2012年CCC加拿大高中生信息学奥赛
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description CCC的足球比赛和传统的足球比赛有一点不同, 一次进球当且仅当先后接触到球的 ...
- X11/extensions/XShm.h: No such file or directory
CentOS 编译一些开源项目提示:X11/extensions/XShm.h: No such file or directory. 运行命令:yum install libXext-devel就可 ...
- ConCurrent in Practice小记 (4)
ConCurrent in Practice小记 (4) Executors Callable && Future <T> Callable:此接口有一个call()方法. ...
- Codeforces Round #318 (Div. 2) C Bear and Poker (数学)
简单题,求一下所有数的2和3的幂是任意调整的,把2和3的因子除掉以后必须相等. 求lcm,爆了long long.我得好好反省一下,对连乘不敏感 #include<bits/stdc++.h&g ...
- leetcode_1049. Last Stone Weight II_[DP]
1049. Last Stone Weight II https://leetcode.com/problems/last-stone-weight-ii/ 题意:从一堆石头里任选两个石头s1,s2, ...