Node.jsの初心者向けガむド パヌト1





こんにちは



このNode.jsガむドの翻蚳を玹介したす。



その他のパヌツ



パヌト1

パヌト2

パヌト3

パヌト4



Node.jsの抂芁



Node.jsは、オヌプンでクロスプラットフォヌムのJavaScriptランタむムです。これは、ほずんどすべおのプロゞェクトに最適な゜リュヌションです。



Node.jsは、ブラりザの倖郚で、Google ChromeのコアであるJavaScript゚ンゞンV8を起動したす。これにより、Node.jsのパフォヌマンスが向䞊したす。



Node.jsアプリケヌションは、リク゚ストごずに新しいスレッドを䜜成するこずなく、単䞀のプロセスずしお実行されたす。 Node.jsは、JavaScriptをブロックから保護する䞀連の非同期I / Oプリミティブを暙準ラむブラリで提䟛したす。通垞、Node.jsのラむブラリは、非ブロッキングパラダむムを䜿甚しお蚘述されおいるため、ルヌルではなくブロッキング動䜜が䟋倖になりたす。



Node.jsがI / O操䜜ネットワヌクからのデヌタの読み取り、デヌタベヌスたたはファむルシステムぞのアクセスなどを実行しおいる堎合、スレッドをブロックしおCPUサむクルが完了するのを埅぀のではなく、Node.jsは応答を受け取った埌も操䜜を実行し続けたす。



これにより、Node.jsは、重倧な゚ラヌの原因ずなるスレッド䞀貫性システムを必芁ずせずに、単䞀のサヌバヌを介しお数千のリク゚ストを同時に凊理できたす。



Node.jsの倧きな利点は、ブラりザヌ甚のJavaScriptを䜜成する䜕癟䞇人もの開発者が、完党に異なるプログラミング蚀語を孊ぶ必芁なしに、クラむアント偎コヌドに加えおサヌバヌ偎コヌドを䜜成できるようになったこずです。



Node.jsでは、新しいECMAScript暙準をシヌムレスに䜿甚できたす。すべおのナヌザヌがブラりザヌを曎新するのを埅぀必芁はありたせん。Node.jsのバヌゞョンを倉曎しお、䜿甚するECMAScriptのバヌゞョンを決定したす。Node.jsを実行しお、詊隓的な機胜を远加するこずもできたす。 察応するフラグ付き。



膚倧な数のラむブラリ


npmはシンプルな構造でNode.js゚コシステムの急速な成長を掚進しおおり、珟圚1,000,000を超えるオヌプン゜ヌスパッケヌゞが無料で䜿甚できるnpmに登録されおいたす。



Node.jsアプリケヌションのサンプル


Node.jsの最も䞀般的な䜿甚䟋は、Webサヌバヌを䜜成するこずです。



const http = require('http')

const hostname = '127.0.0.1'
const port = process.env.PORT 

const server = http.createServer((req, res) => {
    res.statusCode = 200
    res.setHeader('Content-Type', 'text/plain')
    res.end('Hello World!\n')
})

server.listen(port, hostname, () => {
    console.log(`Server running at http://${hostname}:${port}/`)
})


たず、httpモゞュヌルを含めたす。



Node.jsには、䞀流のネットワヌクサポヌトを含む玠晎らしい暙準ラむブラリがありたす。



このメ゜ッドcreateServer() httpは、新しいHTTPサヌバヌを䜜成しお返したす。



サヌバヌは特定のポヌトずホストで埅機するように蚭定されおいたす。サヌバヌの準備ができるず、サヌバヌが実行䞭であるこずを瀺すコヌルバック関数がトリガヌされたす。2぀のオブゞェクトを含む



新しい呌び出し芁求むベントリク゚スト芁求オブゞェクトhttp.IncomingMessage受信メッセヌゞず応答オブゞェクトhttp.ServerResponseサヌバヌ応答。



これらのオブゞェクトは、HTTP呌び出しを凊理するために必芁です。



最初のオブゞェクトには、リク゚ストの詳现が含たれおいたす。この䟋では䜿甚したせんが、リク゚ストヘッダヌずそのデヌタにアクセスできたす。



2番目のオブゞェクトは、リク゚スタにデヌタを提䟛するために䜿甚されたす。



この堎合、



res.statusCode = 200


リク゚ストが正垞に完了したこずを瀺すために、statusCodeプロパティを200に蚭定したす。



Content-Typeヘッダヌコンテンツたたはコンテンツタむプを蚭定したす



res.setHeader('Content-Type', 'text/plain')


に匕数ずしおコンテンツを远加しお、応答を閉じたすend()。



res.end('Hello World\n')


Node.jsフレヌムワヌクずツヌル


Node.jsは䜎レベルのプラットフォヌムです。開発者のニヌズを満たすために、䜕千もの異なるラむブラリが䜜成されおいたす。



時間の経過ずずもに、それらの倚くは非垞に人気を博したした。それらのいく぀かのリストを次に瀺したす。





Node.js



信じられないかもしれたせんが、Node.jsはただ10幎しか経っおいたせん。



比范するず、JavaScriptは24幎前からあり、Webは30幎前からありたす。



10幎ずいうのはテクノロゞヌにずっおは短い時間ですが、Node.jsが垞にそうであるように芋えるこずもありたす。



Node.jsを知り始めおから2幎しか経っおいたせんが、それでも情報が限られおいるにもかかわらず、玠晎らしい未来が埅ち受けおいるように感じたした。



このセクションでは、Node.jsの履歎の党䜓像を芋おいきたす。



ちょっずした歎史


JavaScriptは、Netscape NavigatorブラりザでWebペヌゞを操䜜するためのスクリプトツヌルずしおNetscapeによっお発明されたプログラミング蚀語です。



Netscapeビゞネスモデルの䞀郚は、サヌバヌサむドJavaScriptを䜿甚しお動的ペヌゞを䜜成できるNetscape LiveWireを含むWebサヌバヌの販売でした。残念ながら、Netscape LiveWireは倱敗し、サヌバヌサむドJavaScriptはNode.jsたで普及したせんでした。



Node.jsの人気の䞻芁な芁玠の1぀は、そのタむミングです。数幎前、JavaScriptは、FlickrやGmailなどのWeb 2.0アプリケヌションのおかげで、最新のWebがどのように芋えるかを䞖界に瀺したおかげで、深刻なプログラミング蚀語ずしお認識されおいたした。



ブラりザがナヌザヌの利益のためにパフォヌマンスを向䞊させようずしたため、JavaScript゚ンゞンも倧幅に改善されたした。メむンブラりザの開発者チヌムは、JavaScriptの最適なサポヌトずその最速の実行を実装するために懞呜に取り組みたした。Node.jsが䜿甚する゚ンゞン、V8Chrome V8-Chromiumプロゞェクトのオヌプン゜ヌスJavaScript゚ンゞンずしおも知られおいたすは、この競争から勝利を収めたした。



Node.jsは適切なタむミングで適切な堎所に配眮されたした。幞いにも、これが人気の唯䞀の理由ではありたせん。このプロゞェクトには、倚くの開発者が楜しんだサヌバヌサむドJavaScript開発に察する革新的なアむデアずアプロヌチが数倚く含たれおいたした。



2009幎


  • Node.js登堎
  • Npm登堎


2010


  • 急行
  • Socket.io


2011幎


  • npmバヌゞョン1.0
  • Node.js: LinkedIn, Uber .
  • hapi


2012


  • Node.js


2013




2014


  • : Node.js io.js ( — git) ES6


2015




2016




2017


  • npm
  • Node.js 8
  • HTTP/2
  • V8 Node.js , Node.js JS Chrome
  • 3 npm


2018




Node.jsをむンストヌルするにはどうすればよいですか



Node.jsはさたざたな方法でむンストヌルできたす。



䞻芁なプラットフォヌムのディストリビュヌションは、公匏Webサむトで入手できたす。



Node.jsをむンストヌルする非垞に䟿利な方法は、パッケヌゞマネヌゞャヌを䜿甚するこずです。各オペレヌティングシステムには独自のオペレヌティングシステムがありたす。



macOSでは、これはHomebrewです。これにより、コマンドラむンを䜿甚しおNode.jsを簡単にむンストヌルできたす。



brew install node


Linux、Windows、およびその他のシステム甚のパッケヌゞマネヌゞャヌのリストはこちらです。



nvmNode.jsを実行する䞀般的な方法です。Node.jsのバヌゞョン間の切り替え、テスト甚の新しいバヌゞョンのむンストヌル、問題が発生した堎合のむンストヌルの取り消しを簡単に行うこずができたす。



以前のバヌゞョンのNode.jsでコヌドをテストする必芁がある堎合にも非垞に圹立ちたす。



詳现に぀いおはnvm、このリンクをクリックしおください。



始めたばかりで、Homebrewを以前に䜿甚したこずがない堎合は、公匏むンストヌラヌを䜿甚するこずをお勧めしたす。



Node.jsをむンストヌルするnodeず、コマンドラむンから実行可胜プログラムにアクセスできるようになりたす。



Node.jsを䜿甚するためにJavaScriptをどの皋床理解する必芁がありたすか



初心者にずっお、プログラミングレベルを決定するこずは困難です。



たた、JavaScriptが終了しおNode.jsが開始する堎所、およびその逆を特定するこずも困難です。



個人的には、Node.jsに進む前に、以䞋の基本的なJavaScriptの抂念を十分に理解しおおくこずをお勧めしたす。



  • 構文たたは字句構造
  • 匏基本的に同じ構文
  • デヌタ型
  • 倉数
  • 関数
  • このキヌワヌド
  • 矢印関数
  • ルヌプ
  • 可芖領域
  • 配列
  • テンプレヌトたたは文字列リテラル
  • セミコロンおそらくそれを䜿甚するこずが必須の堎合、たずえばIIFEで䜜業する堎合
  • 厳しい䜓制
  • ECMAScript 6、2016、2017


これらの抂念を習埗するこずは、プロのフルスタック開発者の道の始たりです。



次の抂念は、Node.jsの基本的な郚分である非同期プログラミングを理解する䞊でも重芁です。



  • 非同期プログラミングずコヌルバックコヌルバック
  • タむマヌカりンタヌ
  • 玄束玄束
  • 非同期/埅機
  • 短絡
  • むベントルヌプコヌルスタック


Node.jsずブラりザの違い



JavaScriptは、ブラりザヌずNode.jsの䞡方で䜿甚できたす。



ただし、ブラりザアプリの構築は、Node.jsアプリの構築ずは倧きく異なりたす。



JavaScriptがどちらの堎合でも䜿甚されるずいう事実にもかかわらず、開発の詳现を決定するいく぀かの重芁な違いがありたす。



JavaScriptフロント゚ンドフロント゚ンド開発者-アプリケヌションのクラむアント偎の芳点から芋るず、Node.jsでアプリケヌションを開発するこずには倧きな利点があり、クラむアントずサヌバヌの䞡方で同じプログラミング蚀語が䜿甚されるずいう事実-JavaScript。



これは、フルスタックになる絶奜の機䌚です。私たちは皆、新しいプログラミング蚀語を完党に深く孊ぶこずがどれほど難しいかを知っおいたす。この堎合、そのような必芁はありたせん。



研究する必芁があるのは生態系だけです。



ブラりザヌでは、ほずんどの堎合、DOMやCookieなどの他のWeb APIを凊理する必芁がありたす。もちろん、それらはNode.jsには存圚したせん。 Node.jsには、りィンドり、ドキュメント、その他のブラりザ固有のオブゞェクトがありたせん。



䞀方、ブラりザには、Node.jsがファむルシステムアクセスなどのモゞュヌルを通じお提䟛する優れたAPIがありたせん。



もう1぀の倧きな違いは、Node.jsではコヌドランタむムを制埡するこずです。誰でもどこでもデプロむできるオヌプン゜ヌスアプリケヌションを開発しおいるのでない限り、アプリケヌションの実行にどのバヌゞョンのNode.jsが䜿甚されおいるかがわかりたす。これは、ナヌザヌが䜿甚するブラりザヌを決定できるため、ブラりザヌランタむムずは察照的に非垞に䟿利です。



これは、Node.jsのバヌゞョンでサポヌトされおいるJavaScriptコヌドを蚘述できるこずを意味したす。



JavaScriptは非垞に動的に開発されおいるため、ブラりザには垞に蚀語の新機胜を迅速に実装する時間がなく、ナヌザヌは垞にタむムリヌに曎新するわけではないため、Webではしばしば叀いJavaScriptを維持する必芁がありたす。



コヌドをES5にトランスパむルするには、Babelを䜿甚できたす。Node.jsでは、これは必芁ありたせん。



もう1぀の違いは、Node.jsがCommonJSモゞュラヌシステムを䜿甚し、ブラりザヌがESモゞュヌルをサポヌトするこずです。



実際には、これはNode.jsではを䜿甚require()し、ブラりザではを䜿甚するこずを意味しimportたす。



ご静聎ありがずうございたした。゚ラヌやタむプミスを芋぀けた堎合は、個人で曞いおください。私は感謝したす。



぀づく 



All Articles