如何使用 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.

加载