`
xiaomiya
  • 浏览: 131925 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

requirejs模块化开发后的合并压缩

阅读更多

requireJs 项目压缩合并

必要性

 

requireJs好处无需过多介绍,为了应对日益复杂,大规模的Javascript开发,我们一般将复杂的逻辑划分成一个个小单元模块,化整为零。这个时候一个项目要引用几十个单元也是有可能的,每个单元都是一个js文件,如果上线的都是这些小的文件,每次加载页面都要向服务器发起这么多请求,将对性能造成一定影响。所以现在就需要一个工具可以将这些文件在不影响业务的前提下智能压缩合并,以减少多余的请求,于是 r.js 就诞生了。r.js的压缩工具使用 UglifyJS 或者 Closure Compiler。此外r.js需要node环境,当然也可以运行在Java环境的 Rhino。

下面就平时项目中常用的两种场景对 r.js 的使用方法进行总结 

注意:r.js 压缩所用的js文件必须得是本地的

 

 

 

场景一



 
示例中的项目为单一目录,所有需要用的js都在一个目录,主文件为 main.js,现要将所有文件压缩合并到文件 built.js 中

 

1,确定有node环境

打开cmd,进入项目目录进去r.js所在的目录

输入命令:node r.js -o baseUrl=./ name=main out=../js_min/built.js

 

参数说明:

baseUrl 起始路径

name 入口文件

out 输出文件

 

合并压缩后就可以在页面上调用了

压缩之前的调用:<script data-main="js/main" src="http://s.thsi.cn/js/require.min.js"></script>

压缩之后的调用:<script data-main="js_min/built" src="http://s.thsi.cn/js/require.min.js"></script>

 

 

场景二

 


 

 

配置文件built.js 的内容:

 

{
    baseUrl: "./",                                     
    dir: "./build-file/",
    optimize: "uglify",
    modules: [{
        name: "./main"
    }],
    paths: {
        'jquery'            : '../common/jquery',
        'ClientHqData'      : '../common/ClientHqData',
        'StockCallBack'     : '../common/StockCallBack',
        'StockTable'        : '../common/StockTable',
        'hqRender'          : './hqRender',
        'swfobject'         : '../common/swfobject',
        'mmsj'              : '../common/mmsjflash',
        'setDate'           : '../common/setDatePicker',
        'clientInterface'   : '../common/clientInterface',
        'excanvas'          : '../common/excanvas',
        'flot'              : '../common/jquery.flot',
        'dpfxb'             : '../common/dpfxb',
        'subscribeSetup'    : '../common/subscribeSetup'
    }
}

 

#baseUrl  默认的情况下,所有模块都是相对于这个路径的,如果没有设置,则模块的加载是相对于 built 文件所在目录
#dir  输出目录的路径,如果不设置就默认为和 built同级的目录
#optimize  代码优化方式,常用可以设置的值:uglify(使用UglifyJS压缩代码,默认值)、none(不做合并压缩)
#modules 定义要被优化的模块数组,这里是指模块名称
#paths 整个项目的引用情况,这样的话可以不用单独写在入口文件里面了

 

命令: node r.js -o built.js
#built.js 为配置文件

 

引用(压缩合并前):
<script data-main="/js/gnbd/main" src="http://s.thsi.cn/js/require.min.js"></script> 
引用(压缩合并后):
<script data-main="/js/gnbd/build-file/main" src="http://s.thsi.cn/js/require.min.js"></script>
  • 大小: 9.3 KB
  • 大小: 8.6 KB
0
1
分享到:
评论

相关推荐

    用grunt合并requireJS的模块文件,压缩css,images

    标题中的“用grunt合并requireJS的模块文件,压缩css,images”揭示了本文将探讨如何使用Grunt自动化工具来处理JavaScript模块化、CSS样式表以及图片资源的优化。Grunt是基于Node.js的一个构建工具,它能帮助开发者...

    ionic项目应用requireJs前端模块化 示例

    在本文中,我们将深入探讨如何在 Ionic 项目中利用 RequireJS 进行前端模块化开发。RequireJS 是一个流行的 JavaScript 模块加载器和构建工具,它使得代码组织更加有序,便于维护和优化。Ionic 是一个基于 AngularJS...

    使用requirejs模块化开发多页面一个入口js的使用方式

    知道requirejs的都知道,每一个页面需要进行模块化开发都得有一个入口js文件进行模块配置。但是现在就有一个很尴尬的问题,如果页面很多的话,那么这个data-main对应的入口文件就会很多。理论这样其实也没什么,但是...

    requirejs模块化

    RequireJS 是一个JavaScript库,主要用于实现AMD(Asynchronous Module Definition)模块化开发。AMD是针对JavaScript的异步模块加载机制,解决了JavaScript在浏览器环境中因为文件加载顺序导致的问题,使得开发者...

    requireJs学习文档+demo

    1. **模块化**:RequireJS 提倡模块化开发,每个文件都是一个模块,可以有自己的命名空间,避免全局变量污染。通过 `define` 函数定义模块,例如: ```javascript define('module1', ['dependency1', 'dependency2...

    JavaScript模块化开发库之SeaJS

    - SeaJS提供了丰富的插件系统,如seajs-combo用于合并压缩代码,seajs-text用于加载文本资源等,这些工具可以帮助开发者提高开发效率,优化生产环境的性能。 - 使用SeaJS时,可以结合构建工具(如Gulp、Webpack等...

    requireJS初学者完整例子

    RequireJS是前端开发中一款非常重要的模块化加载库,它主要解决了JavaScript在浏览器环境中异步加载和组织代码的问题。这个“requireJS初学者完整例子”提供了学习RequireJS的基础步骤和实践操作,帮助初学者快速...

    requirejs-2.1.17.zip

    综上所述,RequireJS 2.1.17版是JavaScript开发中的一个重要工具,通过它,开发者可以构建更高效、模块化的Web应用,同时保持良好的代码结构和性能。使用这个版本的开发者需要注意其特性和限制,并结合其他工具和...

    requirejs demo

    7. **优化工具**:RequireJS 提供了一个名为 r.js 的构建工具,用于合并、压缩和优化模块,生成一个或多个合并后的文件,适合生产环境。 在"requirejs demo"中,你可能会看到如下内容: - HTML 文件中 `data-main` ...

    快速理解RequireJs

    总结来说,RequireJS是解决JavaScript模块化问题的一个强大工具,它通过AMD规范提供了异步加载和模块化管理,极大地提高了前端开发的效率和代码质量。通过深入学习和实践,我们可以更好地理解和掌握这一技术,并将其...

    一篇文章掌握RequireJS常用知识

    在模块化开发的历史上,RequireJS是一款非常重要的JavaScript模块加载器。RequireJS遵循AMD(Asynchronous Module Definition)规范,这是一种异步模块定义规范。它支持模块之间的依赖关系,允许模块异步加载,避免...

    基于ecma5模块化开发的framework7的project

    在ECMAScript 5时代,模块化开发主要依赖于CommonJS(如Node.js中的require)或AMD(如RequireJS)规范,以及一些工具库如Sea.js或curl.js。在这个项目中,我们可能看到的是通过自定义的模块加载器或脚本注入来实现...

    小心!AngularJS结合RequireJS做文件合并压缩的那些坑

    本文将结合AngularJS和RequireJS框架在进行文件合并压缩时遇到的一些问题及其解决方案进行详细讨论。 AngularJS是一个流行的前端JavaScript框架,用于构建动态的、单页的Web应用程序。RequireJS是一个实现了异步...

    requireJS-demo.zip

    总的来说,RequireJS 通过模块化管理和异步加载,解决了JavaScript代码的组织和性能问题,提高了开发效率。对于大型的前端项目,尤其是在多个库和模块之间存在复杂依赖关系的情况下,RequireJS 显得尤为重要。通过...

    RequireJS入门(三)

    RequireJS 是一个 JavaScript 的模块化加载器,它使得在浏览器端组织和管理代码变得更加有序,尤其是在大型项目中。本篇文章将深入探讨 RequireJS 的基础知识,包括它的核心概念、使用方式以及如何结合实际项目进行...

    RequireJS的文件

    RequireJS 是一个JavaScript库,主要用于组织和管理前端的模块化代码。它引入了AMD(Asynchronous Module Definition)异步模块定义的加载机制,使得在浏览器环境中可以实现按需加载和并行加载JavaScript文件,从而...

    requireJS实例

    总之,"requireJS实例Demo" 是一个很好的实践平台,它让我们了解和掌握 RequireJS 如何帮助我们管理和组织 JavaScript 代码,实现模块化开发,提高代码质量和项目效率。通过学习这个实例,你将能够更好地理解 ...

    requirejs-master

    RequireJS 是一个 JavaScript 模块化加载器,它在前端开发中扮演着至关重要的角色,尤其是在大型项目中,用于组织代码、管理和优化资源加载。"requirejs-master" 压缩包很可能包含了 RequireJS 的完整源码、文档、...

Global site tag (gtag.js) - Google Analytics