如何使用 Dojo 1.10 创建单页 Web 应用程序?
How do you create a single page web application using Dojo 1.10?
我找到了几个关于如何创建单页应用程序的示例,但我不确定该采用哪条路径。我的 Web 应用程序完全基于桌面浏览器 - 不需要移动支持。
一个人在使用 dojox/app(但这主要针对移动应用程序 - 它是否可以用于桌面应用程序并完全支持标准 dojo 的所有内容,包括桌面小部件和功能?)
另一个正在使用这个例子Dojorama
我也找到了这个例子Dojomat
有推荐的方法吗?
这是我不久前做的一个示例/入门应用程序,它得到了 dojo 人员的祝福。 https://github.com/denov/dojo-demo
我没有使用 Dojo Toolkit 的丰富经验,但我在我的项目中执行了以下步骤:
为应用程序创建布局:
<body class="claro">
<div data-dojo-type="dijit/layout/LayoutContainer">
<div data-dojo-type="app/MainMenu" data-dojo-props="region: 'center'"></div>
<div data-dojo-type="dijit/layout/ContentContainer" id="contentContainer"></div>
</div>
</body>
现在我注册路由,当 hash 改变时,我检查 contentContainer
:
var self = this;
if (this.content){
this.content.destroyRecursive(); // Dijit widget method
}
require([
pathToApplicationModule // Maked as dedicated widget
], function (Widget){
self.content = new Widget();
self.content.placeAt(registry.byId("contentContainer");
self.content.startup();
});
应用程序的每一部分都是Widget,例如:
define([
"dojo/_base/declare",
"dijit/_WidgetBase",
"dijit/_TemplatedMixin",
"dijit/_WidgetsInTemplateMixin",
"dojo/text!./templates/MainMenu.html",
"dijit/MenuBar",
"dijit/MenuItem"
], function (
declare,
WidgetBase,
TemplatedMixin,
WidgetsInTemplateMixin,
template
){
return declare("app.MainMenu", [
WidgetBase,
TemplatedMixin,
WidgetsInTemplateMixin
], {
// Here main menu properties: template, actions, etc.
});
});
用户权限呢?我不知道。也许,通过 AJAX.
加载
我找到了几个关于如何创建单页应用程序的示例,但我不确定该采用哪条路径。我的 Web 应用程序完全基于桌面浏览器 - 不需要移动支持。
一个人在使用 dojox/app(但这主要针对移动应用程序 - 它是否可以用于桌面应用程序并完全支持标准 dojo 的所有内容,包括桌面小部件和功能?)
另一个正在使用这个例子Dojorama
我也找到了这个例子Dojomat
有推荐的方法吗?
这是我不久前做的一个示例/入门应用程序,它得到了 dojo 人员的祝福。 https://github.com/denov/dojo-demo
我没有使用 Dojo Toolkit 的丰富经验,但我在我的项目中执行了以下步骤:
为应用程序创建布局:
<body class="claro"> <div data-dojo-type="dijit/layout/LayoutContainer"> <div data-dojo-type="app/MainMenu" data-dojo-props="region: 'center'"></div> <div data-dojo-type="dijit/layout/ContentContainer" id="contentContainer"></div> </div> </body>
现在我注册路由,当 hash 改变时,我检查
contentContainer
:var self = this; if (this.content){ this.content.destroyRecursive(); // Dijit widget method } require([ pathToApplicationModule // Maked as dedicated widget ], function (Widget){ self.content = new Widget(); self.content.placeAt(registry.byId("contentContainer"); self.content.startup(); });
应用程序的每一部分都是Widget,例如:
define([ "dojo/_base/declare", "dijit/_WidgetBase", "dijit/_TemplatedMixin", "dijit/_WidgetsInTemplateMixin", "dojo/text!./templates/MainMenu.html", "dijit/MenuBar", "dijit/MenuItem" ], function ( declare, WidgetBase, TemplatedMixin, WidgetsInTemplateMixin, template ){ return declare("app.MainMenu", [ WidgetBase, TemplatedMixin, WidgetsInTemplateMixin ], { // Here main menu properties: template, actions, etc. }); });
用户权限呢?我不知道。也许,通过 AJAX.
加载