モジュール全体を再エクスポートし、再エクスポートされたモジュールの特定の機能のみをオーバーライドします。しかし、同じ関数が既にre-reportportされているとき、オーバーライド関数のエクスポートは処理されないようです。es2015モジュールを再エクスポートし、再エクスポートされたモジュールの単一のエクスポート機能をオーバーライドします
(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>
);
}
}
2ありがとう。私はすでにそれを試して、それは動作します。しかし、モジュール-aにたくさんのサブモジュールがあると、リストは非常に長くなります。 –