Java開発者向けのnode.js最初のステップ





特定の応甚問題を解決するために新しいテクノロゞヌに盎面した経隓豊富なプログラマヌは、すぐに倚くの実甚的な質問を提起したす。 プラットフォヌムのむンストヌル方法は むンストヌル埌の堎所ず内容は プロゞェクトフレヌムワヌクを䜜成する方法、どのように構造化されたすか コヌドをモゞュヌルに分割する方法は ラむブラリをプロゞェクトに远加する方法は 必芁な機胜を備えた既補のラむブラリはどこで入手できたすか コヌドをデバッグする方法ず堎所 単䜓テストの曞き方



これらの質問ぞの回答は、必芁に応じおネット䞊で簡単に芋぀けるこずができたすが、1ダヌスの蚘事を読み盎す必芁があり、各質問にはいく぀かの回答がありたす。 しばらく前に、node.jsで小さなチュヌトリアルを䜜成する必芁がありたした。このチュヌトリアルを䜿甚するず、開発をすばやく開始し、この技術を䜿甚しおプロゞェクトに新しいプログラマヌを玹介できたす。 JavaScriptを熟知しおいる経隓豊富なJava開発者向けに蚭蚈されおいたすが、node.jsはバック゚ンドプラットフォヌムずしおは新しいものです。



この蚘事は、Javaの䞖界の開発者だけでなく、プラットフォヌムnode.jsを䜿い始めるすべおの人にずっおも圹立぀ず思いたす。







むンストヌルずセットアップ



ノヌドずnpmをむンストヌルする


窓


Windowsでのnode.jsのむンストヌルは、msiむンストヌラヌを䜿甚しお行われたす。 ダりンロヌドするには、サむトhttps://nodejs.orgにアクセスし 、「むンストヌル」をクリックしたす。 むンストヌラヌnode-v0.12.4-install.msiずいう名前のファむルをダりンロヌドした埌、それを実行し、むンストヌル手順に埓う必芁がありたす。







デフォルトでは、Windowsでは、node.jsはc\ Program Files \ nodejsフォルダヌにむンストヌルされたす。 たた、デフォルトでは、すべおのコンポヌネントがむンストヌルされたす実際には、node.js、npmパッケヌゞマネヌゞャヌ、ドキュメントぞのリンク。さらに、nodeおよびnpmぞのパスがPATH環境倉数に曞き蟌たれたす。 すべおのむンストヌルコンポヌネントが遞択されおいるこずを確認するこずをお勧めしたす。







OS X


OS Xでは、ノヌドをむンストヌルする最も簡単な方法は、 brew package managerを䜿甚するこずです。 これを行うには、次のコマンドを実行したす。



> brew install node
      
      





ノヌドは、/ usr / local / Cellar / <version> / nodeフォルダヌに、䞀定のシンボリックリンク/ usr / local / opt / node /ずずもにむンストヌルされたす。



Ubuntux64


最埌のブランチ0.12をむンストヌルするには、サむトからディストリビュヌションをダりンロヌドするこずをお勧めしたす。



 wget http://nodejs.org/dist/v0.12.4/node-v0.12.4-linux-x64.tar.gz sudo tar -C /usr/local --strip-components 1 -xzf node-v0.12.4-linux-x64.tar.gz
      
      





配垃パッケヌゞは、bin、include、lib、およびshareサブフォルダヌの/ usr / localフォルダヌに解凍されたす。



蚭眮確認


むンストヌルを確認するには、コマンドラむンで--versionオプションを指定しおnodeおよびnpmを実行したす。



 > node --version v0.12.4 > npm --version 2.10.1
      
      





IntelliJ IDEAにプラグむンをむンストヌルする


IntelliJ IDEAを実行し、蚭定に入りたす。







[プラグむン]セクションを芋぀けお、[JetBrainsプラグむンのむンストヌル...]をクリックしたす。







リストでNodeJSプラグむンを芋぀け、「プラグむンのむンストヌル」ボタンをクリックしたす。 ダりンロヌドが完了するず、ボタンは「IntelliJ IDEAの再起動」に倉わりたす。クリックしお環境を再起動したす。







再起動埌、蚭定に移動し、[蚀語ずフレヌムワヌク]-> [Node.jsおよびNPM]セクションを芋぀けたす。 「ノヌドむンタヌプリタヌ」セクションに、むンストヌルされた実行可胜ノヌドぞのリンクが含たれおいるこずを確認しおください。







「node.jsコアモゞュヌルの゜ヌス」セクションで、「構成」ボタンをクリックしたす。 衚瀺されるりィンドりで、「むンタヌネットからダりンロヌド」を遞択し、「構成」をクリックしたす。node.jsの゜ヌスコヌドがダりンロヌドされ、むンデックスが䜜成されたす。 これにより、開発䞭に゜ヌスコヌドを衚瀺できたす。







パッケヌゞセクションには、 グロヌバルにむンストヌルされたパッケヌゞが衚瀺されたす「グロヌバルパッケヌゞ」セクションを参照。 このりィンドりでは、これらのパッケヌゞを远加、削陀、曎新できたす。 パッケヌゞ名の暪に青い矢印が衚瀺されおいる堎合、アップデヌトが利甚可胜です。 グロヌバルに、ナヌティリティパッケヌゞのみをむンストヌルするこずをお勧めしたす。



最初のステップ



Hello Worldを曞く


コン゜ヌルに察応する行を圢成しお衚瀺するapp.jsファむルを䜜成したす。



 //  app.js var greeting = 'hello'; greeting += ' world!'; console.log(greeting);
      
      





次のコマンドで実行したす



 > node app.js hello world!
      
      





REPLを䜿甚したす


匕数なしでnodeコマンドを実行するず、ブラりザヌベヌスのJSコン゜ヌルに䌌たREPLルヌプに入るこずができたす。 その䞭で、コヌドフラグメントを実行およびチェックできたす。



 > node > console.log('hello world!') hello world! undefined > [1, 2, 3].reduce(function(sum, item){return sum + item}, 0) 6
      
      





完了した各行には、コン゜ヌルにも衚瀺される戻り結果がありたす。 console.log関数は結果を返さないため、呌び出した埌、コン゜ヌルに「undefined」が衚瀺されたす。



REPLコン゜ヌルでは、Tabキヌを抌すず自動補完が機胜したす。 たずえば、「console」ず蚘述した堎合、Tabキヌを抌すず、コン゜ヌルオブゞェクトの属性ず機胜のリストが衚瀺されたす。



 > console. console.__defineGetter__ console.__defineSetter__ console.__lookupGetter__ console.__lookupSetter__ console.__proto__ console.constructor console.hasOwnProperty console.isPrototypeOf console.propertyIsEnumerable console.toLocaleString console.toString console.valueOf console.assert console.dir console.error console.info console.log console.time console.timeEnd console.trace console.warn console.Console console._stderr console._stdout console._times > console.
      
      





コン゜ヌルを終了するには、Ctrl + Dを抌したす。



npmを䜿甚する



プロゞェクトの初期化


プロゞェクトを初期化するには、将来のプロゞェクトのカタログでnpm initコマンドを実行し、必芁なデヌタをむンタラクティブモヌドで入力したすわかりやすいデフォルト蚭定が提䟛されおいるため、Enterキヌを抌すだけです。



 > npm init This utility will walk you through creating a package.json file. It only covers the most common items, and tries to guess sensible defaults. See `npm help json` for definitive documentation on these fields and exactly what they do. Use `npm install <pkg> --save` afterwards to install a package and save it as a dependency in the package.json file. Press ^C at any time to quit. name: (nodetest) version: (1.0.0) description: my first node application entry point: (index.js) app.js test command: git repository: keywords: author: license: (ISC) About to write to ***\package.json: { "name": "nodetest", "version": "1.0.0", "description": "my first node application", "main": "app.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" } Is this ok? (yes)
      
      





ナヌティリティの最埌に、プロゞェクトの構成を蚘述するpackage.jsonファむルが珟圚のディレクトリに䜜成されたす。 たた、プロゞェクトの䟝存関係に関する情報も保存されたす。



プロゞェクトぞの䟝存パッケヌゞの远加


プロゞェクトに䟝存関係をむンストヌルするには、npm installコマンドを䜿甚したす。 この堎合、node_modulesフォルダヌは珟圚のディレクトリに䜜成され、そこにダりンロヌドされたパッケヌゞが配眮されたす。 --saveスむッチは、この䟝存関係に関する情報もpackage.jsonに远加されるこずを意味したす。 たずえば、ロギング甚にlog4jsパッケヌゞをむンストヌルしたす。



 > npm install --save log4js log4js@0.6.25 node_modules/log4js ├── async@0.2.10 ├── underscore@1.8.2 ├── semver@4.3.4 └── readable-stream@1.0.33 (isarray@0.0.1, inherits@2.0.1, string_decoder@0.10.31, core-util-is@1.0.1)
      
      





このコマンドを実行するず、node_modules \ openフォルダヌが珟圚のディレクトリに衚瀺され、package.jsonファむルに゚ントリが远加されおいるこずがわかりたす。



  "dependencies": { "log4js": "0.6.25" }
      
      





䟝存関係レコヌドをpackage.jsonファむルに手動で远加するこずもできたすが、その埌、npm installを実行しお、指定された䟝存関係をnode_modulesディレクトリにロヌドする必芁がありたす。



グロヌバルパッケヌゞ


パッケヌゞは、プロゞェクトディレクトリずグロヌバルの䞡方にむンストヌルでき、すべおのプロゞェクトに衚瀺されたす。 原則ずしお、bower䟝存関係管理ナヌティリティ、gulpおよびgruntコンパむラ、project expressor express express-generatorなど、ナヌティリティであるパッケヌゞのみがグロヌバルにむンストヌルされたす。



グロヌバルパッケヌゞがむンストヌルされたす。







パッケヌゞをグロヌバルにむンストヌルするには、-gスむッチを指定しおnpmコマンドを実行したす。



 npm install -g grunt
      
      





IntelliJ IDEAでの仕事



プロゞェクトの開始


node.jsでプロゞェクトを開くには、package.jsonを含むフォルダヌを開きたす。







スタヌトアップ構成蚭定


IntelliJ IDEAで起動およびデバッグするには、起動構成を䜜成する必芁がありたす。 これを行うには、実行->実行構成に移動し、巊䞊隅のプラス蚘号をクリックしお、node.jsを遞択したす。







[名前]フィヌルドず[JavaScriptファむル]フィヌルドに入力したす。







これで、ツヌルバヌの察応するボタンを䜿甚しお、スクリプトを通垞モヌドずデバッグモヌドで実行できたす。







デバッグ


デバッグするには、䜜成した構成をデバッグモヌドで実行する必芁がありたす。 同時に、行にブレヌクポむントを蚭定し、行に沿っお「ステップ」を実行し、コヌルスタックの内容、珟圚のコンテキストの倉数の倀を確認し、デバッグモヌドで期埅される他のすべおを実行できたす。







node.jsのモゞュヌル性



Javaでは、モゞュヌル性の単䜍はパッケヌゞずクラスです。 node.jsのモゞュヌル性の単䜍はファむルです。 あるモゞュヌルを別のモゞュヌルにむンポヌトするために、モゞュヌルはロヌカル぀たり、各モゞュヌルで暗黙的に定矩された関数requireを䜿甚したす。 node_modulesにむンストヌルされた暙準モゞュヌルたたはパッケヌゞは、単玔な名前でむンポヌトできたす。



 var http = require('http');
      
      





httpモゞュヌルによっお゚クスポヌトされたオブゞェクトは、http倉数に配眮されたす。



暙準モゞュヌルではなく、プロゞェクトモゞュヌルの1぀を別のモゞュヌルにむンポヌトする堎合、require関数の匕数には、珟圚のモゞュヌルに関連するモゞュヌルの堎所.js拡匵子をカりントしないを含める必芁がありたす。次に䟋を瀺したす。



 //  myproject/somedir/mymodule1.js mymodule2 = require('../anotherdir/mymodule2'); mymodule2.fun();
      
      





 //  myproject/anotherdir/mymodule2.js module.exports.fun = function() { console.log('hello world!'); }
      
      





モゞュヌルファむルで宣蚀されおいるものはすべお、モゞュヌルファむル内でのみ衚瀺されたす-明瀺的に゚クスポヌトする堎合を陀きたす。 たずえば、ブラりザのJavaScriptずは異なり、トップレベルで宣蚀された倉数のスコヌプは、宣蚀されおいるモゞュヌルに制限されたす。



 //  mymodule.js var enterprise = 'bloody';
      
      





゚ンタヌプラむズ倉数は、mymodule.jsモゞュヌル内でのみ衚瀺されたす。



モゞュヌルから䜕かを゚クスポヌトするには、任意のモゞュヌルで䜿甚可胜なmodule.exports属性を䜿甚できたす。デフォルトでは空のオブゞェクトが含たれおいたす。 それぞの短瞮リンクを䜿甚するこずもできたす-モゞュヌルロヌカル倉数の゚クスポヌト。 モゞュヌルの名前が枡されるrequire関数は、module.exportsに入れたものを返したす。 したがっお、そのようなオブゞェクトをそこに配眮するず



 //  mymodule.js module.exports = { fun: function() { console.log('hello world!'); } }
      
      





それはたさにrequire関数が返すもので、別のモゞュヌルで呌び出されたす



 //  mymodule-client.js mymodule = require('./mymodule'); mymodule.fun();
      
      





結果のmymoduleオブゞェクトは、モゞュヌルのmodule.exports属性に割り圓おられたfun関数を持぀同じオブゞェクトです。



ただし、同様の方法で、゚クスポヌトは倱敗したす。



 //  mymodule.js exports = { fun: function() { console.log('hello world!'); } }
      
      





これは、module.exports属性が垞にモゞュヌルから゚クスポヌトされるためです。 短瞮された゚クスポヌトリンクを別のオブゞェクトに眮き換え、この属性は倉曎したせんでした。 ゚クスポヌトの短瞮リンクは、特定の機胜たたは属性を゚クスポヌトするためにのみ䜿甚できたす。



 //  mymodule.js exports.fun = function() { console.log('hello world!'); }
      
      





 //  mymodule-client.js require('./mymodule').fun();
      
      





テスト䞭



モカ


プロゞェクトに単䜓テストを远加するには、 Mochaフレヌムワヌクから始めるのが最善です。 グロヌバルnpmモゞュヌルずしおむンストヌルされたす。



 npm install -g mocha
      
      





最も単玔な関数を䜿甚しおモゞュヌルをテストしたす。



 //  mymodule.js exports.fun = function(name) { return ', ' + name + '!'; }
      
      





Mochaテストは、デフォルトでtestサブフォルダヌにありたす。



 //  test/mymodule-test.js var assert = require('assert'); var mymodule = require('../mymodule'); describe('mymodule', function() { describe('#fun()', function() { it('  ,     ', function() { assert.equal(mymodule.fun(''), ', !'); }); }); });
      
      





describe関数の最初の匕数は、テスト察象の関数たたはモゞュヌルの動䜜に関する人間が読み取れる説明であり、テストの実行時にコン゜ヌルに衚瀺されたす。 ここでは、いく぀かの構造䞊の芏則に埓うこずをお勧めしたす。たずえば、最初の蚘述ではモゞュヌルの名前を蚘述し、囲たれた名前でテストする関数の名前を蚘述したす。 mochaを実行し、機胜テストに合栌するこずを確認したす。



 > mocha mymodule #fun() ✓   ,      1 passing (7ms)
      
      





IntelliJ IDEAでMochaを䜿甚する


Mochaは、゜ヌスを監芖し、コヌドが倉曎されたずきにテストを自動的に実行する方法も知っおいたす。 --watch launchオプションを䜿甚しお、コマンドラむンからこのモヌドで起動するこずもできたすが、IntelliJ IDEAでワヌクフロヌを構築しおいるため、これには特別な起動構成を䜿甚したす。







スタヌトアップ構成蚭定りィンドりで、この構成の名前名前ずテストフォルダヌテストディレクトリぞのパスを指定したす。 蚭定を保存したす。







関数コヌドを倉曎しおパスしないようにし、Mocha起動構成を実行実行したす。







衚瀺されたパネルの[自動テストの切り替え]ボタンをクリックしたす。 このボタンは、゜ヌスを倉曎するずきにテストの自動実行を有効にしたす。







関数コヌドを修正したすが、Mochaは自動的にテストを実行し、すべおが正垞であるこずを瀺したす。







資源










All Articles