2015-10-09 13 views
15

私はbrowserifyを取り上げようとしており、多くの例があります。Browserify import/require?

一例では、私は '輸入' の使用を参照してくださいと

import 'jquery'; 

とローカルファイルをインポートする:

import Header from './Header'; 

を他の例では、私は人々が経由してインポートを参照してください。

require('./Header'); 

違いは何ですか?

答えて

21

require()は、ES5のノードモジュールシステム(CommonJS)です。 importはES6モジュール構文です。

ES6モジュールの構文で記述されたモジュールをブラウズする場合は、babelify(または他の手段でbabel)を使用してモジュールをコンパイルする必要があります。

+1

ありがとうございました。 – panthro

+2

わかりません。 ES6をBabel経由で流通させると、なぜ私は 'browserify'(または' require')が必要でしょうか? 'import'ステートメントを古いJS環境で理解できるものに変換しませんか? – Matthias

+4

@Matthias pre-ES6にはネイティブモジュールシステムがないため、ユーザランドコードには複数のシステムが構築されています(CommonJS/Nodeモジュール、AMDなど)。 'require()'はNodeモジュールAPIの一部です。これはコンパイルできるターゲット(JSで環境を理解できるもの)の1つです(ノードで実行されます)。ただし、ブラウザにはこれらのAPIについての知識はありません。 Nodeは 'require()'などを注入する関数でモジュールをラップすることで実装します。ブラウザの 'require()'は単に参照エラーになります。 Browserifyはブラウザ内で動作し、依存関係グラフ全体を単一のスクリプトにまとめます。 – JMM