Javascript 我可以将嵌套命名空间设计模式转换为es6模块模式吗?

Javascript 我可以将嵌套命名空间设计模式转换为es6模块模式吗?,javascript,module,es6-modules,Javascript,Module,Es6 Modules,我有一个包含多个JS文件的现有代码。每个文件都向全局命名空间添加具有对象文字的新属性。似乎有很多Java开发人员参与了这个项目,他们研究的是最终在App.product.foo()中使用方法foo的模式 当前(现状)代码: 我是否可以将其转换为ES6模块模式,以便跨模块导出/导入所需的代码 // product.js import { addToCart } from './cart'; export default { changeColor = function(e) {}; cl

我有一个包含多个JS文件的现有代码。每个文件都向全局命名空间添加具有对象文字的新属性。似乎有很多Java开发人员参与了这个项目,他们研究的是最终在App.product.foo()中使用方法foo的模式

当前(现状)代码:

我是否可以将其转换为ES6模块模式,以便跨模块导出/导入所需的代码

// product.js
import { addToCart } from './cart';

export default {
  changeColor = function(e) {};
  clickEventHandler = function() {
    addToCart(e.target.dataset['code']);
  };
}

是的,您可以将其转换为ES6模块,但当您必须显式声明依赖项而不是仅假设命名空间对象上的方法可用时,情况将大不相同。不,您不应该默认导出对象文本,您应该
导出函数changeColor(e){}
导出函数clickeventhandler(e){…}
。感谢您的回复。我刚刚注意到,在假设这些命名空间对象可用的情况下,很少有第三方插件也会被编写:(我假设,如果没有这种依赖关系,转换是不可能的?另一种可能是将代码重写为ES6模块,然后在main.js构建中(嵌套)名称空间对象,以及您想要/需要在
window.app
上公开和安装它的方法。好的,这是有意义的!我假设名称空间对象不是推荐的方法,不是吗?可能是重复的,您可以将其转换为ES6模块,但当您必须显式声明依赖项时,情况会大不相同encies,而不仅仅是假设命名空间对象上的方法可用。不,您不应该默认导出对象文本,您应该
export function changeColor(e){}
export function clickeventhandler(e){…}
。感谢Bergi的回复。我刚刚注意到,假设这些命名空间对象可用,也会编写很少的第三方加载项:(我假设,如果没有这种依赖关系,就不可能进行转换?另一种方法可能是将代码重写为ES6模块,然后在main.js构建中(嵌套)名称空间对象,以及您希望/需要在
window.app
上公开和安装它的方法。好的,这很有意义!我假设使用名称空间对象不是推荐的方法,不是吗?
// product.js
import { addToCart } from './cart';

export default {
  changeColor = function(e) {};
  clickEventHandler = function() {
    addToCart(e.target.dataset['code']);
  };
}