`

dojo打包压缩js

    博客分类:
  • dojo
 
阅读更多
最近发现dojo页面每次请求的时候都会加载好几十个js文件,也就是要建立几十个request请求,这个是无法接受的,所以准备花点时间来研究下。但在网上找了下没发现什么好的例子,看来得花点时间才可能有点结果吧,由于今天下午花了点时间但是没看出什么结果来,又害怕以后不能坚持下去,所以把知道都记录下,希望以后来进行完善。
dojo有个专门压缩JS的工具叫shrinksafe,本人目前使用的版本为:
dojo-release-1.6.1-shrinksafe
对单个JS进行压缩可以这样:
引用

E:\myfile\dojo\shrinksafe>java -jar shrinksafe.jar -c 1768.js>17.js

其中1768.js是需要压缩的文件,17.js就是压缩后生成的文件名,这里有个地方需要注意下,那就是那个1768.js必须是独立可运行的,如果这个文件内部引用了其它文件,则运行压缩的时候会出错,因为它不能单独运行,所以shrinksafe不能判断是否压缩成功,所以会报错。

如果要压缩多个js并将其合并成一个js,也很简单:
引用

E:\myfile\dojo\shrinksafe>java -jar shrinksafe.jar 9676.js 1768.js>17.js

新版本的shrinksafe可以不加-c命令。

更新(12.8):但是要把dojo中引用到的JS打包起来就不那么容易了,本人差不多花了一天时间,到处查资料,得到的结果也不是太满意,先看一个命令:
引用

E:\myfile\dojo\dojo-release-1.6.0-src\util\buildscripts>java -classpath
"../shrinksafe/compiler.jar;../shrinksafe/js.jar" org.mozilla.javascript.tools.shell.Main build.js action=clean,release optimize=closure layerOptimize=closure profile=myprofile releaseName=hello

上面这个命令算是本人在windows上见过的比较长的命令了。有几点要注意:
1.必须在buildscripts下运行java,而且需要java6。
2.除了用到了shrinksafe下的js包以外,还用到了http://code.google.com/closure/compiler/下的compiler.jar包。据说这个包压缩js很优秀。如果不加optimize=closure layerOptimize=closure这两个参数,会报错
引用
[JavaPackage org.dojotoolkit.shrinksafe.Compressor]. It is not a function, it is "object"

经过本人再三搜索,明白了一点,默认使用的是layerOptimize=shrinksafe这样的方式,如果改成layerOptimize=comments,还是可以运行的,而且不用再加compiler.jar包了,不过压缩出来的js比起使用compiler.jar压缩的js,相比压缩比要低一些。
3.profile文件。上面命令中有个profile=myprofile,其中这个myprofile必须位于buildscripts\profiles目录下,且后缀名为.profile.js。至于里面的内容,如下:
dependencies = {
    layers: [
    {
        name: "dojo/mydojo.js",
        dependencies: [
            "dojo._base",
            "dojo.parser",
            "dojo.data.ItemFileReadStore",
            "dojo.data.ItemFileWriteStore",
            "dijit.Tree",
            "dijit.layout.BorderContainer",
            "dijit.layout.ContentPane",
            "dijit.form.Form",
            "dijit.form.TextBox",
            "dijit.form.Textarea",
            "dijit.form.Button"
        ]
    }
    ]
}

这是本人原来写的一棵树所需要的dojo引用的文件。
4.生成的文件会在dojo-release-1.6.0-src\release\hello目录中,上面的releaseName=hello就是这个意思。
5.然后将dojo目录下的nls目录与mydojo.js复制到相应的web服务目录下,最后在相应的jsp中引用:

<script type="text/javascript" src="/spring3/js/dojo/dojo/dojo.js" djConfig="parseOnLoad: true"></script>
<script type="text/javascript" src="/spring3/js/dojo/packer/mydojo.js"></script>

其中dojo.js还是得引用。还有就是css文件还是得照常引用,目前还不知道css文件是怎么打包的。

折腾了差不多一天,总算弄清了dojo的打包流程,说实话心里并没得啥子成就感,这种东西弄起来比在windows上配置ruby还麻烦。文章就先写到这里,以后如果有的感悟再来更新。

(10.9)关于css的压缩可以在命令行中加上cssOptimize=comments,这样的话,会把所有的css的注释去掉,然后打包成dijit.css,这个文件30K左右,压缩的效果还是不错的,至于可以压缩到原来的50%。然后在jsp中直接引用这个文件与dojo.css文件就可以了:
<link href="../css/tundra.css" rel="stylesheet" type="text/css" />
<link href="../css/dojo.css" rel="stylesheet" type="text/css" />

即便把js与css打包以后,控制台请求还是有36个,仔细看了下,树的数据加载采用XHR的形式,所以引用了dojo._base下的十几个js,这个目前还没想到什么解决方法,因为_base下的文件属于内部引用,本人在打包的时候就算把这些文件加入打包目录还是没有效果。
0
0
分享到:
评论
1 楼 rubytang 2014-06-17  
//To build just Dojo base, you just need an empty file.
dependencies= {
  layers: [ 
    { 
        name: "mydojo.js", 
        dependencies: [ 
           "dojo.data.ItemFileWriteStore", 
           "dijit.form.DateTextBox", 
            "dojo.data.ObjectStore", 
            "dojox.grid.enhanced.plugins.Pagination", 
            "dojox.grid.enhanced.plugins.Filter", 
            "dojox.grid.EnhancedGrid", 
            "dojo.store.JsonRest", 
            "dijit.form.Form", 
            "dijit.form.Button",
"dijit.form.ValidationTextBox",
"dijit.Dialog",
"dojo._base.window",
            "dojo.dom-style"
        ] 
    } 
    ],
prefixes: [   
[ "dijit", "../dijit" ],
[ "dojox", "../dojox" ]
]
};
不写prefixes会报missing  prefix for  top-level module.错误

相关推荐

    dojo/js/css 压缩打包工具 - 桌面版

    该工具可按指定的方案合并、压缩dojo或符合dojo规范的js文件、压缩css文件。 使用方便,无需安装配置, 下载置入dojo源码下的任意目录即可一键完成打包压缩. 该工具可自动分析HTML文件生成打包方案,自动排除没有用到的...

    对dojo的js打包.doc

    ### Dojo JavaScript 库的打包方法详解 #### 一、Dojo简介与打包的重要性 Dojo 是一个开源的 JavaScript 框架,主要用于构建高性能、跨平台的 Web 应用程序。它提供了一系列丰富的功能,如 AJAX 支持、DOM 操作、...

    DOJO 学习笔记 dojo

    在引入 Dojo 的启动代码 `&lt;script src="/yourpath/dojo.js"&gt;&lt;/script&gt;` 之后,你可以开始使用 Dojo 提供的预打包的常用功能。为了便于阅读源码,可以查看未压缩的 `dojo.js.uncompressed.js` 文件。Dojo.js 的大小较...

    DOJO API 中文参考手册

    10. **Dojo Build System**: Dojo的构建系统允许开发者优化和打包应用程序,去除未使用的代码,合并和压缩资源,以提升页面加载速度和降低服务器负担。 通过深入学习和实践这个DOJO API中文参考手册,开发者能够...

    dojo官方教程中文版 pdf 非扫描

    教程中还会涵盖Dojo的工具链,如build系统,用于优化、压缩和打包代码,提高页面加载速度。另外,Dojo的国际化和本地化支持也是其特色之一,使得应用程序能适应不同语言和地区的需求。 "dojo官方教程中文版 pdf 非...

    dojo-release-1.1.1.tar.gz

    这个"dojo-release-1.1.1.tar.gz"文件是Dojo库的一个特定版本,即1.1.1版,以tar.gz格式打包。这种格式是一种常见的Linux和Unix系统中的文件压缩方式,它结合了tar(归档)和gzip(压缩)两种工具,便于在Unix-like...

    dojo_doc

    工具有关的标签可能指的是Dojo的构建工具,如`dojo-build`,它允许开发者优化和打包Dojo应用,减少网络传输的大小和提升页面加载速度。构建过程可以合并、压缩、混淆代码,同时处理模块依赖关系。 在学习Dojo时,...

    dojo工具,开源js的框架

    5. **Dojo Build System**:Dojo构建系统用于优化和打包代码,通过合并、压缩、转换模块,减少HTTP请求,提高页面加载速度。同时,它还可以实现源码与发布版的分离,便于调试和部署。 6. **国际化的支持**:Dojo...

    dojo-release-1.4.2-src.tar.gz

    1. **dojo目录**:这是Dojo的核心库,包含了各种模块、组件和工具,如dojo.js,提供核心功能如事件处理、Ajax通信、DOM操作等。 2. **dijit目录**:这是一个UI组件库,包含各种可复用的界面元素,如按钮、表单、...

    精通dojo 3_2

    - 对Dojo进行压缩和打包,减少加载时间。 - 了解并运用Dojo提供的各种性能优化工具和技术。 4. **国际化与可访问性**:介绍了如何使Dojo应用程序支持多语言环境,并符合无障碍标准。 - 如何使用Dojo的i18n/nls...

    Dojo3.rarDojo3.rarDojo3.rarDojo3.rar

    9. **性能优化**:Dojo3内置了压缩和合并工具,可以将所有依赖的模块打包成一个或多个文件,减少HTTP请求,提升页面加载速度。 10. **浏览器兼容性**:Dojo3致力于提供良好的浏览器兼容性,支持包括IE6在内的多种...

    HelloDoJo

    `来加载一个包含"HelloDoJo"文本的模板文件,或者直接在JavaScript中定义字符串,然后将其插入到页面的某个元素中。 对于初学者来说,理解Dojo的模块系统(AMD,Asynchronous Module Definition)是非常重要的,...

    dojo-release-1.8.2

    10. **Dojo Build System**:这是一个强大的工具,用于优化和打包Dojo应用,包括合并、压缩和行内化CSS,减少HTTP请求,提高页面加载速度。 通过解压"dojo-release-1.8.2"压缩包,你可以获得Dojo的完整源码、文档、...

    精通dojo(中文版)

    书中会讲解Dojo的优化技巧,如延迟加载(懒加载)、模块合并、压缩与打包等,帮助开发者提升应用程序的运行效率。Dojo的国际化和本地化支持也是其亮点,书里会介绍如何实现多语言环境下的应用。 Dojo还包含了强大的...

    dojo-release-1.1.1

    4. **util**:这个文件夹通常包含构建工具和其他辅助脚本,如 dojo-build,它是Dojo的构建系统,用于优化和打包Dojo应用程序,包括合并、压缩、混淆代码等,以减少网络传输时间和提高页面加载速度。 在实际开发中,...

    dojo-release-1.4.0.tar

    "dojo-release-1.4.0.tar" 是Dojo框架的一个版本包,以tar格式进行压缩,这是一种常见的在Unix/Linux系统中打包和压缩文件的方法。 在Dojo 1.4.0版本中,我们可以找到以下几个核心知识点: 1. **模块化系统(AMD)...

    dojo-release-1.7.2.tar.gz

    1.7.2是dojo的一个特定版本,发布于某个时间点,可能包含了一些bug修复、新功能的添加或者性能的优化。 "jquery"是另一个非常流行的JavaScript库,它的目标是简化HTML文档遍历、事件处理、动画制作和Ajax交互。...

    dojo-release-1.3.0.tar

    这个文件采用的是tar格式,是一种常见的文件打包和压缩工具,主要在类UNIX系统如Linux和Mac OS X中使用,但也可以通过各种工具在Windows上处理。 Dojo 1.3.0是Dojo Toolkit的一个历史版本,它包含了丰富的功能和...

    Dojo的资料

    Dojo提供了许多辅助工具,如loader(加载器)用于模块化代码,build system(构建系统)用于优化和打包应用,测试框架帮助确保代码质量。 【压缩包子文件的文件名称】:OReillyDojo.PDF 这个PDF文件很可能是一本...

    dojo1.2版本工具包

    Dojo 是一个强大的JavaScript工具库,它为Web开发提供了丰富的功能和组件,尤其在AJAX、DOM操作、事件处理、动画效果以及模块化开发等方面表现出色。标题中的"dojo1.2版本工具包"指的是Dojo框架的1.2版本的完整包,...

Global site tag (gtag.js) - Google Analytics