0

Traceur を使用して、ES6 でいくつかのプロジェクトを開発しています。私の HTML ページには、ローカルの Traceur ソースが含まれています。

<script src="traceur.js"></script>
<script src="bootstrap.js"></script>

その後、HTMLにモジュールがある場合:

<script type="module" src="foo.js"></script>

次に、Traceur がそのモジュールをロードしてコンパイルすると、すべてがうまく機能します。

別の ES6 モジュール内から ES6 モジュールをプログラムでページに追加したいと考えています (理由はやや複雑です)。これが私の最初の試みでした:

var module = document.createElement('script');
module.setAttribute('type', 'module');
module.textContent = `
    console.log('Inside the module now!');
`;
document.body.appendChild(module);

残念ながら、Traceur はスクリプト タグが追加されるたびにページを監視しないため、これは機能しません。

Traceur でスクリプトをコンパイルして実行するにはどうすればよいですか? 「traceur」または「$traceurRuntime」で何かを呼び出す必要があると思いますが、そのための適切なオンライン ドキュメント ソースが見つかりません。

4

2 に答える 2

1

ES6importステートメントまたはTraceurLoader動的依存関係の API を使用して、他のモジュールをロードできます。

Traceur ドキュメントの例

function getLoader() {
  var LoaderHooks = traceur.runtime.LoaderHooks;
  var loaderHooks = new LoaderHooks(new traceur.util.ErrorReporter(), './');
  return new traceur.runtime.TraceurLoader(loaderHooks);
}
getLoader().import('../src/traceur.js',
    function(mod) {
      console.log('DONE');
    },
    function(error) {
      console.error(error);
    }
);

また、System.jsローダーもサポートされているようです

window.System = new traceur.runtime.BrowserTraceurLoader();
System.import('./Greeter.js');
于 2016-04-05T13:06:55.517 に答える
0

動的モジュール ローディングは、次の (まだ標準化されていない) 機能ですSystem

System.import('./repl-module.js').catch(function(ex) {
  console.error('Internal Error ', ex.stack || ex);
});

これを機能させるにnpm testは、次に BrowserSystem を含める必要があります

<script src="../bin/BrowserSystem.js"></script>

また、ブラウザーの読み込みを強力にサポートしているため、https://github.com/systemjs/systemjsも参照してください。

ところで、Systemオブジェクトは最終的に WHATWG で (おそらく別の名前で) 標準化される可能性があります: http://whatwg.github.io/loader/#system-loader-instance

于 2016-04-08T14:52:23.453 に答える