关于 Angular,我现在已经从 n00b 发展到 n00b++。
解决方案位于 Angular 中用于模板的 HTML 片段中。
我可以用一个 JS 文件和一个 HTML 文件定义一个 html 模板。JS 文件通过 URL 引用 HTML 页面。通常(在我看到的示例中)路径是相对的,例如:
angular.module('myApp.view1', ['ngRoute'])
.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/view1', {
templateUrl: 'view1/view1.html',
controller: 'View1Ctrl'
});
}])
.controller('View1Ctrl', [function() {}]);
但是通过使用绝对路径,我可以引用外部资源:
angular.module('myApp.view2', ['ngRoute'])
.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/view2', {
templateUrl: host + '/app/view2/view2.html',
controller: 'View2Ctrl'
});
}])
.controller('View2Ctrl', [function() {}]);
请注意,我添加了一个通过查看包含此 JS 文件的脚本标记计算的参数“主机”。
var scripts = document.getElementsByTagName('script');
var src = scripts[scripts.length - 1].src;
var host = src.match(new RegExp('https?://[^/]*'))[0];
但是要解决的第三个问题是处理 CORS 问题。在我的测试环境(node.js+express)中,我刚刚添加了“cors”库,我可以访问我的“外部”站点。
var express = require('express'),
cors = require('cors'),
app = express();
app.use(cors());
app.use("/", express.static(__dirname));
app.listen(8001, function(){
console.log('CORS-enabled web server listening on port', 8001);
});