描述

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

幸运的是requireJs提供了压缩工具r.js(点击下载),r.js需要node(Node 0.4.0 或更高版本,点击下载)环境支持,安装完node就可以在命令行里对前端代码进行优化了。

1.可以在命令行执行,如下:

node r.js -o baseUrl=. paths.jquery=some/other/jquery name=main out=main-built.js

2.也可以建一个配置文件,如build.js,代码如下:

{
appDir: "../js",
baseUrl: "../js",
dir: "../dist",
optimize: "uglify",
optimizeCss: "standard.keepLines",
mainConfigFile: "../js/main.js",
removeCombined: true,
fileExclusionRegExp: /^\./,
modules: [
{
name: ""
},
{
name: ''
}
]
}

这时只需在命令行中输入:

node r.js -o build.js

注意:r.js和build.js放在同一个文件夹

配置参数

({
appDir: '../client',
baseUrl: 'js', /*paths:{//baseUrl
app: 'app'
},*/
//该路径以当前路径为起点
dir: '../client-build', // Include the main configuration file.
//该路径以当前路径为起点
mainConfigFile: "./js/main.js", //加上下面这个modules,完成的是合并操作
//路径apppDir + baseUrl + main.js
//模块的入口文件,会从./client/js/main.js中寻找其所有的依赖项,并把他们合并成一个js文件
modules:[
{
name:'config'
}],
// Output file.
//out: "./js/config.js", // Root application module.
//name: "config",
removeCombined:true,
optimizeCss:'standard',
// Do not wrap everything in an IIFE.
wrap: false, //optimize (none/uglify/closure) 是否压缩,默认设置为optimize = uglify,
//none (OK:经测试,该参数正解)只合并不压缩,可以压缩成一个文件,但文件里面依旧保留格式,方便调试的时候查看代码
//uglify 只压缩不合并 (亲测,既压缩又合并)
//closure 压缩而且合并(亲测,合并不压缩)
//optimize:"closure", //合并后的文件,顶部会自动生成一堆说明性的文字,包括版权啊,等等,加了下面的参数,则不再生成
preserveLicenseComments: false,
// //下面两组的作用是 把js文件中的console.log删除
pragmas: { cacheBust: false },
onBuildWrite: function (moduleName, path, contents) {
// return contents;
return contents.replace(/console.log(.*);/g, '');
}
})

点击这里查看完整配置参数

常见问题

压缩合并后会出现路径错误问题,主要是因为,js代码位置变了,例如:

模块a中动态加载样式,压缩后,模块a整合到其他模块中,路径发生变化

这时需要修改js代码,动态判断路径,或者在调用模块时封装模块,通过require加载模块也能解决问题,因为r.js不会把require进来的模块压缩进去

requireJs压缩合并路径问题的更多相关文章

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

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

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

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

  3. ASP.NET MVC 中CSS JS压缩合并 功能的使用方法

    通过压缩合并js文件和css文件,可以减少 服务器的响应 次数和 流量,可以大大减小服务器的压力,对网站优化有比较明显的帮助!压缩合并 css 文件和js文件是网站优化的一个 比较常用的方法. ASP ...

  4. gulp之css,js压缩合并加密替换

    为了防止客户端的静态资源缓存,我们需要每次更新css或js的时候,通过md5或时间戳等方式重新命名静态资源.让客户端可以重新请求资源,而不是从缓存里取.然后html模板里的src也要做相应的修改.当然 ...

  5. gulp完成javascript压缩合并,css压缩

    最近需要对项目进行优化,主要是对js的压缩合并和css文件的压缩,查找相关资料之后发现gulp可以实现相关的功能,特此分享一下使用心得. 1.安装gulp gulp是基于Node.js的前端构建工具. ...

  6. gulp自动化压缩合并、加版本号解决方案

    虽然网上有很多的 gulp 构建文章,但是很多都已经随着 gulp 插件的更新无法运行了.因此,我写了这个比较简单的构建方案. 如果还不熟悉 gulp 的插件,可以阅读上一篇文章:精通gulp常用插件 ...

  7. 第十一节:Bundles压缩合并js和css及原理分析

    一. 简介 1.背景:浏览器默认一次性请求的网络数是有上限的,如果你得js和css文件太多,就会导致浏览器需要多次加载,影响页面的加载速度, MVC中提供Bundles的方式压缩合并js和css,是M ...

  8. 前端构建工具 Gulp 压缩合并JS/CSS 并添加版本号、ES6转ES5

    Gulp 基于 Node.js 的前端构建工具,可以实现前端代码的编译(sass.less).压缩合并(JS.CSS).测试:图片的压缩:已经添加 JS 和 CSS 版本号,防止浏览器缓存. 1. 安 ...

  9. browserify压缩合并源码反编译

    最近在学习钉钉(一个协作应用)桌面应用的前端源码时候,发现其js源码是用browserify做模块开发.于是想还原其源码的原本的目录结构,学习它的目录分类以及业务划分. 前言 用过browserify ...

随机推荐

  1. awk的替代先sort 再uniq -c 再sort ,uniq只能队相邻的起作用sort先让之间相邻再sort,最后sort是数量排序

    [root@localhost ~]# cat aa.txt |sort|uniq -c|sort -nk1 1 22\ 1 44 1 55\ 1 bb 1 dd 1 ff 1 gg 1 kk 1 o ...

  2. 微信小程序——页面之间传递值

    小程序页面传值的方式: 1.正向传值:上一页面 -->  下一页面 url传值 本地储存 全局的app对象 2.反向传值:下一页面 -->  上一页面 本地储存 全局的app对象 先说一下 ...

  3. HotSpot JVM常用参数(选项)设置

    本文讨论的选项是针对HotSpot虚拟机的. 1.选项分类及语法 HotspotJVM提供以下三大类选项: 1.1.标准选项 这类选项的功能是很稳定的,在后续版本中也不太会发生变化. 运行java或者 ...

  4. 总结一些笔记上的C和C++知识点

    1.如果没有提供自己的copy构造函数,C++会提供一个默认的copy构造函数,是成员到成员的copy. 2.C中static的作用: 1.隐藏:如果未加static,编译多个文件的时候,所有的全局变 ...

  5. mxnet与tensorflow的卷积实现细节比较

    mxnet的卷积 kernel = 3  pad=1边界补充0后,不管stride是否1还是2,imgw = 奇数或者偶数, 都是从图像位置(0,0)开始卷积 tensorlfow的卷积 kernel ...

  6. Axiom3D:Ogre中Mesh文件格式分析(一)

    在Axiom3D,或者说是Ogre的mesh的文件格式我们可能通过代码反推出相关格式,相关过程本来我是直接写的,后面发现相关流程写完后,我自己都看晕了,然后我就把一些过程用Execl整理出来,发现过程 ...

  7. DataFrame在算术方法中填充值

    在对不同索引的对象进行算术运算时, 你可能希望当一个对象中某个轴标签在另一个对象中找不到时填充一个特殊值(比如0)

  8. resin4.0.23+nginx1.1集群

    一,web服务器小论 以前的公司使用的web服务器是tomcat(tomcat+apache作集群),现在的公司是一家互联网公司,采用的架构是resin+nginx作集群(resin比tomcat快? ...

  9. 【吉比特】G-bits2018校园春季招聘技术类岗位笔试经验

    笔试公司:厦门吉比特网络技术股份有限公司 笔试岗位:游戏研发工程师 笔试时间:2018年3月30日19:00-20:30 笔试形式:牛客网在线做题 笔试回忆: 笔试总共时长1小时半,共52道题.其中选 ...

  10. 架构 : 三层架构、MVC、MVP、MVVM

    1. 三层架构   将整个业务应用划分为:界面层(User Interface layer, UIL).业务逻辑层(Business Logic Layer, BLL).数据访问层(Data acce ...