我正在创建一个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/rerequiredPathsAndShim.js"的对象,它看起来如下:
"use strict";
(function(define) {
define([], function() {
return {
paths : {
'angular' : '/bower_components/angular/angular'
}
};
});
})(define);
我要补充的是,我的NodeJS/Express应用程序设置了"bower_contensions"文件夹来提供静态文件,这很好。
每当我尝试使用"angular.bootstrap…"方法实例化AngularJS应用程序时,它都会告诉我angular没有定义。我不明白为什么会发生这种事,也没能弄清楚。O看不出我到Angular文件的路由有任何问题。有人能看到或提出为什么会发生这种情况吗?
谢谢!
刚刚成功破解!我不得不将"angular.bootstrap"调用放在require.config方法的回调函数中,因为该应用程序在定义AngularJS之前试图调用它。
希望这对未来的任何人都有帮助。