📅  最后修改于: 2023-12-03 14:43:17.360000             🧑  作者: Mango
jQuery 和 Dojo 都是 JavaScript 库,可以用来简化浏览器端的开发。jQuery 是最为流行的 JavaScript 库之一,而 Dojo 则是一个更全面的框架,提供了更多的功能。
在 jQuery 中,选择器(选择 HTML 元素)和操作(添加、删除、修改等)是最重要的概念。jQuery 的语法风格被广泛认为更加简洁易用,代码也比较易于维护,因为它经常针对多个元素进行操作。
以下是一些常见的 jQuery 代码示例:
// 选择元素并添加事件处理程序
$("button").click(function() {
$("p").hide();
});
// 获取元素的属性
var title = $("h1").attr("title");
// 调整样式
$("p").css("color", "red");
// 添加新元素
$("body").append("<p>Hello World!</p>");
Dojo 的语法风格比较冗长,但它提供了更多的功能。Dojo 强调模块化编程,因此代码通常被组织在模块中,而不是单靠函数。
以下是一些常见的 Dojo 代码示例:
// 选择元素并添加事件处理程序
require(["dojo/on", "dojo/query"], function(on, query) {
on(query("button"), "click", function() {
query("p").style("display", "none");
});
});
// 获取元素的属性
require(["dojo/dom-attr"], function(domAttr) {
var title = domAttr.get("h1", "title");
});
// 调整样式
require(["dojo/dom-style", "dojo/query"], function(domStyle, query) {
query("p").forEach(function(node) {
domStyle.set(node, "color", "red");
});
});
// 添加新元素
require(["dojo/dom-construct"], function(domConstruct) {
domConstruct.create("p", { innerHTML: "Hello World!" }, "body");
});
jQuery 没有内置的模块化系统,但是可以结合 AMD 或 CommonJS 这样的标准来构建模块化的应用程序。
Dojo 是一个完全支持模块化的框架,并内置了 AMD 的支持。在 Dojo 中,每个模块都是一个独立的文件,并且可以通过 define() 函数来定义和引用之间的依赖关系。
以下是一个简单的 Dojo 模块示例:
// 定义模块
define([
"dojo/_base/declare",
"dojo/dom-construct",
"dojo/dom-style"
], function(declare, domConstruct, domStyle) {
return declare(null, {
constructor: function(node) {
this.node = node;
},
hide: function() {
domStyle.set(this.node, "display", "none");
},
setContent: function(content) {
domConstruct.create("p", { innerHTML: content }, this.node);
}
});
});
// 引用模块
require([
"my/module",
"dojo/domReady!"
], function(MyModule) {
var node = document.getElementById("some-id");
var myModule = new MyModule(node);
myModule.hide();
myModule.setContent("Hello World!");
});
jQuery 提供了许多常用的功能,包括 AJAX、动画、DOM 操作、事件处理、特效等等。
以下是一些 jQuery 常用功能的示例:
// 发送 AJAX 请求
$.ajax({
url: "http://example.com/data",
success: function(data) {
console.log(data);
}
});
// 执行动画效果
$("p").animate({
opacity: 0.25,
left: "+=50"
}, 500);
// 修改 DOM 内容
$("h1").text("Hello World!");
// 绑定事件处理程序
$("button").click(function() {
$("p").hide();
});
Dojo 提供了更多的功能,包括图表、数据可视化、数据存储、国际化、模板、音频和视频等。
以下是一些 Dojo 常用功能的示例:
// 创建一个饼图
require([
"dojox/charting/Chart",
"dojox/charting/themes/Desert",
"dojox/charting/plot2d/Pie",
"dojo/domReady!"
], function(Chart, Desert, Pie) {
var chart = new Chart("chart");
chart.setTheme(Desert);
chart.addPlot("default", {
type: "Pie",
labels: true,
markers: true
});
chart.addSeries("Sales", [
{ y: 10, text: "Apples" },
{ y: 20, text: "Oranges" },
{ y: 30, text: "Bananas" },
{ y: 40, text: "Peaches" }
]);
chart.render();
});
// 执行动画效果
require(["dojo/fx", "dojo/dom", "dojo/dom-geometry", "dojo/dom-style", "dojo/domReady!"],
function(fx, dom, domGeometry, domStyle){
var node = dom.byId("some-id");
var pos = domGeometry.position(node);
fx.animateProperty({
node: node,
duration: 1000,
properties: {
left: 0,
top: 0,
height: { end: 300, unit: "px" },
width: { end: 300, unit: "px" }
}
}).play();
});
// 处理如下划线文本
require([
"dojo/dom-construct",
"dojo/string",
"dojo/domReady!"
], function(domConstruct, string) {
var data = { name: "John Smith", age: 42 };
var html = string.substitute("Hello ${name}, you are ${age} years old.", data);
domConstruct.create("p", { innerHTML: html }, "some-id");
});
// 多语言支持
require([
"dojo/i18n!my/nls/messages",
"dojo/dom",
"dojo/domReady!"
], function(messages, dom) {
dom.byId("some-id").innerHTML = messages.hello;
});
jQuery 和 Dojo 都是出色的 JavaScript 库,用于在浏览器中简化开发工作。jQuery 比 Dojo 更为流行,更加简洁易用,但 Dojo 提供了更全面的功能和模块化支持。选择哪个库取决于您的具体需求和个人偏好。