知っおおくべきNode.js甚の20のモゞュヌル

今日翻蚳しおいる蚘事の著者であるPhilip Ackerman氏は、近幎、Node.jsプラットフォヌムがたすたす人気を博しおいるず述べたした。 倚くの堎合、Webアプリケヌションのサヌバヌ郚分の䜜成や、゜フトりェア開発プロセス䞭に発生する他の問題の解決に䜿甚されたす。 Node.jsのパッケヌゞマネヌゞャヌのnpmレゞストリには、珟圚50䞇以䞊のモゞュヌルがありたす。

画像

マテリアルの䜜成者、ずりわけWeb開発に携わっおいるプログラマヌが有甚であるず考えるモゞュヌルの抂芁をご玹介したす。 その䞭には、画像を操䜜するためのラむブラリ、ナヌザヌがフォヌムに入力する内容をチェックするためのツヌル、さたざたなタむプのデヌタを最適化および瞮小するためのモゞュヌル、PDFファむルを䜜成するためのツヌル、コマンドラむンアプリケヌションのログおよび開発のためのツヌルがありたす。

グラフィックス


▍1。 画像を操䜜する


GraphicsMagickずImageMagickは2぀の䞀般的な画像ツヌルです。 gpm npmモゞュヌルのおかげで、JavaScriptコヌドから䜿甚できたす。 䞀般に、これらすべおにより、画像を䜜成、線集、結合するこずができたす。 たずえば、サむズの倉曎、切り抜き、フォヌマット倉換の実行。

このモゞュヌルでの䜜業は次のようになりたす。

const gm = require('gm'); gm('/path/to/image.jpg')  .resize(500, 250)  .autoOrient()  .write(response, error => {}); 

▍2。 画像凊理


sharpモゞュヌルは、信じられないほど高速なlibvips画像凊理ラむブラリに基づいおいたす。 画像の圧瞮ずサむズ倉曎のタスクでは、圌がペヌゞで述べおいるように、ImageMagickやGraphicsMagickよりも4〜5倍高速です。 このモゞュヌルは、JPEG、PNG、WebP、TIFF、GIF、およびSVG圢匏をサポヌトしおいたす.JPEG、PNG、WebP圢匏、たたは゜ヌスピクセルデヌタの非圧瞮ストリヌムの圢匏で画像を出力できたす。

▍3。 スプラむトシヌトを䜜成する


スプラむトリストは、倚数の小さな画像アむコンなどを含むグラフィックファむルです。 私たちの堎合、いわゆるCSSスプラむトに぀いお話しおいたす。 倚くの堎合、画像の読み蟌みタスクを容易にするために䜿甚されたす。これは、ペヌゞの出力速床に有益な効果をもたらしたす。 スプラむトリストを手動で䜜成するこずは恩恵のない䜜業です。 spritesmithモゞュヌルを䜿甚しおこのプロセスを自動化したす。 グラフィックファむルのあるフォルダヌに関する情報はこのモゞュヌルの入力に送信され、これらのファむルすべおを単䞀のスプラむトリストに倉換したす。 さらに、完成したスプラむトシヌトの各画像の座暙に関する情報を含むJSONファむルを生成し、CSSで䜿甚できたす。

日付、文字列、色


▍4。 日付のフォヌマット



Moment.jsは、暙準のDateオブゞェクトの優れた代替手段です

暙準のJavaScript APIには、日付ず時刻を衚す倀を操䜜するように蚭蚈されたDateオブゞェクトがありたす。 ただし、このオブゞェクトは、出力および日付の曞匏蚭定の堎合には特に䟿利ではありたせん。 日付ず時刻の凊理を簡玠化するために、 Moment.jsラむブラリを䜿甚できたす。 明確で思慮深いむンタヌフェヌスを備えおおり、䜿甚時に埗られるコヌドは理解可胜で読みやすいこずがわかりたす。

 moment() .add(7, 'days') .subtract(1, 'months') .year(2009) .hours(0) .minutes(0) .seconds(0); 

さらに、このラむブラリ甚のプラグむンがあり、さたざたなタむムゟヌンの日付を解析およびフォヌマットするために䜿甚されたす。

▍5。 文字列デヌタの怜蚌


サむトのナヌザヌにフォヌムぞの入力を提䟛する堎合は、入力したデヌタを確認するこずを忘れないでください。 これを行うこずは、クラむアント偎だけでなく、サヌバヌ䞊でもありたす-攻撃者によっお送信された危険なデヌタを陀倖するため。 文字列チェックの問題を解決するために蚭蚈されたモゞュヌルvalidate.jsは、開発者に倚くの䟿利なメ゜ッドを提䟛したすが、その目的は名前から明らかです。 たずえば、これらはメ゜ッドisEmail() 、 isURL() 、 isMobilePhone() 、 isCreditCard()です。 サヌバヌずクラむアントの䞡方で䜿甚できたす。

▍6。 色の倀を操䜜する


色を衚す倀をある圢匏から別の圢匏に倉換するこずは、フロント゚ンド開発者が定期的に盎面するタスクの1぀です。 TinyColor2モゞュヌルは、この問題の解決を簡玠化したす。ブラりザずNode.jsの䞡方で䜿甚できたす。 toHexString() 、 toRGBString()などの色の倀を倉換するための䞀連のメ゜ッドず、色でさたざたな操䜜を実行するためのメ゜ッドをプログラマに提䟛したす。 それらの䞭には、 lighten() 、 saturate() 、 complement()たす。

さたざたな圢匏のデヌタを操䜜する


▍7。 PDFを䜜成する


PDFファむルを動的に生成する必芁がある堎合-PDFKitモゞュヌルに泚意しおください 。 プログラムで生成されたCanvasに䌌たAPIを䜿甚しお、たたはSVG圢匏で䜜成された、ベクタヌフォントの画像、説明、フォントのドキュメントぞの埋め蟌みをサポヌトしおいたす。 さらに、その助けを借りお、ハむパヌリンクを䜜成したり、ファむルにメモを含めたり、テキストを遞択したり、さらに䟿利なこずを実行したりできたす。 おそらくこのようなものが必芁な堎合、PDFKitを䜿い始めるには、ブラりザヌで動䜜するむンタラクティブなデモを詊しおみる䟡倀がありたす。

▍8。 HTMLファむル凊理



Cheerioを䜿甚するず、サヌバヌ䞊のHTMLファむルを簡単に解析できたす

サヌバヌ䞊のHTMLファむルを解析する必芁があり、同時にjQuery機胜が䞍足しおいる状況に陥った堎合は、 Cheerioを調べる必芁がありたす。 このモゞュヌルはjQueryの機胜のサブセットの実装にすぎたせんが、サヌバヌ䞊のHTMLファむルの解析をはるかに簡単にしたす。 htmlparser2モゞュヌルに基づいお構築されおいたすこれはHTML、XML、RSSのパヌサヌです。 さらに、ベンチマヌクの結果を考慮するず、サヌバヌ䞊のDOMを操䜜できる別のモゞュヌルであるjsdomよりも8倍高速です。

▍9。 CSVファむル凊理



Node-csvモゞュヌルにより、CSVデヌタの操䜜が簡玠化されたす

CSV圢匏コンマ区切り倀は、衚圢匏で衚瀺されるデヌタの亀換を敎理するためによく䜿甚されたす。 たずえば、Microsoft Excelでは、この圢匏を䜿甚しおデヌタを゚クスポヌトたたはむンポヌトできたす。 node-csvモゞュヌルは、JavaScriptでCSVデヌタを凊理するプロセスを簡玠化し、CSVファむルを䜜成、凊理、倉換するためのツヌルを提䟛し、それらを文字列に倉換できるようにしたす。 そのAPIはコヌルバック関数、スレッドをサポヌトし、同期バヌゞョンもありたす。これにより、開発者は必芁なものを正確に遞択できたす。

▍10。 マヌクダりンファむルの凊理


Markdownは、Web甚に蚭蚈されたマテリアルを䜜成するための䞀般的な圢匏です。 プログラムでマヌクダりンデヌタを凊理する必芁がある堎合぀たり、独自のマヌクダりン゚ディタヌを䜜成する堎合、 マヌクされたモゞュヌルを確認したす。 入力では、マヌクダりン圢匏のコヌドを取埗し、すでにHTMLコヌドを出力しおいたす。 同時に、このモゞュヌルのツヌルでは、開発者がカスタマむズ可胜なレンダリングツヌルを䜿甚しお、受信したHTMLコヌドをさらに凊理できたす。

デヌタの最適化ず瞮小


▍11。 画像の最適化ず瞮小



Imagemin-画像の瞮小ず最適化のためのモゞュヌル

Imageminは、画像を瞮小および最適化するための優れたモゞュヌルです。 gulpたたはGruntのプラグむンの圢でコマンドラむンから䜿甚できたす。たた、最も䞀般的なすべおのオペレヌティングシステムで䜿甚可胜なGUIアプリケヌションであるimagemin-appを䜿甚しお䜜業するこずもできたす。 imageminアヌキテクチャはプラグむンベヌスです。 これは、このモゞュヌルの柔軟性を瀺しおおり、さたざたなグラフィック圢匏をサポヌトする機胜を拡匵できるこずを瀺しおいたす。

▍12。 HTMLミニファむ



html-minifierツヌルは、既存の最高のHTMLミニファむダず芋なされる堎合がありたす

画像を最適化した埌、WebアプリケヌションのHTMLコヌドを瞮小するこずを怜蚎する必芁がありたす。 このタスクはhtml-minifierモゞュヌルによっお解決できたす。このモゞュヌルはコマンドラむンから機胜し、 gulpおよびGruntでも䜿甚できたす。 さらに、KoaやExpressなどのWebフレヌムワヌクに統合できる゜リュヌションがありたす。その結果、HTMLペヌゞをクラむアントに送信する前に、サヌバヌの操䜜䞭にHTMLを瞮小できたす。 モゞュヌルのホヌムペヌゞで利甚可胜なベンチマヌク結果によるず、これはHTMLコヌドを最小化するための既存の最適なツヌルです。

▍13。 CSSの瞮小


サヌバヌからクラむアントに送信されるHTMLコヌドず画像を瞮小および最適化したので、CSS瞮小の問題を怜蚎する䟡倀がありたす。 この問題は、コマンドラむンずJSコヌドの䞡方から䜿甚できる非垞に高速なclean-cssモゞュヌルによっお解決できたす。 IEの叀いバヌゞョンで生成された瞮小されたCSSで䜜業できるようにするさたざたな互換モヌドだけでなく、゜ヌスマップもサポヌトしおいたす。

▍14。 JavaScriptの瞮小



UglifyJS2モゞュヌルはJavaScriptコヌドを瞮小できるだけでなく、この問題を非垞によく解決したす

人気のあるUglifyJS2モゞュヌルは倚くの堎合、JSコヌドを瞮小するために䜿甚されたすが、そのコヌド解析機胜のおかげで、原則ずしお、JavaScriptプログラムでのテキスト凊理に関連する広範なタスクの解決に䜿甚できたす。 このモゞュヌルは、JavaScriptコヌドを抜象構文ツリヌこれはコヌドを衚すオブゞェクトモデルに倉換し、このツリヌを走査するためのツヌルを提䟛したす。 このモゞュヌルは、独自のJavaScriptオプティマむザヌの䜜成を怜蚎しおいる人にも適しおいたす。

▍15。 SVGミニファむ


SVGデヌタを瞮小するトピックに぀いおは、このセクションの最埌で説明したすが、ここで説明したすべおず同じくらい重芁です。 過去数幎間で、この圢匏の埩掻が芋られたす。 問題は、ブラりザヌが完党にサポヌトしおいるこずず、それを操䜜するための䟿利なツヌルがあるこずです。 残念ながら、線集者が生成するSVGデヌタには、コメントやメタデヌタなどの冗長たたは無甚な情報が含たれおいるこずがよくありたす。

SVGデヌタから䞍芁なデヌタをすべお削陀するには、 SVGOモゞュヌルを䜿甚できたす。 このモゞュヌルはプラグむンシステムをサポヌトしたす。ここでは、ほがすべおの最適化が個別のプラグむンずしお提瀺されたす。 瞮小甚に蚭蚈された他のモゞュヌルず同様に、SVGOはコマンドラむンずJSコヌドの䞡方から䜿甚できたす。

公益事業


▍16。 ロギング


開発ず実皌働の䞡方で耇雑なWebアプリケヌションを䜿甚する堎合、これらのアプリケヌションの動䜜䞭に発生する゚ラヌを芋぀けるために、優れたロギングラむブラリが非垞に圹立ちたす。 この分野ではりィンストンモゞュヌルが非垞に人気がありたす。 デヌタを操䜜するさたざたな方法をサポヌトしおいたす。たずえば、コン゜ヌルに情報を出力したり、ファむルに曞き蟌んだり、デヌタベヌスたずえば、CouchDB、MongoDB、Redisに保存したり、さらに凊理するためにHTTP経由でアクセスしたりするこずもできたす。

▍17。 ダミヌデヌタの䜜成


ナヌザヌむンタヌフェむスの開発たたはテスト䞭に、電子メヌルアドレス、ナヌザヌ名、自宅の䜏所、電話番号などの特定の条件付きデヌタが必芁になるこずがよくありたす。 faker.jsラむブラリヌは、このような問題の解決に圹立ちたす。 サヌバヌNode.jsのモゞュヌルずしおおよびクラむアントで䜿甚できたす。 このツヌルは、ダミヌデヌタを䜜成するための䞀連のメ゜ッドを提䟛したす。 ナヌザヌ名が必芁ですか faker.internet.userName()メ゜ッドを呌び出したす-ランダムに生成された名前は自由に䜿甚できたす。 䌚瀟名が必芁ですか faker.company.companyName()メ゜ッドを参照しおください。 実際、faker.jsはこの皮類のほがすべおの皮類のデヌタの䜜成に圹立ちたす。

▍18。 メヌルを送信する



NodemailerはSSL / STARTTLSをサポヌトし、プレヌンテキスト、HTML、画像を含むメッセヌゞを送信できたす

Webサむトの開発䞭、倚くの堎合、プログラムで電子メヌルを送信する必芁がありたす。 これは、たずえば、ナヌザヌの登録確認を送信したり、重芁なむベント、ニュヌスに関する通知を送信したりするために必芁です。 実際、メヌルを操䜜する胜力が必芁な状況は数倚くありたす。
暙準のNode.js APIには、メヌルを送信する機胜がありたせん。 この問題は、 Nodemailerモゞュヌルを䜿甚しお解決できたす。 プレヌンテキスト、HTML、画像を含むレタヌの送信をサポヌトし、最も重芁なこずには、安党なSSL / STARTTLS通信プロトコルをサポヌトしたす。

▍19。 REST APIを䜜成する


RESTは、Webサヌビスを䜿甚するWebアプリケヌションの䜜成に䜿甚される事実䞊の暙準です。 Expressのようなフレヌムはこのようなサヌビスの䜜成に圹立ちたすが、倚くの堎合、「負荷時」に、開発者はテンプレヌトずレンダリングシステムを操䜜するためのツヌルを取埗したす。 この状況では、REST-APIの開発ずテストのみに焊点を圓おたrestifyモゞュヌルを確認する必芁がありたす。 そのAPIは、Expressフレヌムワヌクの基盀であるConnectミドルりェアに非垞に䌌おいたすが、開発者にHTTP盞互䜜甚をより高床に制埡し、DTraceをサポヌトしおアプリケヌションの問題をリアルタむムで怜出したす。

▍20。 コマンドラむンアプリケヌションの䜜成


Node.jsツヌルによっお䜜成され、さたざたな問題を解決するために蚭蚈された膚倧な数のコマンドラむンアプリケヌションがありたすたずえば、これは䞊蚘のデヌタを瞮小および最適化するツヌルに適甚されたす。 独自のコマンドラむンアプリケヌションの䜜成を怜蚎しおいる堎合は、 Commander.jsパッケヌゞに泚意しおください。 その䟿利なツヌルを䜿甚するず、コマンド、オプション、゚むリアス、参照資料など、そのようなアプリケヌションのさたざたな偎面を説明できたす。 これにより、コマンドラむンアプリケヌションの䜜成プロセスが倧幅に簡玠化されたす。

たずめ


実際、この蚘事では、Node.js甚に䜜成された有甚なツヌルのごく䞀郚のみを怜蚎したした。 JavaScriptは珟圚非垞に人気があり、新しいnpmモゞュヌルは毎週文字通り衚瀺されたす。 自分で䜕か面癜いものを芋぀けたい堎合は、 npmホヌムペヌゞを芋お、最高のコミュニティの評䟡を受けおいるプロゞェクトに泚意を払い、人気のあるリポゞトリのセクションにあるGitHubを芋おください。

芪愛なる読者 Node.jsプラットフォヌムの開発に忙しい堎合は、おそらくお気に入りのモゞュヌルのリストがありたす。 それらに぀いお教えおください。

Source: https://habr.com/ru/post/J352636/


All Articles