dojo中的build(或叫压缩)

参考文章:http://www.ibm.com/developerworks/cn/web/0912_shenjc_dojobuild/

1.工具在/dojo/util/buildscripts下,build.bat文件

命令:build profile=example action=release releaseName=myDojo optimize=shrinksafe

Profile:指定build使用的profile文件(profile文件需要放在/dojo/util/buildscripts/profiles中);

Action:指定本次命令类型,有三个值:clean, release, help;

releaseName:本次release的名字,默认是dojo;

Optimize:本次build中进行优化的方式,一般使用shrinksage即可;

2.profiles文件

/* example.profile.js */ 
 dependencies = { 
 layers: [    // 可以根据需要制定多个不同的 layer 
 { 
 name: "example.js",   // 打包生成的 js 文件的名
 dependencies: [       // 需要打包的 js 文件列表
"dojo.date", 
"dojox.uuid"       
 ] 
 } 
 ], 
 prefixes: [       // 设置路径
 [ "dijit", "../dijit" ], 
 [ "dojox", "../dojox" ] 
 ] 
 }

3.文件所在位置:

在action/releaseName/dojo/中,有profile.js(已压缩的)和profile.uncompressed.js(未压缩)

本例文件是release/myDojo/dojo/example.js

 

4.附加个更高级的profile

/* example.profile.js */ 
 dependencies = { 
 layers: [ 
 {   // 这个 layer 用来打包我们定制的 dojo 文件
 name: "mydojo.js",   
 dependencies: [       
"dojo.date", 
"dojox.uuid"
 ] 
 }, 
 {  // 这个 layer 用于打包我们自己的 js 文件
 name: "example.js",   
 dependencies: [       
"my.example1"
 ] 
 } 
 ], 
 prefixes: [ 
 [ "dijit", "../dijit" ], 
 [ "dojox", "../dojox" ], 
 [ "my", "../my"] 
 ] 
 }

-------------------------------------------分割线--------------------------------------------------------

以上内容其实已经太老了,而且对于初学者来说,写的还不够具体!最起码折磨我了两天!愤怒。今天我来完善一下,希望后来人不要再掉进这个坑里面。

dojo的官网有个create build的文章,写的比较权威,不过对于实战主义者来说,怎么写出来最重要,下面我把profile.js文件的内容贴一下。

myapp.profile.js文件内容:

var profile = (function(){
    return {
        basePath: "../../../../js",  //相对于profile.js文件的路径,例如我喜欢把profile.js文件放在util->buildScript->profiles文件夹下
        releaseDir: "./app",    //相对于basePath路径,现在basePath已经定位到js文件夹下
        releaseName: "lib",    //在releaseDir文件加下,此处是app文件夹下创建个lib文件夹
        action: "release",
        layerOptimize: "closure",
        optimize: "closure",
        cssOptimize: "comments",
        mini: true,
        stripConsole: "warn",
        selectorEngine: "lite",

        defaultConfig: {
            hasCache:{
                "dojo-built": 1,
                "dojo-loader": 1,
                "dom": 1,
                "host-browser": 1,
                "config-selectorEngine": "lite"
            },
            async: 1
        },

        staticHasFeatures: {
            "config-deferredInstrumentation": 0,
            "config-dojo-loader-catches": 0,
            "config-tlmSiblingOfDojo": 0,
            "dojo-amd-factory-scan": 0,
            "dojo-combo-api": 0,
            "dojo-config-api": 1,
            "dojo-config-require": 0,
            "dojo-debug-messages": 0,
            "dojo-dom-ready-api": 1,
            "dojo-firebug": 0,
            "dojo-guarantee-console": 1,
            "dojo-has-api": 1,
            "dojo-inject-api": 1,
            "dojo-loader": 1,
            "dojo-log-api": 0,
            "dojo-modulePaths": 0,
            "dojo-moduleUrl": 0,
            "dojo-publish-privates": 0,
            "dojo-requirejs-api": 0,
            "dojo-sniff": 1,
            "dojo-sync-loader": 0,
            "dojo-test-sniff": 0,
            "dojo-timeout-api": 0,
            "dojo-trace-api": 0,
            "dojo-undef-api": 0,
            "dojo-v1x-i18n-Api": 1,
            "dom": 1,
            "host-browser": 1,
            "extend-dojo": 1
        },

        packages:[{
            name: "dojo",
            location: "dojo"
        },{
            name: "dijit",
            location: "dijit"
        },{
            name: "dojox",
            location: "dojox"
        },{
            name: "cbtree",  //这里可以放一些扩展包,比如你自己的包
            location: "cbtree"
        }],

        layers: {
            "dojo/dojo": {
                include: [ 
							"dojo/dojo",
							"dojo/i18n", 
							 "dijit/registry",
							 "dojo/ready",
							 "dijit/Tree",
							 "dijit/form/CheckBox",
							 "dojo/store/Memory",					 // basic dojo/store
							 "cbtree/Tree",							 // Checkbox tree
							 "cbtree/model/TreeStoreModel",			 // ObjectStoreModel
							 "dijit/layout/BorderContainer",
							 "dojox/layout/ContentPane",
							 "dijit/layout/TabContainer",
							 "dojo/store/JsonRest",
							 "dojo/store/Observable",
							 'dojo/_base/array',
							 "dojo/request/xhr",
							 "dojo/on",
							 "dojox/grid/EnhancedGrid",
							 "dojo/data/ItemFileWriteStore",
							 "dojo/dom",
							 "dojo/parser",
							 "dojo/domReady" 
							],
                customBase: true,
                boot: true
            }
        }
    };
})();

然后打开cmd->cd到util/buildScripts/文件夹下,

运行:build.bat --profile ./profiles/myapp.profile.js

然后来杯咖啡!

控制台会有一堆的输出,最后,会显示error或者其他信息

**************************************************非常重要*****************************************************************

关键的关键来了!程序会在js的文件夹下生成app/lib/。。。包,此时把生成的dojo,dijit, dojox文件拷贝到项目里面,然后引用生成的dojo.js文件即可。

我之前一直以为,dojo build之后生成的dojo,dijit, dojox等文件不用复制进项目里面,而仅仅是将dojo.js这一个文件拷贝到项目就可以了,但是事件告诉我们这样不行,需要将生成的几个文件一同放在项目中。


 

很不错的文教程!文件太大分3个包! 目录如下: dojo精品文教程 Dojo.1.0 Practice Note [1] 什么是dojo 选择dojo的理由 AJAX架构之Dojo篇 Adding Ajax文版 (DoJo) DOJO学习笔记(七)-日期控件DropdownDatePicker和DatePicker DOJO常用的验证函数 Dojo with Adobe AIR Dojo 工具包教程 Dojo 快速安装 Dojo和JSON建立无限级AJAX动态加载的功能模块树 Dojo学习笔记( 模块与包) Dojo学习笔记-- djConfig解说 Dojo学习笔记-- dojo.dom Dojo学习笔记-- dojo.event & dojo.event.topic & dojo.event.browser Dojo学习笔记--DateTextbox Dojo学习笔记--Dojo的基础对象和方法 Dojo学习笔记--FisheyeList鱼眼效果 Dojo学习笔记--TabContainer Dojo学习笔记--ValidationTextbox Dojo学习笔记--dijit.Dialog Dojo学习笔记--dijit.Menu Dojo学习笔记--dijit.TitlePane Dojo学习笔记--dijit.Tooltip Dojo学习笔记--dijit.Tree Dojo学习笔记--dojo.graphics.color & dojo.uri.Uri Dojo学习笔记--dojo.string & dojo.lang Dojo学习笔记--动态生成widget Dojo学习笔记--开发自己的TitlePane Dojo学习笔记--页面部分区域遮挡,DialogUnderlay Dojo学习笔记(五)-djConfig详解 dojo data 接口详解 dojo0.9 使用心得 dojo学习笔记(一)-dojo.io.IO & dojo.io.BrowserIO) dojo学习笔记(三) dojo学习笔记(二) dojo.lang.array & dojo.lang.func & dojo.string.extras dojo学习笔记(六)- ContentPane dojo学习笔记(四) dojo的拖拽示例以及疑问! 介绍dojo事件 使用 Dojo 工具包和 JSON-RPC 构建企业 SOA Ajax 客户端 利用Dojo实现拖动(Drag and Drop)效果
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值