我可以覆盖 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';
我正在迁移一个项目以使用 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';