我可以覆盖 JSPM 包中的方法吗?

Can I override a method in a JSPM package?

我正在迁移一个项目以使用 JSPM 和 SystemJS。在我的应用程序中,我重写了 Backbone Marionette 渲染方法以使用 Mustache 模板:

Marionette.Renderer.render = function (template, data) {
     return Mustache.render(template, { Model: data }, partials);
}

这在旧世界很简单 - 在 marionette js 和 mustache js 被添加到页面后,只需使用上面的代码。不过,当我将它作为模块加载时,我看不到如何覆盖它。

import * as Marionette from "backbone.marionette";

如果您的问题只是加载顺序,例如,您可以创建一个新的(即自定义的)marionette 模块,该模块同时依赖于 backbone.marionette 小胡子 并延伸 marionette。像

import Marionette from 'backbone.marionette';
import Mustache from 'moustache';

Marionette.Renderer.render = function (template, data) {
 return Mustache.render(template, { Model: data }, partials);
}

export default Marionette;

之后,您需要在 SystemJS 配置上映射您的自定义模块:

System.config({
   'map': {
      'custom-marionette': 'path/to/source/custom-marionette',
   ...
   }
}

然后您就可以在您的应用程序中导入您的自定义模块:

import Marionette from 'custom-marionette';