Angular 2 - 从服务器按需加载JS并在当前范围内运行

时间:2018-04-19 14:22:52

标签: javascript angular express

我有一个Angular 2应用程序,它使用ExpressJS服务器作为API。

它请求端点api / games /:id返回一个.js文件,然后我将其附加到标记内的HTML头部 - 该文件包含运行游戏所需的所有javascript。

因此,假设端点返回.js文件:

var SeedGame = /** @class */ (function (_super) {
__extends(SeedGame, _super);
function SeedGame(width, height, render, id) {
    var _this = _super.call(this, width, height, render, id, null) || this;
    _this.state.add('Boot', BootState, false);
    return _this;
}
return SeedGame;
}(Phaser.Game));

var BootState = /** @class */ (function (_super) {
__extends(BootState, _super);
function BootState() {
    return _super !== null && _super.apply(this, arguments) || this;
}
BootState.prototype.init = function () {
    this.stage.backgroundColor = '#ff0087';
};
BootState.prototype.preload = function () {
};
BootState.prototype.render = function () {};
return BootState;
}(Phaser.State));

我遇到的问题是我不想将代码添加到全局窗口对象中。如果我可以将返回的函数包含在角度组件范围内,那将是很好的。

this.scriptService.loadScript('api/games/load').then(results2 => {
   // Where id like to access the SeedGame function from the server
 });

我可以控制从端点返回的JS,因此可以改变它的结构。

这可能吗?

0 个答案:

没有答案