首页 > 解决方案 > 如何结合非 AMD 代码构建 Dojo?

问题描述

我有一个自定义浏览器应用程序,它通过require调用加载一些 Dojo AMD 模块,并且我正在尝试创建一个自定义 Dojo 构建以消除在每次页面加载时加载多个 JS 文件的开销。

我的应用程序代码是非 AMD 的。require只要浏览器加载我的 JS 文件,它就会调用全局级代码。这在开发中运行良好,我想尽可能避免将其更改为 AMD。

为此,我想要一个将我所需的 Dojo 模块和我的应用程序代码组合到一个缩小的 JS 文件中的构建,但我的应用程序代码处于全局级别(不以任何方式包装),因此它可以按原样工作。

我的构建有以下profile.js文件。这几乎可以满足我的要求,但是它将我的应用程序代码包装在一个阻止它工作的函数中。如何告诉构建过程不要包装我的应用程序代码?

我目前正在使用 Dojo 1.10.10,但如果有帮助可以升级它。

var profile = (function(){
    var dojoBase='../../dojo-release-1.10.10-src/';

    return {
        basePath: './src',
        releaseDir: '../release',
        releaseName: 'main',
        action: 'release',
        cssOptimize:'comments',
        mini:true,
        stripConsole:'none',
        selectorEngine:'acme',

        packages:[{
            name: 'dojo',
            location: dojoBase+'dojo'
        },{
            name: 'dijit',
            location: dojoBase+'dijit'
        },{
            name: 'dojox',
            location: dojoBase+'dojox'
        },{
            name: 'app',
            location: '.',
        }],

        layers:{
            'main.min':{
                include:['dojo/dojo','dojo/on','dojo/request/xhr','dojo/parser','dojo/query','dojo/dom-construct',
                    'dojo/dom-class','dojo/NodeList-dom','dojo/domReady','dijit/registry','dojox/widget/Toaster',
                    'app/main'],
                customBase:true,
                boot:true
            }
        }
    };
})();

标签: javascriptdojo

解决方案


推荐阅读