使用Dojo';s模块化以分离javascript文件

使用Dojo';s模块化以分离javascript文件,javascript,html,dojo,Javascript,Html,Dojo,我是Dojo的新手,我一直在尝试使用Esri的Javascript API开发一个地图应用程序,该API基于Dojo框架 <link rel="stylesheet" href="css/normalize.css"> <link rel="stylesheet" href="css/main.css"> </head> <body class="nihilo"> <!--[if

我是Dojo的新手,我一直在尝试使用Esri的Javascript API开发一个地图应用程序,该API基于Dojo框架

        <link rel="stylesheet" href="css/normalize.css">
        <link rel="stylesheet" href="css/main.css">
    </head>
    <body class="nihilo">
        <!--[if lt IE 9]>
                <p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
        <![endif]-->
        <div id="header">
            <div id="logo">
                <a href="http://www.co.washington.mn.us/"><img src="img/clearlogo.png" alt="Washington County Logo" /></a>
            </div>              
            <div class="login">
                <a id="loginLink" href=""></a>
            </div>
            <div id="title">
                <h1></h1>
            </div>

        </div>
        <div id="clear" style="clear:both;"></div>
        <div class="container">
            <div id="sidebar">
                <div class="inner">
                    <div id="edit" >
                        <h2 id="addText" >Add Features:</h2>
                        <div id="editor">
                        </div>
                    </div>
                    <h2>Find Address:</h2>
                    <div id="searchAddr"></div>
                    <h2>Find Name:</h2>
                    <div id="searchName"></div>
                </div>
            </div>
            <div id="map">  
            </div>
            <div class="clear"></div>
        </div>

        <script src="js/vendor/modernizr-2.6.2.min.js"></script>

        <!--<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>-->
        <script>
            var dojoConfig = {
                parseOnLoad: false,
                packages: [
                    {name: "app", location: "/new_app/js/app"}
                ],
                has: {
                    "dojo-firebug": true,
                    "dojo-debug-messages": true
                },
            };
        </script>
        <script src="//serverapi.arcgisonline.com/jsapi/arcgis/3.5/" data-dojo-config="parseOnLoad: true, isDebug: true"></script>
        <script src="js/plugins.js"></script>
        <script src="js/main.js"></script>
        <script src="js/sha512.js"></script>
    </body>
</html>
我决定从头开始,将应用程序的不同部分分离成不同的JS文件,并使用Dojo的AMD加载程序加载它们

        <link rel="stylesheet" href="css/normalize.css">
        <link rel="stylesheet" href="css/main.css">
    </head>
    <body class="nihilo">
        <!--[if lt IE 9]>
                <p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
        <![endif]-->
        <div id="header">
            <div id="logo">
                <a href="http://www.co.washington.mn.us/"><img src="img/clearlogo.png" alt="Washington County Logo" /></a>
            </div>              
            <div class="login">
                <a id="loginLink" href=""></a>
            </div>
            <div id="title">
                <h1></h1>
            </div>

        </div>
        <div id="clear" style="clear:both;"></div>
        <div class="container">
            <div id="sidebar">
                <div class="inner">
                    <div id="edit" >
                        <h2 id="addText" >Add Features:</h2>
                        <div id="editor">
                        </div>
                    </div>
                    <h2>Find Address:</h2>
                    <div id="searchAddr"></div>
                    <h2>Find Name:</h2>
                    <div id="searchName"></div>
                </div>
            </div>
            <div id="map">  
            </div>
            <div class="clear"></div>
        </div>

        <script src="js/vendor/modernizr-2.6.2.min.js"></script>

        <!--<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>-->
        <script>
            var dojoConfig = {
                parseOnLoad: false,
                packages: [
                    {name: "app", location: "/new_app/js/app"}
                ],
                has: {
                    "dojo-firebug": true,
                    "dojo-debug-messages": true
                },
            };
        </script>
        <script src="//serverapi.arcgisonline.com/jsapi/arcgis/3.5/" data-dojo-config="parseOnLoad: true, isDebug: true"></script>
        <script src="js/plugins.js"></script>
        <script src="js/main.js"></script>
        <script src="js/sha512.js"></script>
    </body>
</html>
这是我到目前为止所拥有的,当页面当前正在工作并且Firebug验证javascript文件是否被正确访问时,dojo应用程序中的javascript都没有工作

        <link rel="stylesheet" href="css/normalize.css">
        <link rel="stylesheet" href="css/main.css">
    </head>
    <body class="nihilo">
        <!--[if lt IE 9]>
                <p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
        <![endif]-->
        <div id="header">
            <div id="logo">
                <a href="http://www.co.washington.mn.us/"><img src="img/clearlogo.png" alt="Washington County Logo" /></a>
            </div>              
            <div class="login">
                <a id="loginLink" href=""></a>
            </div>
            <div id="title">
                <h1></h1>
            </div>

        </div>
        <div id="clear" style="clear:both;"></div>
        <div class="container">
            <div id="sidebar">
                <div class="inner">
                    <div id="edit" >
                        <h2 id="addText" >Add Features:</h2>
                        <div id="editor">
                        </div>
                    </div>
                    <h2>Find Address:</h2>
                    <div id="searchAddr"></div>
                    <h2>Find Name:</h2>
                    <div id="searchName"></div>
                </div>
            </div>
            <div id="map">  
            </div>
            <div class="clear"></div>
        </div>

        <script src="js/vendor/modernizr-2.6.2.min.js"></script>

        <!--<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>-->
        <script>
            var dojoConfig = {
                parseOnLoad: false,
                packages: [
                    {name: "app", location: "/new_app/js/app"}
                ],
                has: {
                    "dojo-firebug": true,
                    "dojo-debug-messages": true
                },
            };
        </script>
        <script src="//serverapi.arcgisonline.com/jsapi/arcgis/3.5/" data-dojo-config="parseOnLoad: true, isDebug: true"></script>
        <script src="js/plugins.js"></script>
        <script src="js/main.js"></script>
        <script src="js/sha512.js"></script>
    </body>
</html>
如果你以前有过这样的经历,并且能为我指出正确的方向,我会非常感激

        <link rel="stylesheet" href="css/normalize.css">
        <link rel="stylesheet" href="css/main.css">
    </head>
    <body class="nihilo">
        <!--[if lt IE 9]>
                <p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
        <![endif]-->
        <div id="header">
            <div id="logo">
                <a href="http://www.co.washington.mn.us/"><img src="img/clearlogo.png" alt="Washington County Logo" /></a>
            </div>              
            <div class="login">
                <a id="loginLink" href=""></a>
            </div>
            <div id="title">
                <h1></h1>
            </div>

        </div>
        <div id="clear" style="clear:both;"></div>
        <div class="container">
            <div id="sidebar">
                <div class="inner">
                    <div id="edit" >
                        <h2 id="addText" >Add Features:</h2>
                        <div id="editor">
                        </div>
                    </div>
                    <h2>Find Address:</h2>
                    <div id="searchAddr"></div>
                    <h2>Find Name:</h2>
                    <div id="searchName"></div>
                </div>
            </div>
            <div id="map">  
            </div>
            <div class="clear"></div>
        </div>

        <script src="js/vendor/modernizr-2.6.2.min.js"></script>

        <!--<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>-->
        <script>
            var dojoConfig = {
                parseOnLoad: false,
                packages: [
                    {name: "app", location: "/new_app/js/app"}
                ],
                has: {
                    "dojo-firebug": true,
                    "dojo-debug-messages": true
                },
            };
        </script>
        <script src="//serverapi.arcgisonline.com/jsapi/arcgis/3.5/" data-dojo-config="parseOnLoad: true, isDebug: true"></script>
        <script src="js/plugins.js"></script>
        <script src="js/main.js"></script>
        <script src="js/sha512.js"></script>
    </body>
</html>
HTML主页面:

        <link rel="stylesheet" href="css/normalize.css">
        <link rel="stylesheet" href="css/main.css">
    </head>
    <body class="nihilo">
        <!--[if lt IE 9]>
                <p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
        <![endif]-->
        <div id="header">
            <div id="logo">
                <a href="http://www.co.washington.mn.us/"><img src="img/clearlogo.png" alt="Washington County Logo" /></a>
            </div>              
            <div class="login">
                <a id="loginLink" href=""></a>
            </div>
            <div id="title">
                <h1></h1>
            </div>

        </div>
        <div id="clear" style="clear:both;"></div>
        <div class="container">
            <div id="sidebar">
                <div class="inner">
                    <div id="edit" >
                        <h2 id="addText" >Add Features:</h2>
                        <div id="editor">
                        </div>
                    </div>
                    <h2>Find Address:</h2>
                    <div id="searchAddr"></div>
                    <h2>Find Name:</h2>
                    <div id="searchName"></div>
                </div>
            </div>
            <div id="map">  
            </div>
            <div class="clear"></div>
        </div>

        <script src="js/vendor/modernizr-2.6.2.min.js"></script>

        <!--<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>-->
        <script>
            var dojoConfig = {
                parseOnLoad: false,
                packages: [
                    {name: "app", location: "/new_app/js/app"}
                ],
                has: {
                    "dojo-firebug": true,
                    "dojo-debug-messages": true
                },
            };
        </script>
        <script src="//serverapi.arcgisonline.com/jsapi/arcgis/3.5/" data-dojo-config="parseOnLoad: true, isDebug: true"></script>
        <script src="js/plugins.js"></script>
        <script src="js/main.js"></script>
        <script src="js/sha512.js"></script>
    </body>
</html>
UI JS:

        <link rel="stylesheet" href="css/normalize.css">
        <link rel="stylesheet" href="css/main.css">
    </head>
    <body class="nihilo">
        <!--[if lt IE 9]>
                <p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
        <![endif]-->
        <div id="header">
            <div id="logo">
                <a href="http://www.co.washington.mn.us/"><img src="img/clearlogo.png" alt="Washington County Logo" /></a>
            </div>              
            <div class="login">
                <a id="loginLink" href=""></a>
            </div>
            <div id="title">
                <h1></h1>
            </div>

        </div>
        <div id="clear" style="clear:both;"></div>
        <div class="container">
            <div id="sidebar">
                <div class="inner">
                    <div id="edit" >
                        <h2 id="addText" >Add Features:</h2>
                        <div id="editor">
                        </div>
                    </div>
                    <h2>Find Address:</h2>
                    <div id="searchAddr"></div>
                    <h2>Find Name:</h2>
                    <div id="searchName"></div>
                </div>
            </div>
            <div id="map">  
            </div>
            <div class="clear"></div>
        </div>

        <script src="js/vendor/modernizr-2.6.2.min.js"></script>

        <!--<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>-->
        <script>
            var dojoConfig = {
                parseOnLoad: false,
                packages: [
                    {name: "app", location: "/new_app/js/app"}
                ],
                has: {
                    "dojo-firebug": true,
                    "dojo-debug-messages": true
                },
            };
        </script>
        <script src="//serverapi.arcgisonline.com/jsapi/arcgis/3.5/" data-dojo-config="parseOnLoad: true, isDebug: true"></script>
        <script src="js/plugins.js"></script>
        <script src="js/main.js"></script>
        <script src="js/sha512.js"></script>
    </body>
</html>
define([
    "dojo/dom",
    "dijit/Dialog",
    "dijit/form/Form",
    "dojo/_base/connect",
    "dijit/form/Button",
    "dojo/request",
    "dojo/dom-attr",
    "dojo/json",
    "dojo/domReady!"], function(declare, Dialog) {
// Class with custom properties and methods
    return declare(null, {
        loginText: '<div id="loginForm"><label for="email">User:</label> <input id="email" type="text" name="email" /><br /><label for="password">Password:</label> <input id="password" type="password" name="password" id="password"/><br /><button id="submitLogin">Login</button></div>',
        messageDialog: new Dialog({
            title: "Message",
            style: "width:400px;"
        }),
        loginDialog: new Dialog({
            title: "User Login",
            content: loginText,
            style: "width: 400px;"
        }),
        loginButton: new Button({
            label: "Login",
            onClick: login()
        }, "submitLogin"),
        start: function() {
            checkLogin();
        },
        login: function() {
            ui.loginDialog.hide();
            var username = dojo.byId("email");
            var password = dojo.byId("password");
            dojo.attr(password, "value", hex_sha512(dojo.attr(password, "value")).toUpperCase());
            request.post("index.php", {
                data: {
                    a: "login",
                    p: dojo.attr(password, "value"),
                    email: dojo.attr(username, "value"),
                },
                handleAs: "json",
                timeout: 10000
            }).then(function(response) {
                checkLogin();
            });
        },
        checkLogin: function() {
            request.post("index.php", {
                data: {
                    a: "login_check"
                },
                handleAs: "json",
                timeout: 10000
            }).then(function(result) {
                link = dom.byId("loginLink");
                if (result.login == "success") {
                    link.innerHTML = "Logout";
                    dojo.attr(link, "href", "?a=logout");
                    if (ui.loginDialogHandle)
                        dojo.disconnect(ui.loginDialogHandle);
                }
                else {
                    link.innerHTML = "Login";
                    dojo.attr(link, "href", "#");
                    ui.loginDialogHandle = dojo.connect(link, "onclick", ui.loginDialog, "show");
                }
            });
        }
    })
});
define([
    "dojo/_base/declare",
    "dojo/dom",
    "dijit/Dialog",
    "dijit/form/Form",
    "dojo/_base/connect",
    "dijit/form/Button",
    "dojo/request",
    "dojo/dom-attr",
    "dojo/json",
    "dojo/domReady!"], function(declare, dom, Dialog, connect, Button, request) {
请看。它描述了如何在Dojo中定义类

        <link rel="stylesheet" href="css/normalize.css">
        <link rel="stylesheet" href="css/main.css">
    </head>
    <body class="nihilo">
        <!--[if lt IE 9]>
                <p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
        <![endif]-->
        <div id="header">
            <div id="logo">
                <a href="http://www.co.washington.mn.us/"><img src="img/clearlogo.png" alt="Washington County Logo" /></a>
            </div>              
            <div class="login">
                <a id="loginLink" href=""></a>
            </div>
            <div id="title">
                <h1></h1>
            </div>

        </div>
        <div id="clear" style="clear:both;"></div>
        <div class="container">
            <div id="sidebar">
                <div class="inner">
                    <div id="edit" >
                        <h2 id="addText" >Add Features:</h2>
                        <div id="editor">
                        </div>
                    </div>
                    <h2>Find Address:</h2>
                    <div id="searchAddr"></div>
                    <h2>Find Name:</h2>
                    <div id="searchName"></div>
                </div>
            </div>
            <div id="map">  
            </div>
            <div class="clear"></div>
        </div>

        <script src="js/vendor/modernizr-2.6.2.min.js"></script>

        <!--<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>-->
        <script>
            var dojoConfig = {
                parseOnLoad: false,
                packages: [
                    {name: "app", location: "/new_app/js/app"}
                ],
                has: {
                    "dojo-firebug": true,
                    "dojo-debug-messages": true
                },
            };
        </script>
        <script src="//serverapi.arcgisonline.com/jsapi/arcgis/3.5/" data-dojo-config="parseOnLoad: true, isDebug: true"></script>
        <script src="js/plugins.js"></script>
        <script src="js/main.js"></script>
        <script src="js/sha512.js"></script>
    </body>
</html>
define([…],function())中的序列或参数错误。

        <link rel="stylesheet" href="css/normalize.css">
        <link rel="stylesheet" href="css/main.css">
    </head>
    <body class="nihilo">
        <!--[if lt IE 9]>
                <p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
        <![endif]-->
        <div id="header">
            <div id="logo">
                <a href="http://www.co.washington.mn.us/"><img src="img/clearlogo.png" alt="Washington County Logo" /></a>
            </div>              
            <div class="login">
                <a id="loginLink" href=""></a>
            </div>
            <div id="title">
                <h1></h1>
            </div>

        </div>
        <div id="clear" style="clear:both;"></div>
        <div class="container">
            <div id="sidebar">
                <div class="inner">
                    <div id="edit" >
                        <h2 id="addText" >Add Features:</h2>
                        <div id="editor">
                        </div>
                    </div>
                    <h2>Find Address:</h2>
                    <div id="searchAddr"></div>
                    <h2>Find Name:</h2>
                    <div id="searchName"></div>
                </div>
            </div>
            <div id="map">  
            </div>
            <div class="clear"></div>
        </div>

        <script src="js/vendor/modernizr-2.6.2.min.js"></script>

        <!--<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>-->
        <script>
            var dojoConfig = {
                parseOnLoad: false,
                packages: [
                    {name: "app", location: "/new_app/js/app"}
                ],
                has: {
                    "dojo-firebug": true,
                    "dojo-debug-messages": true
                },
            };
        </script>
        <script src="//serverapi.arcgisonline.com/jsapi/arcgis/3.5/" data-dojo-config="parseOnLoad: true, isDebug: true"></script>
        <script src="js/plugins.js"></script>
        <script src="js/main.js"></script>
        <script src="js/sha512.js"></script>
    </body>
</html>
UI JS:

        <link rel="stylesheet" href="css/normalize.css">
        <link rel="stylesheet" href="css/main.css">
    </head>
    <body class="nihilo">
        <!--[if lt IE 9]>
                <p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
        <![endif]-->
        <div id="header">
            <div id="logo">
                <a href="http://www.co.washington.mn.us/"><img src="img/clearlogo.png" alt="Washington County Logo" /></a>
            </div>              
            <div class="login">
                <a id="loginLink" href=""></a>
            </div>
            <div id="title">
                <h1></h1>
            </div>

        </div>
        <div id="clear" style="clear:both;"></div>
        <div class="container">
            <div id="sidebar">
                <div class="inner">
                    <div id="edit" >
                        <h2 id="addText" >Add Features:</h2>
                        <div id="editor">
                        </div>
                    </div>
                    <h2>Find Address:</h2>
                    <div id="searchAddr"></div>
                    <h2>Find Name:</h2>
                    <div id="searchName"></div>
                </div>
            </div>
            <div id="map">  
            </div>
            <div class="clear"></div>
        </div>

        <script src="js/vendor/modernizr-2.6.2.min.js"></script>

        <!--<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>-->
        <script>
            var dojoConfig = {
                parseOnLoad: false,
                packages: [
                    {name: "app", location: "/new_app/js/app"}
                ],
                has: {
                    "dojo-firebug": true,
                    "dojo-debug-messages": true
                },
            };
        </script>
        <script src="//serverapi.arcgisonline.com/jsapi/arcgis/3.5/" data-dojo-config="parseOnLoad: true, isDebug: true"></script>
        <script src="js/plugins.js"></script>
        <script src="js/main.js"></script>
        <script src="js/sha512.js"></script>
    </body>
</html>
define([
    "dojo/dom",
    "dijit/Dialog",
    "dijit/form/Form",
    "dojo/_base/connect",
    "dijit/form/Button",
    "dojo/request",
    "dojo/dom-attr",
    "dojo/json",
    "dojo/domReady!"], function(declare, Dialog) {
// Class with custom properties and methods
    return declare(null, {
        loginText: '<div id="loginForm"><label for="email">User:</label> <input id="email" type="text" name="email" /><br /><label for="password">Password:</label> <input id="password" type="password" name="password" id="password"/><br /><button id="submitLogin">Login</button></div>',
        messageDialog: new Dialog({
            title: "Message",
            style: "width:400px;"
        }),
        loginDialog: new Dialog({
            title: "User Login",
            content: loginText,
            style: "width: 400px;"
        }),
        loginButton: new Button({
            label: "Login",
            onClick: login()
        }, "submitLogin"),
        start: function() {
            checkLogin();
        },
        login: function() {
            ui.loginDialog.hide();
            var username = dojo.byId("email");
            var password = dojo.byId("password");
            dojo.attr(password, "value", hex_sha512(dojo.attr(password, "value")).toUpperCase());
            request.post("index.php", {
                data: {
                    a: "login",
                    p: dojo.attr(password, "value"),
                    email: dojo.attr(username, "value"),
                },
                handleAs: "json",
                timeout: 10000
            }).then(function(response) {
                checkLogin();
            });
        },
        checkLogin: function() {
            request.post("index.php", {
                data: {
                    a: "login_check"
                },
                handleAs: "json",
                timeout: 10000
            }).then(function(result) {
                link = dom.byId("loginLink");
                if (result.login == "success") {
                    link.innerHTML = "Logout";
                    dojo.attr(link, "href", "?a=logout");
                    if (ui.loginDialogHandle)
                        dojo.disconnect(ui.loginDialogHandle);
                }
                else {
                    link.innerHTML = "Login";
                    dojo.attr(link, "href", "#");
                    ui.loginDialogHandle = dojo.connect(link, "onclick", ui.loginDialog, "show");
                }
            });
        }
    })
});
define([
    "dojo/_base/declare",
    "dojo/dom",
    "dijit/Dialog",
    "dijit/form/Form",
    "dojo/_base/connect",
    "dijit/form/Button",
    "dojo/request",
    "dojo/dom-attr",
    "dojo/json",
    "dojo/domReady!"], function(declare, dom, Dialog, connect, Button, request) {
应用程序JS:

        <link rel="stylesheet" href="css/normalize.css">
        <link rel="stylesheet" href="css/main.css">
    </head>
    <body class="nihilo">
        <!--[if lt IE 9]>
                <p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
        <![endif]-->
        <div id="header">
            <div id="logo">
                <a href="http://www.co.washington.mn.us/"><img src="img/clearlogo.png" alt="Washington County Logo" /></a>
            </div>              
            <div class="login">
                <a id="loginLink" href=""></a>
            </div>
            <div id="title">
                <h1></h1>
            </div>

        </div>
        <div id="clear" style="clear:both;"></div>
        <div class="container">
            <div id="sidebar">
                <div class="inner">
                    <div id="edit" >
                        <h2 id="addText" >Add Features:</h2>
                        <div id="editor">
                        </div>
                    </div>
                    <h2>Find Address:</h2>
                    <div id="searchAddr"></div>
                    <h2>Find Name:</h2>
                    <div id="searchName"></div>
                </div>
            </div>
            <div id="map">  
            </div>
            <div class="clear"></div>
        </div>

        <script src="js/vendor/modernizr-2.6.2.min.js"></script>

        <!--<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>-->
        <script>
            var dojoConfig = {
                parseOnLoad: false,
                packages: [
                    {name: "app", location: "/new_app/js/app"}
                ],
                has: {
                    "dojo-firebug": true,
                    "dojo-debug-messages": true
                },
            };
        </script>
        <script src="//serverapi.arcgisonline.com/jsapi/arcgis/3.5/" data-dojo-config="parseOnLoad: true, isDebug: true"></script>
        <script src="js/plugins.js"></script>
        <script src="js/main.js"></script>
        <script src="js/sha512.js"></script>
    </body>
</html>
define([
    "esri/map"
], function(Map) {
    return declare(null, {
        map: null,
        start: function() {
            map = new esri.Map("map", {
                center: [-92.881154, 45.166838],
                zoom: 14,
                basemap: "gray"
            })
        }
    })
});
define([
    "dojo/_base/declare",
    "esri/map"
], function(declare, Map) {
此外,在appjs中,您已经定义了
Map
,因此无需编写

        <link rel="stylesheet" href="css/normalize.css">
        <link rel="stylesheet" href="css/main.css">
    </head>
    <body class="nihilo">
        <!--[if lt IE 9]>
                <p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
        <![endif]-->
        <div id="header">
            <div id="logo">
                <a href="http://www.co.washington.mn.us/"><img src="img/clearlogo.png" alt="Washington County Logo" /></a>
            </div>              
            <div class="login">
                <a id="loginLink" href=""></a>
            </div>
            <div id="title">
                <h1></h1>
            </div>

        </div>
        <div id="clear" style="clear:both;"></div>
        <div class="container">
            <div id="sidebar">
                <div class="inner">
                    <div id="edit" >
                        <h2 id="addText" >Add Features:</h2>
                        <div id="editor">
                        </div>
                    </div>
                    <h2>Find Address:</h2>
                    <div id="searchAddr"></div>
                    <h2>Find Name:</h2>
                    <div id="searchName"></div>
                </div>
            </div>
            <div id="map">  
            </div>
            <div class="clear"></div>
        </div>

        <script src="js/vendor/modernizr-2.6.2.min.js"></script>

        <!--<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>-->
        <script>
            var dojoConfig = {
                parseOnLoad: false,
                packages: [
                    {name: "app", location: "/new_app/js/app"}
                ],
                has: {
                    "dojo-firebug": true,
                    "dojo-debug-messages": true
                },
            };
        </script>
        <script src="//serverapi.arcgisonline.com/jsapi/arcgis/3.5/" data-dojo-config="parseOnLoad: true, isDebug: true"></script>
        <script src="js/plugins.js"></script>
        <script src="js/main.js"></script>
        <script src="js/sha512.js"></script>
    </body>
</html>
map = new esri.Map("map", {
但是

        <link rel="stylesheet" href="css/normalize.css">
        <link rel="stylesheet" href="css/main.css">
    </head>
    <body class="nihilo">
        <!--[if lt IE 9]>
                <p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
        <![endif]-->
        <div id="header">
            <div id="logo">
                <a href="http://www.co.washington.mn.us/"><img src="img/clearlogo.png" alt="Washington County Logo" /></a>
            </div>              
            <div class="login">
                <a id="loginLink" href=""></a>
            </div>
            <div id="title">
                <h1></h1>
            </div>

        </div>
        <div id="clear" style="clear:both;"></div>
        <div class="container">
            <div id="sidebar">
                <div class="inner">
                    <div id="edit" >
                        <h2 id="addText" >Add Features:</h2>
                        <div id="editor">
                        </div>
                    </div>
                    <h2>Find Address:</h2>
                    <div id="searchAddr"></div>
                    <h2>Find Name:</h2>
                    <div id="searchName"></div>
                </div>
            </div>
            <div id="map">  
            </div>
            <div class="clear"></div>
        </div>

        <script src="js/vendor/modernizr-2.6.2.min.js"></script>

        <!--<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>-->
        <script>
            var dojoConfig = {
                parseOnLoad: false,
                packages: [
                    {name: "app", location: "/new_app/js/app"}
                ],
                has: {
                    "dojo-firebug": true,
                    "dojo-debug-messages": true
                },
            };
        </script>
        <script src="//serverapi.arcgisonline.com/jsapi/arcgis/3.5/" data-dojo-config="parseOnLoad: true, isDebug: true"></script>
        <script src="js/plugins.js"></script>
        <script src="js/main.js"></script>
        <script src="js/sha512.js"></script>
    </body>
</html>

PS:可能有龙。。。这些只是我注意到的几件事。

我认为你真的应该把那些
标签放在
中,首先是那些带有
src
属性的标签。嗨,谢谢你的评论。我做了你建议的改变,但我仍然面临一些问题。Firebug没有显示任何错误,类中的函数也没有运行。从你的角度来看,我是否以适当的方式处理这个问题?我对javascript类没有太多的研究,你对启动这样的项目有什么建议也会很有帮助。你能描述一下你的项目的目录结构吗?或者最好在jsfiddle.net上绘制它?另外,为了检查AMD的工作情况,您可以在返回declare(…)之前放置
console.log('bla-bla-bla')
。我已经开始看到一些进展,我对javascript的this操作符进行了大量研究,并使用这个面向对象的模型成功地实现了大部分功能。
        <link rel="stylesheet" href="css/normalize.css">
        <link rel="stylesheet" href="css/main.css">
    </head>
    <body class="nihilo">
        <!--[if lt IE 9]>
                <p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
        <![endif]-->
        <div id="header">
            <div id="logo">
                <a href="http://www.co.washington.mn.us/"><img src="img/clearlogo.png" alt="Washington County Logo" /></a>
            </div>              
            <div class="login">
                <a id="loginLink" href=""></a>
            </div>
            <div id="title">
                <h1></h1>
            </div>

        </div>
        <div id="clear" style="clear:both;"></div>
        <div class="container">
            <div id="sidebar">
                <div class="inner">
                    <div id="edit" >
                        <h2 id="addText" >Add Features:</h2>
                        <div id="editor">
                        </div>
                    </div>
                    <h2>Find Address:</h2>
                    <div id="searchAddr"></div>
                    <h2>Find Name:</h2>
                    <div id="searchName"></div>
                </div>
            </div>
            <div id="map">  
            </div>
            <div class="clear"></div>
        </div>

        <script src="js/vendor/modernizr-2.6.2.min.js"></script>

        <!--<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>-->
        <script>
            var dojoConfig = {
                parseOnLoad: false,
                packages: [
                    {name: "app", location: "/new_app/js/app"}
                ],
                has: {
                    "dojo-firebug": true,
                    "dojo-debug-messages": true
                },
            };
        </script>
        <script src="//serverapi.arcgisonline.com/jsapi/arcgis/3.5/" data-dojo-config="parseOnLoad: true, isDebug: true"></script>
        <script src="js/plugins.js"></script>
        <script src="js/main.js"></script>
        <script src="js/sha512.js"></script>
    </body>
</html>