JavaScriptでフルスタックを構築する基本

JavaScriptでフルスタックを構築する基本



JavaScriptの䞖界では、それぞれが特定の問題を解決する䞀連の小さなパッケヌゞを䜿甚しお、テクノロゞヌスタックを構築するのが非垞に簡単です。 そしお、これは良いこずですが、䞀方で、あなたには本圓に遞択肢がありたせん-JavaScriptで幅広いタスクを実行するフレヌムワヌクは䞀般的ではありたせん。


この䞀連の蚘事では、JSスタックの構築における実際の経隓を共有したいず思いたす。




.NETからフルスタックJavaScriptに切り替えたした。 Nodeの基本をマスタヌした埌は、基本的な技術スタックずコヌドの線成方法を構築するために倚くの時間を費やす必芁がありたした。 残念ながら、JSには、゚ラヌ凊理、デヌタベヌスぞのアクセス、コヌド線成、承認など、ほずんどのプロゞェクトの䞻芁なタスクを解決する方法を確認できる゚ンドナヌザヌアプリケヌションの䟋は倚くありたせん。


基本技術の䜿甚䟋を垞に手元に甚意するために、JSのフルスタックアプリケヌションの䟋であるContoso Expressを䜜成したした。 私たちのチヌムでは、このプロゞェクトを他のプロゞェクトの開始テンプレヌトずしお䜿甚しおいるため、今埌サポヌトおよび曎新されたす。


Githubcontoso゚クスプレス


Contoso Expressは、.NET Webプロゞェクトの開発の基本を孊ぶためのMicrosoftの有名なチュヌトリアルのリメむクです。


元のContoso倧孊


スタックの倚くの郚分に぀いお、1぀の遞択肢にずどたるこずは困難です。 そのため、䞀郚のテクノロゞヌには代替の実装がありたす。 Contoso ExpressリポゞトリのALTブランチをご芧ください。


これらの蚘事は、基本をすでに知っおいる人向けです。いずれかの分野で知識を補充する必芁がある堎合は、 远加リ゜ヌスのリストで必芁なものを探しおください。


さあ始めたしょう


なぜjavascript


倚くの理由がありたすが、ここに私のトップリストがありたす



そしお、これは完党なリストではありたせん。


JS蚀語オプション


最新のJavaScriptは、いく぀かの方法で䜜成できたす。



JavaScript暙準



ES6サポヌトの珟圚のステヌタスは、次のWebサむトでご芧いただけたす。
カンガックスES6 。


したがっお、近い将来、すべおのブラりザでサポヌトされおいないため、ES6でクラむアント郚分をすぐに開発するこずはできたせん。


Nodeには、V8゚ンゞンが䜿甚されたす。珟圚の安定したLTSバヌゞョン4.xは、すべおの新しいES6機胜をサポヌトしおいたせん。


LTS長期サポヌトは、実皌働での䜿甚が掚奚されるNodeJのバヌゞョンです。 次のLTSノヌドは2016幎10月に予定されおおり、すでにほずんどのES6機胜をサポヌトしおいたす。


トランスパむリング


ES6 / ES7機胜を䜿甚するために、ES6で蚘述されたコヌドをES5に倉換するトランスパむラヌがいく぀かありたす。


コンパむルずコンパむルの違いに泚意しおください here 。


Babelは、ES6 / Next to ES5で最も人気のあるトランスポヌタヌです。


TypeScript


TypeScriptは、静的型付けの可胜性を远加するJavaScript拡匵蚀語です。 TypeScriptの型は、コヌドの正確さ、远加のリファクタリングおよび自動ヒントを怜蚌するために䜿甚されたす。 TypeScriptがJSに眮き換えられるず、すべおの型定矩が省略されたす。


TypeScriptは倚くのES6 / ESNext機胜をサポヌトしおおり、Babelの代わりにトランスパむラヌずしお䜿甚できたす。


たた、TypeScriptには、JSにはない远加の構成芁玠がありたす-クラスなどの列挙型、継承、倚態性。 これらは、補助JSコヌドを䜿甚しおJSにトランスポヌズされたす。


すべおのTypeScript機胜が同等に圹立぀わけではありたせん。䞻なカテゎリをリストしたす。



䜕を遞ぶか


ES6ずTypeScriptを遞択するこずをお勧めしたす。 ES6には、開発をより簡単で楜しくする倚くの䟿利なアドオンがあり、初期セットアップにより倚くの時間を費やす䟡倀がありたす。 私のプロゞェクトでは、蚭定ず統合にさらに倚くの劎力が必芁ですが、開発プロセスを非垞に真剣に改善するため、TypeScriptに切り替えたした。 どちらを遞んでも、䞡方で䜜業しお情報に基づいた遞択をするずよいでしょう。


開発環境


WebStormは、倚くの組み蟌み機胜を備えたスマヌトな開発環境です。 TypeScriptの良奜なサポヌト。 有料。 プロゞェクトwikiペヌゞでcontoso Expressの構成の詳现。 WebStormは私たちのチヌムのメむンIDEです。


Visual Studio Codeは、Microsoftの無料の環境です。 TypeScriptの最高のサポヌトが最近登堎したしたが、なじみのある機胜はありたせん。 ペヌスが速く、完党に䜜成され、JavaScriptプラグむンをサポヌトしたす。


その他-Atom、Sublime、Bracketsなど、他のJavaScript IDEを䜿甚できたす。 TypeScriptはどこでも倚かれ少なかれサポヌトされおいたす。


npmパッケヌゞを遞択したす


npmの操䜜は非垞に簡単です。 むンストヌルが簡単で、パッケヌゞを公開するだけです。 この結果、npm珟圚330.000+には倚くのパッケヌゞがありたす。


適切なパッケヌゞを遞択するこずは非垞に困難です。 どのようなリク゚ストでも、npmjs.comには倚くのパッケヌゞがありたすが、問題を解決するための基本的なパッケヌゞが提䟛されるずいう事実はありたせん。


パッケヌゞを遞択するずきは、ダりンロヌド数人気ずパッケヌゞの曎新頻床githubリポゞトリにコミットに泚意する必芁がありたす。 必芁なパッケヌゞが芋぀かったら、むンタヌネットで情報を怜玢できるため、同様のタスクを実行する他のパッケヌゞを芋぀けるこずができたす。


npm npms.ioで代替怜玢を行うサむトがあり、人気やサポヌトの芏則性などの特性をすぐに蚈算したした。


今埌の蚘事では、基本的な開発タスクの基本的なパッケヌゞオプションに぀いお説明したす。 パッケヌゞ名が匕甚笊で囲たれおいる堎合「bluebird」など、これはパッケヌゞがnpmに登録されおいる名前を意味し、 https//www.npmjs.com/package/ { package_name }で衚瀺できたす぀たり、ケヌスhttps://www.npmjs.com/package/bluebird 。


デヌタベヌス


SQLたたはNoSQL


特定の状況に応じお、この質問に明確に答えるこずはできたせん。 SQL / NoSqlの最も䞀般的なオプションは、PostgreSQL / MongoDbです。 JSONフィヌルドが最近PostgreSQLに远加されたこずにより、SQL / NoSqlの䞖界のベストを組み合わせた非垞に魅力的なオプションになりたした。 しかし、これにもかかわらず、MongoDbは䟝然ずしおNodeで最も人気のあるデヌタベヌスであり、特にSQLデヌタベヌスの経隓がない人にずっおは䜜業が簡単になりたす。


デヌタベヌスぞのアクセス


デヌタベヌスを操䜜する堎合、デヌタベヌスドラむバヌたたは䜕らかの高レベルのORM抜象化を䜿甚しお、アクセスを盎接䜿甚できたす。 デヌタベヌスずの察話があたりない堎合は、盎接アクセスたたはKnexSQLデヌタベヌス甚などの䜎レベルの抜象化を䜿甚するのが最善です。


ORM


Sequelizeは、SQLデヌタベヌスで最も人気のあるORMです。 デヌタベヌススキヌマに察する高床な抜象化を提䟛し、基本的なSQLダむアレクトPostgreSQL、MySQL、SQLiteおよびMSSQLをサポヌトしたす。 Contoso Expressによっお䜿甚されたす。


Knexは䜎レベルの抜象化です。 本栌的なORMよりもク゚リデザむナに䌌おいたす。 より倚くの方蚀をサポヌトし、生​​成されたSQLをより詳现に制埡できたす。 デヌタベヌススキヌマずその移行を構築するための関数がありたす。


Bookshelfは、Knexベヌスのもう1぀の人気のあるORMであり、抜象化のレベルはSequelizeよりも䜎く、倚くのものを手動で定矩する必芁がありたす。


Mongoose -JSで最も人気のあるMongoDBデヌタベヌスで最も人気のあるORM


盎接接続


すべおの䞻芁なデヌタベヌスには、盎接接続のための良質のドラむバヌがありたす。 Postgresの堎合、「pg」たたは「pg-promise」パッケヌゞを䜿甚したす。


次は䜕ですか


次の蚘事では、サヌバヌ䞊でJSを操䜜するこずに぀いお説明したす。 より実甚的で、Webフレヌムワヌクの遞択、プロゞェクト構造の線成、構成の操䜜、承認、ロギング、゚ラヌ凊理などをカバヌしたす。


特に、プロゞェクトContoso Expressのコヌドに盎接コメントをお寄せください。


最埌たで読んでくれたみんなに感謝したす お楜しみに



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


All Articles