ホームページ >ウェブフロントエンド >jsチュートリアル >BROWSERIFYを開始します
JavaScriptの実装は、毎年Webと呼ばれる美しい獣がますます複雑になっています。私たちの多くは現在、JavaScriptモジュールを使用しています。これは、まとまりのある全体として機能するために集まっている独立して機能するコンポーネントですが、Armageddonを引き起こすことなくコンポーネントを喜んで交換できます。私たちの多くはAMDモジュールパターンを使用しており、これをきちんと達成するためにJSを要求しています。
昨年、Browserifyはシーンにヒットし、多くの興奮をもたらしました。ほこりが落ち着き始めたとき、私はBrowserifyが何であるか、それがどのように機能するか、そしてそれをワークフローに追加するためのいくつかのオプションの概要を書きたいと思いました。キーテイクアウト
browserifyを始めるには、必要な最小限は次のとおりです。
ここで行っていることは、npmを使用してマシンにグローバルにブラウズ化をインストールすることです(-gは、NPMにグローバルにモジュールをインストールするように指示します)。
npm install -g browserify次のことから始まるエラーが発生した場合:
その後、許可の問題があります。コマンドを繰り返すことはできますが、代わりにこの投稿をチェックすることをお勧めします。
Error: EACCES, mkdir '/usr/local/lib/node_modules/browserify'最初のbrowserifyファイルを作成
非常に人気のあるモジュールをインポートするブラウザー化されたJavaScriptファイルを作成することから始めましょう。アンダースコアを使用してスーパーマンを追跡します。 JSファイルMain.jsに電話して、プロジェクトのJSフォルダーに入れました。
次に、Underscoreからedagh()およびfind()関数を使用します。名前の2つの配列を検索し、コンソールを実行して、スーパーマンを見るかどうかを説明します。非常に高度なものLex Luthorは夢を見ることができました。私たちの最終的なJavaScriptコードは次のようになります:
Browserifyがプロジェクトに追加しようとするときにNPMモジュールを見つけることができるようにします。そうすることの裸の基本には、端末を開き、JavaScriptプロジェクトを保持するフォルダーに移動し、このコマンドを実行してそのフォルダーにアンダースコアをインストールすることが含まれます。
<span>var _ = require('underscore');</span>
ノードとNPMの仕組みに不慣れな人のために、これにより、プロジェクトにnode_modulesというフォルダーが作成され、アンダースコアモジュールのコードが保持されます。コマンドは、https://registry.npmjs.org/underscoreのNPMリポジトリからUnderscoreの最新バージョンを取得します。そのモジュールがnode_modulesフォルダーにあると、browserifyがそれを見つけて使用できるようになりました。
初めてbrowserifyを実行します<span>var _ = require('underscore'), </span> names <span>= ['Bruce Wayne', 'Wally West', 'John Jones', 'Kyle Rayner', 'Arthur Curry', 'Clark Kent'], </span> otherNames <span>= ['Barry Allen', 'Hal Jordan', 'Kara Kent', 'Diana Prince', 'Ray Palmer', 'Oliver Queen']; </span> _<span>.each([names, otherNames], function(nameGroup) { </span> <span>findSuperman(nameGroup); </span><span>}); </span> <span>function findSuperman(values) { </span> _<span>.find(values, function(name) { </span> <span>if (name === 'Clark Kent') { </span> <span>console.log('It\'s Superman!'); </span> <span>} else { </span> <span>console.log('... No superman!'); </span> <span>} </span> <span>}); </span><span>}</span>
browserifyを実行すると、添付のすべてのモジュールを使用して新しいJavaScriptファイルを作成する必要があります。この場合、アンダースコア内にJavaScriptファイルを構築します。この新しいファイルの名前を決定する必要があります。Findem.jsを使用しました。このコマンドをプロジェクトのルートフォルダーから実行します:
npm install -g browserify
このコマンドはmain.jsファイルを読み取り、-oオプションで定義されたfindem.jsファイルに出力します。 -dオプションを含めて、ソースマップも生成するようになりました。この方法では、main.jsをデバッグし、別々のファイルとしてきれいにアンダースコアできます。
browserify出力を使用独自のJavaScriptファイルのインポート
Error: EACCES, mkdir '/usr/local/lib/node_modules/browserify'
このようにJavaScriptをインポートするには、JavaScriptをモジュールとして構成するだけです。そのためには、module.exportsを定義する必要があります。これを行う1つの方法は、以下に示されています
<span>var _ = require('underscore');</span>サイドノート!
NPMにないJavaScriptライブラリをたくさん持っていて、これらすべてをbrowserifyにする簡単な方法を探している場合は、browserify-shim npmモジュールを使用してこれらのファイルを変換することができます。 。この記事では使用しませんが、一部の開発者はそれを試してみたいと思っているかもしれません。
<span>var _ = require('underscore'), </span> names <span>= ['Bruce Wayne', 'Wally West', 'John Jones', 'Kyle Rayner', 'Arthur Curry', 'Clark Kent'], </span> otherNames <span>= ['Barry Allen', 'Hal Jordan', 'Kara Kent', 'Diana Prince', 'Ray Palmer', 'Oliver Queen']; </span> _<span>.each([names, otherNames], function(nameGroup) { </span> <span>findSuperman(nameGroup); </span><span>}); </span> <span>function findSuperman(values) { </span> _<span>.find(values, function(name) { </span> <span>if (name === 'Clark Kent') { </span> <span>console.log('It\'s Superman!'); </span> <span>} else { </span> <span>console.log('... No superman!'); </span> <span>} </span> <span>}); </span><span>}</span>モジュール
私たちの名前変数は、モジュールからエクスポートされた関数を参照しています。したがって、名前の配列をfindSuperman()関数に渡すときに、上記の名前変数を括弧付きの関数として使用します。
npm install underscoreコマンドラインからコマンドを再度閲覧してコンパイルし、ブラウザでそれを開き、予想通りに実行し、配列の各値を検索し、スーパーマンと見えるかどうかを記録する必要があります。
browserify js/main.js -o js/findem.js -d
変数を渡して、アプリ全体でモジュールを共有しますモジュールに変数を渡してモジュールで使用できます。Exports関数であるため、名前の配列が与えられると予想されるFindSuperman.jsというファイルにモジュールを作成します。
npm install -g browserify
findSuperman()関数の返品値を追加しました。スーパーマンが見つかった場合、それは真実に戻ります。それ以外の場合は、falseを返します。このモジュールを使用して、この真/false値を使用するものを決定するのはコード次第です。ただし、上記のモジュールには欠けていることが1つあります。機能にはアンダースコアを使用していますが、宣言していません。モジュール自体でも、そのような上部で宣言することができます:
Error: EACCES, mkdir '/usr/local/lib/node_modules/browserify'
browserifyを使用すると、インポートされているすべてのJSファイルを調べ、1回記載されている各モジュールのみをインポートします。そのため、メインのJSファイルでアンダースコアを要求しており、FindSuperman.jsでそれを必要としていますが、Browserifyがパッケージをすべてアップすると、最終的なJSファイルに1回だけ配置されます。かなりきちんとした正しい?
実際のJavaScriptアプリは、新しい返品のTrue/False値を備えた新しいモジュールを使用するようになりました。デモの目的のために、簡単なdocument.writeに固執して、私たちの名前からスーパーマンを見つけたかどうかを説明します。
<span>var _ = require('underscore');</span>メインJSファイルにアンダースコアをインポートする必要さえないため、ドラマなしで削除できます。 findsuperman.jsファイルに含めることにより、最終的にインポートされます。
browserifyのnpm依存関係の管理package.json
<span>var _ = require('underscore'), </span> names <span>= ['Bruce Wayne', 'Wally West', 'John Jones', 'Kyle Rayner', 'Arthur Curry', 'Clark Kent'], </span> otherNames <span>= ['Barry Allen', 'Hal Jordan', 'Kara Kent', 'Diana Prince', 'Ray Palmer', 'Oliver Queen']; </span> _<span>.each([names, otherNames], function(nameGroup) { </span> <span>findSuperman(nameGroup); </span><span>}); </span> <span>function findSuperman(values) { </span> _<span>.find(values, function(name) { </span> <span>if (name === 'Clark Kent') { </span> <span>console.log('It\'s Superman!'); </span> <span>} else { </span> <span>console.log('... No superman!'); </span> <span>} </span> <span>}); </span><span>}</span>依存関係のリストは現在、単一の「アンダースコア」:「1.6.x」に限定されています。依存関係の最初の部分は名前、2番目の部分はバージョンです。最新または *がNPMが持っている最新バージョンを取得します。または、1.6(バージョン1.6の場合)や1.6.xなどの数字を入力することもできます(1.6.0までは1.7までですが、1.7までは含まれていません)。
依存関係としてbrowserifyを含めることもできますが、プロジェクトを実行するのは依存関係ではありません。アプリのユーザーは、browserifyを実行する必要なくスーパーマンを見つけることができます。これは当社の開発者の1つです。開発者がこのアプリを更新するために必要なモジュールです。
Package.jsonファイルがあります。NPMインストールアンダースコアを実行する必要はありません。 NPMインストールを実行するだけで、必要なすべての依存関係がnode_modulesフォルダーにインストールされます。browserifyプロセスの自動
ファイルを変更するたびにコマンドラインでbrowserifyを実行することは迷惑であり、まったく便利ではありません。幸いなことに、browserifyの実行を自動化するためのいくつかのオプションがあります。
npm自体は、手動で入力してきたものと同じようにコマンドラインスクリプトを実行できます。そうするために、スクリプトセクションをパッケージに配置するだけです。
それを実行するには、コマンドラインで次のと入力できます。npm install -g browserify
しかし、それは十分に便利ではありません。毎回そのコマンドを手動で実行する必要があります。それは迷惑です。したがって、より良いオプションは、Watchifyと呼ばれるNPMモジュールを使用することです。 Watchifyは簡単です、それは簡単で、それは大きな時間のセーバーです。 JSの変更と自動的に再実行されるブラウジーを自動的に再実行します。
これをPackage.jsonに入れるには、開発者に追加して、JSを見るための新しいスクリプトを含めます(JSを変更する必要なくJSを構築したい場合は、そこにbuild-jsを残します。ファイル)。Error: EACCES, mkdir '/usr/local/lib/node_modules/browserify'
これを実行するには、次のコマンドを入力するだけです
それは走り、その魔法を機能させます。何が起こっているのかをあなたに知らせることはあまり言いませんが、それは混乱する可能性があります。それが何をしているのかについて詳細を提供することをお勧めします。
<span>var _ = require('underscore');</span>それは、実行するたびにこのようなフィードバックを提供します:
NPMのソースマップの生成
<span>var _ = require('underscore'), </span> names <span>= ['Bruce Wayne', 'Wally West', 'John Jones', 'Kyle Rayner', 'Arthur Curry', 'Clark Kent'], </span> otherNames <span>= ['Barry Allen', 'Hal Jordan', 'Kara Kent', 'Diana Prince', 'Ray Palmer', 'Oliver Queen']; </span> _<span>.each([names, otherNames], function(nameGroup) { </span> <span>findSuperman(nameGroup); </span><span>}); </span> <span>function findSuperman(values) { </span> _<span>.find(values, function(name) { </span> <span>if (name === 'Clark Kent') { </span> <span>console.log('It\'s Superman!'); </span> <span>} else { </span> <span>console.log('... No superman!'); </span> <span>} </span> <span>}); </span><span>}</span>NPMを使用してソースマップを生成するには、browserifyまたはwatchifyコマンドの後に-dを追加します。
Debuggingの-dとverbose出力用の-vの両方を使用すると、そのように組み合わせることができます:
npm install underscore
grunt
browserify js/main.js -o js/findem.js -d
gruntを使用するには、package.jsonファイルを変更する必要があります。スクリプトセクションを使用することはなく、代わりにそのgruntに依存します。代わりに、いくつかの新しい開発者依存関係を追加します:
<span><span><span><script</span> src<span>="js/findem.js"</span>></span><span><span></script</span>></span></span>
依存関係に追加されました:
greatestModuleEver <span>= require('./your_module.js');</span>
grunt-browserify - gruntをbrowserifyを実行できるモジュール。
grunt-contrib-watch - ファイルを視聴し、変更するたびにブラウズ化するモジュール。次に、プロジェクトのルートでgruntfile.jsというファイルを作成します。このグラントファイル内には、次のものがあります
module<span>.exports = function(vars) { </span> <span>// Your code </span><span>}</span>
パッケージに必要なNPMモジュールをロードすることから、Gruntファイルで開始します。
npm install -g browserify
browserifyの設定が次にあり、基本的にソースJSファイルがブラウザー化されたコードとそれを構築するファイルを使用する場所に設定します:
Error: EACCES, mkdir '/usr/local/lib/node_modules/browserify'
次に、JSフォルダーに変更が変更されるたびに、ブラウスリー化タスクを再実行するためにWatchタスクを設定しました:
<span>var _ = require('underscore');</span>
新しい開発者の依存関係があるため(プロジェクトにはうなり声がインストールされておらず、これらのモジュールのいずれもありません)。最初にNPMをインストールする必要があります。モジュールを実行してインストールすることを許可したら、これまでにないシンプルなGruntCommandを実行して、プロジェクトの視聴を開始できます。
Gruntのソースマップの生成複雑な外観のオプションのセットアップは、将来のブラウジーオプションを素晴らしく簡単に互換性のある方法で含めることを可能にすることを目的としています。
gulp<span>var _ = require('underscore'), </span> names <span>= ['Bruce Wayne', 'Wally West', 'John Jones', 'Kyle Rayner', 'Arthur Curry', 'Clark Kent'], </span> otherNames <span>= ['Barry Allen', 'Hal Jordan', 'Kara Kent', 'Diana Prince', 'Ray Palmer', 'Oliver Queen']; </span> _<span>.each([names, otherNames], function(nameGroup) { </span> <span>findSuperman(nameGroup); </span><span>}); </span> <span>function findSuperman(values) { </span> _<span>.find(values, function(name) { </span> <span>if (name === 'Clark Kent') { </span> <span>console.log('It\'s Superman!'); </span> <span>} else { </span> <span>console.log('... No superman!'); </span> <span>} </span> <span>}); </span><span>}</span>
GulpはBrowserifyのタブロイド愛好家です。 Webの周りの記事は、2つを非常に頻繁にペアにします。ブラウジー化とGulpです。 BrowserifyファンはGulpを使用する必要があるとは言いません。それは主に異なる構文の間の個人的な好みです。 (上記で見たように)NPMまたはGruntを非常に喜んで使用して、ブラウスリーフィファイルを構築できます。私は個人的には、小規模なプロジェクトのためのクリーンでシンプルなNPMビルドプロセスのファンです。
上記をガルプで行うには、Gulpをグローバルにインストールすることから始めます。以下を追加しました:
npm install underscoreWatchify - これをNPMの例でも使用しました。同じモジュール。
gulp - そのすべてのガルプの良さを私たちに与えるためのかなり重要なモジュール!
browserify js/main.js -o js/findem.js -d
ビニールソースストリーム - これは、入力を取得し、どこかに配置するためにファイルを返すモジュールです。
コードを以下でもう少し詳しく説明します。
私たちの最初のタスクは、私たちがそうするように定義する私たちのブラウスレイフィスです:
npm install -g browserify
最初にmain.jsファイルをbrowserify npmモジュールに渡します:
Error: EACCES, mkdir '/usr/local/lib/node_modules/browserify'
次に、browserifyストリーミングAPIを使用して、JavaScriptコンテンツを使用して読み取り可能なストリームを返します。
<span>var _ = require('underscore');</span>そこから、Filename Findem.jsを使用してファイルにパイプしてから、それをGulpにパイプしてJSフォルダーに入れます。
基本的に、私たちの最終プロジェクトに出てくるさまざまな段階を通じて入力を取得しています。 Watchifyとgulp
<span>var _ = require('underscore'), </span> names <span>= ['Bruce Wayne', 'Wally West', 'John Jones', 'Kyle Rayner', 'Arthur Curry', 'Clark Kent'], </span> otherNames <span>= ['Barry Allen', 'Hal Jordan', 'Kara Kent', 'Diana Prince', 'Ray Palmer', 'Oliver Queen']; </span> _<span>.each([names, otherNames], function(nameGroup) { </span> <span>findSuperman(nameGroup); </span><span>}); </span> <span>function findSuperman(values) { </span> _<span>.find(values, function(name) { </span> <span>if (name === 'Clark Kent') { </span> <span>console.log('It\'s Superman!'); </span> <span>} else { </span> <span>console.log('... No superman!'); </span> <span>} </span> <span>}); </span><span>}</span>を組み合わせて
前述のように、ファイルを更新するときに自動的に実行する方がはるかに簡単であるため、Browserifyを直接使用するのは少し面倒です。これを行うには、Watchify NPMモジュールを再度使用します。
Watchというタスクをセットアップすることから始めます(必要に応じてWatchifyと呼ぶことができます...本当にここであなた次第です):2回使用するため、watchifyモジュールをバンドラー変数に割り当てます:
npm install underscore次に、更新イベントが呼び出されるたびにRebundle()と呼ばれる関数を実行するイベントハンドラーを追加します。基本的に、Watchifyがファイルの変更を確認するたびに、Rebundle():
を実行します
では、rebundle()とは何ですか?それはまさに私たちのBrowserifyタスクが上で行っていたことです:
browserify js/main.js -o js/findem.js -d
鋭いJavaScriptの最適化でbrowserifyと監視の両方をマージすることは可能ですが、この記事には、物事をシンプルに保つためにそれらを別々に残すことにしました。これの印象的でより複雑な例については、ダンテロのスターターガルプファイルをご覧ください。
<span><span><span><script</span> src<span>="js/findem.js"</span>></span><span><span></script</span>></span></span>gulpfile.jsを終了するには、デフォルトのタスクがgruntのデフォルトタスクと同じように機能するデフォルトタスクを定義します。
上記のGulpコードを実行するには、3つのオプションがあります。最も簡単な方法は、作成したデフォルトのタスクを実行することです。コマンドラインに1つの単語のみが必要です。
greatestModuleEver <span>= require('./your_module.js');</span>それはブラウスリーファイタスクを一度実行し、ウォッチタスクは変更のためにファイルの視聴を開始します。
または時計タスク:
module<span>.exports = function(vars) { </span> <span>// Your code </span><span>}</span>
Gulpとbrowserifyを使用してソースマップを生成します
JavaScriptのソースマップを生成するには、両方のbundle()関数に{debug:true}を含める。module<span>.exports = function() { </span> <span>return ['Barry Allen', 'Hal Jordan', 'Kara Kent', 'Diana Prince', 'Ray Palmer', 'Oliver Queen', 'Bruce Wayne', 'Wally West', 'John Jones', 'Kyle Rayner', 'Arthur Curry', 'Clark Kent']; </span><span>}</span>ブラウスリーフィングタスクは次のようになります:
時計のタスクのrebundle()関数は次のようになります:
npm install -g browserify
browserifyにとってはまだかなり早い時期であり、時間が経過するにつれて確実に進化し成熟します。現在の状態では、モジュラーJavaScriptを構築するための非常に便利なツールであり、バックエンドでノードを使用している人にとって特に素晴らしいです。プロジェクトのフロントエンドとバックエンドの両方でNPMモジュールを使用すると、コードはノード開発者にとってはるかにクリーンになります。概要を示していない場合は、次のJavaScriptプロジェクトで試してみて、それがあなたの世界を揺るがすかどうかを確認してください。
その他のリソース
以上がBROWSERIFYを開始しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。