Dojo Build系统介绍

介绍了bdBuild, 一种用JavaScript编写的通用Build系统,适用于任何Web应用的打包。文章详细阐述了bdBuild的工作原理及其在Dojo框架中的具体应用,通过层(layer)的概念优化了JavaScript文件的组织。

1. 简介

\

Build系统是产品正式发布的最后一道工序,其效率和质量直接决定着最终产品的效率和质量。虽然在传统应用中,Build系统已经相当成熟,但在Web领域,依然是八仙过海,各显神通,甚至不经Build就直接上线的也比比皆是。Web系统的零散性、复杂性,也决定了对其进行Build是一件复杂的事情。但通过Dojo,我们认识到了一款开源的Web应用Build系统:bdBuild,也见识了其强大的功能。它是一个独立的通用Build系统,完全用JavaScript写成,可以运行于NodeJS或者Rhino等JavaScript引擎,理论上可以对任何Web应用进行Build。下面就将介绍Dojo中是如何用bdBuild系统来实现Web应用的Build的。以此为起点,你也可以利用bdBuild实现自己的Web应用Build系统,对非Dojo的应用来进行打包。

\

2. bdBuild系统简介

\

bdBuild是一套开源的前端应用Build引擎,完全用JavaScript写成,可运行于Node.js,Rhino等JavaScript引擎。其强大的功能和灵活可扩展的架构使得其能够应用于任何Web应用的打包。Build在传统应用中可以翻译为构建,而在Web中,也许翻译成打包更加适合。一个合格的Web Build系统至少应该能够完成以下几件事情:

\
  1. 排除开发时文件,比如备份文件,代码中的调试信息,单元测试文件,等等。\
  2. 将页面需要的多个资源文件打包成一个文件,并进行压缩,通常是针对JavaScript和CSS文件。这个过程包括了自动处理资源文件之间的依赖关系,能够按顺序进行打包。\
  3. 拷贝资源文件到目标位置。\

基本上来说,这些工作的最终目的都是为了提高性能,Http协议的特性决定了多次请求取得多个小文件的效率远低于一次请求一个大文件。所以Web Build的首要目标就是合并小文件形成一个大文件。为了实现这些通用功能,bdBuild系统将Build的过程分为以下几个步骤:

\
  1. 发现资源(discovery)。即找到最终产品所需要的所有资源,不仅包括JavaScript文件,还包括图片,CSS等等。bdBuild实现了默认的资源发现引擎,你也可以通过创建自己的资源发现引擎来告诉系统如何寻找需要的资源。\
  2. 转换资源(transform)。即对每个资源进行相应的处理,这个处理是一个有序可扩展的步骤。例如,读取文本,压缩JavaScript代码,就是2 个不同的转换步骤,前面所有转换步骤的结果是作为下一个步骤的输入,这样实现了对资源的多重加工。你可以通过配置文件来加入自己的资源处理步骤。\
  3. 控制打包(build control)。这通过一个配置文件,来精确控制每个资源转换的顺序和依赖关系。bdBuild还在其中引入了Gate的概念,将打包过程分为不同的阶段。\

虽然当前bdBuild系统仍然处于alpha测试阶段,但是Dojo已经对其进行完善和封装,形成了自己的Build系统,在已经发布的Dojo 1.7 beta版本中,我们已经可以使用它来进行Web应用的打包。

\

3. Dojo Build系统简介

\

要使用Dojo的Build系统,首先需要下载源码版的Release包,在util/build下就是build相关的工具:

\

e2470b3c0f529fd392993871c0bb774c.png

\

Dojo 对bdBuild系统进行了相当程度的封装,使得针对Dojo的打包变的更加容易,通过引入层(layer)的概念,可以很方便的指定哪些模块应该被压缩到同一个JavaScript文件。同时,Dojo Build系统还会自动把其它文件拷贝到目标文件夹,每个JavaScript文件或者CSS文件都会同时被压缩。下面的代码说明了layer的作用:

\
\\u0026lt;script type=\"text/javascript\" src="/dojoroot/dojo/dojo.js"\u0026gt;\u0026lt;/script\u0026gt;\\u0026lt;script type=\"text/javascript\" src="/dojoroot/dijit/dijit.js"\u0026gt;\u0026lt;/script\u0026gt;\\u0026lt;script type=\"text/javascript\" src="/js /mylayer.js"\u0026gt;\u0026lt;/script\u0026gt;
\

这是在页面中引入JavaScript的一段典型代码,其中dojo.js, dijit.js和mylayer.js就是在build系统中配置的3个layer,它们都包含了所有各自需要的代码。通过layer的方式,能够把页面需要的多个JavaScript文件打包成一个,加快了页面的载入速度。layer是在Build的配置文件profile中指定的,如下面的介绍。

\

Profile的概念

\

通常一个完整的系统会不只有一个layer,而且对于同一页面,也有可能需要多个layer。所以,Dojo定义了profile这个概念,来描述整个打包的配置和参数。。在dojoroot/util/buildscripts/profiles/下可以看找到系统自带的一些profile文件,它们用于打包标准的dojo.js和dijit.js等等。一个典型的profile文件示例如下:

\
\dependencies = {\    layers: [\    {\        name: \"dojo/dojo.js\
下载前可以先看下教程 https://pan.quark.cn/s/a426667488ae 标题“仿淘宝jquery图片左右切换带数字”揭示了这是一个关于运用jQuery技术完成的图片轮播机制,其特色在于具备淘宝在线平台普遍存在的图片切换表现,并且在整个切换环节中会展示当前图片的序列号。 此类功能一般应用于电子商务平台的产品呈现环节,使用户可以便捷地查看多张商品的照片。 说明中的“NULL”表示未提供进一步的信息,但我们可以借助标题来揣摩若干核心的技术要点。 在构建此类功能时,开发者通常会借助以下技术手段:1. **jQuery库**:jQuery是一个应用广泛的JavaScript框架,它简化了HTML文档的遍历、事件管理、动画效果以及Ajax通信。 在此项目中,jQuery将负责处理用户的点击动作(实现左右切换),并且制造流畅的过渡效果。 2. **图片轮播扩展工具**:开发者或许会采用现成的jQuery扩展,例如Slick、Bootstrap Carousel或个性化的轮播函数,以达成图片切换的功能。 这些扩展能够辅助迅速构建功能完善的轮播模块。 3. **即时数字呈现**:展示当前图片的序列号,这需要通过JavaScript或jQuery来追踪并调整。 每当图片切换时,相应的数字也会同步更新。 4. **CSS美化**:为了达成淘宝图片切换的视觉效果,可能需要设计特定的CSS样式,涵盖图片的排列方式、过渡效果、点状指示器等。 CSS3的动画和过渡特性(如`transition`和`animation`)在此过程中扮演关键角色。 5. **事件监测**:运用jQuery的`.on()`方法来监测用户的操作,比如点击左右控制按钮或自动按时间间隔切换。 根据用户的交互,触发相应的函数来执行...
垃圾实例分割数据集 一、基础信息 • 数据集名称:垃圾实例分割数据集 • 图片数量: 训练集:7,000张图片 验证集:426张图片 测试集:644张图片 • 训练集:7,000张图片 • 验证集:426张图片 • 测试集:644张图片 • 分类类别: 垃圾(Sampah) • 垃圾(Sampah) • 标注格式:YOLO格式,包含实例分割的多边形点坐标,适用于实例分割任务。 • 数据格式:图片文件 二、适用场景 • 智能垃圾检测系统开发:数据集支持实例分割任务,帮助构建能够自动识别和分割图像中垃圾区域的AI模型,适用于智能清洁机器人、自动垃圾桶等应用。 • 环境监控与管理:集成到监控系统中,用于实时检测公共区域的垃圾堆积,辅助环境清洁和治理决策。 • 计算机视觉研究:支持实例分割算法的研究和优化,特别是在垃圾识别领域,促进AI在环保方面的创新。 • 教育与实践:可用于高校或培训机构的AI课程,作为实例分割技术的实践数据集,帮助学生理解计算机视觉应用。 三、数据集优势 • 精确的实例分割标注:每个垃圾实例都使用详细的多边形点进行标注,确保分割边界准确,提升模型训练效果。 • 数据多样性:包含多种垃圾物品实例,覆盖不同场景,增强模型的泛化能力和鲁棒性。 • 格式兼容性强:YOLO标注格式易于与主流深度学习框架集成,如YOLO系列、PyTorch等,方便研究人员和开发者使用。 • 实际应用价值:直接针对现实世界的垃圾管理需求,为自动化环保解决方案提供可靠数据支持,具有重要的社会意义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值