将RequireJS与AngularJS一起使用。加载AngularJS时出现问题

时间:2015-11-11 11:31:09

标签: angularjs node.js express requirejs

我正在创建一个NodeJS应用程序,它使用AngularJS作为它的前端。我也使用RequireJS加载JS依赖项,然后实例化Angular应用程序。这是我想要做的:

在我的HTML文件中(用Jade编写)我包含RequireJS文件,然后使用' data-main'来调用RequireJS配置。属性:

doctype html
    html
        head
            title= title
            link(rel='stylesheet', href='/stylesheets/style.css')
        body
            block content

        script(type="text/javascript" src="/bower_components/requirejs/require.js" data-main="/main.js")

我的main.js文件如下所示:

"use strict";

function(require) {
    require(['/assets/requiredPathsAndShim.js'], function(requiredPathsAndShim) {
        require.config({
            maps : {
                // Maps
            },
            paths : requiredPathsAndShim.paths,
            shim : {
                // Modules and their dependent modules
            }
        });

        angular.bootstrap(document, ['appNameInHere']);
    });
})(require);

我有一个外部文件,其中包含一个带有我的路线的对象' /assets/requiredPathsAndShim.js'它看起来如下:

"use strict";

(function(define) {
    define([], function() {
        return {
            paths : {
                'angular' : '/bower_components/angular/angular'
            }
        };
    });
})(define);

我将添加我的NodeJS / Express应用程序有' bower_components'文件夹设置为提供静态文件,这工作正常。

每当我尝试使用' angular.bootstrap ...'来实例化AngularJS应用程序时它告诉我Angular没有定义。我无法理解为什么会发生这种情况,并且还没有能够解决这个问题。 O看不到我对Angular文件的路由有任何问题。任何人都可以看到或暗示为什么会这样吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

刚设法破解它!我必须将'angular.bootstrap'调用放在require.config方法的回调函数中,因为应用程序在定义之前尝试调用AngularJS。

希望这有助于将来的任何人。