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>
相关推荐
知道requirejs的都知道,每一个页面需要进行模块化开发都得有一个入口js文件进行模块配置。但是现在就有一个很尴尬的问题,如果页面很多的话,那么这个data-main对应的入口文件就会很多。理论这样其实也没什么,但是...
最近有一个项目使用了 requirejs 来解决前端的模块化,但是随着页面和模块的越来越多,我发现我快要hold不住这些可爱的js文件了,具体表现在每个页面都要设置一堆 requirejs 的配置( baseUrl , paths 之类的)。...
之前的项目一直采用grunt来构建,然后用requirejs做模块化,requirejs官方有提供grunt的插件来做压缩合并。现在的项目切到了gulp,模块化用起了seajs,自然而然地也想到了模块合并压缩的问题。 然后一开始在解决这个...
前言 r.js(本地下载)是requireJS的优化...该项目名称为’demo’,在js目录下包含s1.js和s2.js两个文件,使用requirejs进行模块化,内容如下 //s1.js define(function (){ return 1; }) //s2.js define(function ()
本文将演示如何合并与压缩一个基于RequireJS的项目。本文中将用到苦干个工具,这其中就包括Node.js。 因此,如果你手头上还没有Node.js可以点击此处下载一个。 动机 关于RequireJS已经有很多文章介绍过了。这个工具...
前端架构规范开发规范模块化开发:针对js、css,以功能或业务为单元组织代码。js方面解决独立作用域、依赖管理、api暴露、按需加载与执行、安全合并等问题,css方面解决依赖管理、组件内部样式管理等问题。是提升...
AMD模块化框架:requireJS CSS框架:BootStrap、LESS。 动画效果均是由CSS3实现 web包管理工具:bower 自动化构建工具:grunt及其插件less、uglify、concat、cssmin。 项目优化工具:r.js合并压缩AMD模块 版本管理...
项目使用grunt打包根据AMD规范,使用grunt-contrib-requirejs来压缩合并模块,同时用ocLazyLoad来完成angular模块的懒加载. 项目进程: 模块打包 项目中代码基本按照AMD规范来编写,使用grunt-c
##特点基础的css、img、js的检测、压缩、合并。自动编译Less内置webpack,兼容AMD or CMD开发方式,无需引入requirejs or seajs库。自动的模块打包方式,完全没有requirejs的rjs配置的烦恼。本地server服务,方便数据...
目前主要针对CSS和JS的合并、压缩、添加md5版本号,其他功能后续添加! 一、项目结构 以 public/src/demo/module-test/ 做为案例 package.json gulpfile.js - public - src rjs-config-s.js - demo rjs-...
模块化 框架 UI框架 WebSocket 数据可视化 WebGL CSS3 动画 流程控制 函数式编程 手机 UI 框架 jQuery [GitHub] ...