【发布时间】:2016-04-17 03:41:09
【问题描述】:
我想重新导出整个模块并仅覆盖重新导出模块的特定功能。但是,当已重新导出相同的函数时,似乎不会处理导出覆盖函数。
(http://www.ecma-international.org/ecma-262/6.0/#sec-module-semantics-static-semantics-early-errors, '如果 ModuleItemList 的 ExportedNames 包含任何重复条目,则为语法错误。')
如果我只想覆盖重新导出的模块中的特定函数或方法,我的方法背后的动机是尽量减少显式重新导出非常大或长的模块。
有没有办法在 es6/es2015 中实现我的方法?
到目前为止我的代码:
模块-a.js
export class MyFirstStandardClass {
sendMeMessages() {
return `hello, I'm a standard implementation`;
}
}
export function talkToMe() {
return `standard talking: how are you doing?`;
}
模块-b.js
import * as StandardModule from 'module-a';
export function talkToMe(condition = true) {
if (condition) {
return `project conditional talking: ${StandardModule.talkToMe()}`;
}
return `project without a condition!`;
}
export * from 'module-a';
模块-c.js
import * as MyModule from 'module-b';
import React, { Component } from 'react';
export default class App extends Component {
componentWillMount() {
console.log(MyModule);
this.myFirstStandardInstance = new MyModule.MyFirstStandardClass();
}
render() {
return (
<div>
<label>
Class
</label>
<div>
{ this.myFirstStandardInstance.sendMeMessages() }
</div>
<label>
Function
</label>
<div>
{ MyModule.talkToMe(true) } // returns 'standard talking: how are you doing?'; expected 'project conditional talking: standard talking: how are you doing?'
</div>
</div>
);
}
}
【问题讨论】:
标签: javascript import reactjs export ecmascript-6