热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

dojo中的build(或叫压缩)

参考文章:http:www.ibm.comdeveloperworkscnweb0912_shenjc_dojobuild1.工具在dojoutilbuildscripts下,bu

参考文章: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这一个文件拷贝到项目就可以了,但是事件告诉我们这样不行,需要将生成的几个文件一同放在项目中。


 


推荐阅读
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 小程序的授权和登陆
    小程序的授权和登陆 ... [详细]
  • 本文详细介绍如何使用Netzob工具逆向未知通信协议,涵盖从基本安装到高级模糊测试的全过程。通过实例演示,帮助读者掌握Netzob的核心功能。 ... [详细]
  • Leetcode学习成长记:天池leetcode基础训练营Task01数组
    前言这是本人第一次参加由Datawhale举办的组队学习活动,这个活动每月一次,之前也一直关注,但未亲身参与过,这次看到活动 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 我在使用 AngularJS 的路由功能开发单页应用 (SPA),但需要支持 IE7(包括 IE8 的 IE7 兼容模式)。我希望浏览器的历史记录功能能够正常工作,即使需要使用 jQuery 插件。 ... [详细]
  • 本文详细介绍了 TypeScript 中函数的多种定义方式,包括命名函数、匿名函数、类型别名和接口。同时,还探讨了函数参数的可选性、默认值、剩余参数以及函数重载等高级特性。 ... [详细]
  • 多线程基础概览
    本文探讨了多线程的起源及其在现代编程中的重要性。线程的引入是为了增强进程的稳定性,确保一个进程的崩溃不会影响其他进程。而进程的存在则是为了保障操作系统的稳定运行,防止单一应用程序的错误导致整个系统的崩溃。线程作为进程的逻辑单元,多个线程共享同一CPU,需要合理调度以避免资源竞争。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 优化Vite 1.0至2.0升级过程中遇到的某些代码块过大问题解决方案
    本文详细探讨了在将项目从 Vite 1.0 升级到 2.0 的过程中,如何解决某些代码块过大的问题。通过具体的编码示例,文章提供了全面的解决方案,帮助开发者有效优化打包性能。 ... [详细]
  • 在处理大规模数据数组时,优化分页组件对于提高页面加载速度和用户体验至关重要。本文探讨了如何通过高效的分页策略,减少数据渲染的负担,提升应用性能。具体方法包括懒加载、虚拟滚动和数据预取等技术,这些技术能够显著降低内存占用和提升响应速度。通过实际案例分析,展示了这些优化措施的有效性和可行性。 ... [详细]
  • 本文旨在解决 MySQL 无法连接到 localhost 的常见问题,并提供详细的步骤来确保 MySQL 服务正确启动和配置。 ... [详细]
  • 本文详细介绍了在天正CAD中如何调整和修改尺寸标注的方法,包括改变标注数字大小、修改文字样式、调整标注比例等实用技巧。 ... [详细]
author-avatar
fionafongkaian
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有