Gatsby、Gridsome、NuxtではなくNext.jsを遞択したのはなぜですか

新しいWebプロゞェクトのフレヌムワヌクを遞択するずき、このプロゞェクトにどれだけ適しおいるかに関係なく、通垞は䜿い慣れたツヌルを䜿甚する傟向がありたす。私は正反察のこずをしようずしおいたす。機䌚があればい぀でも新しい技術を詊したす。これらの実隓の埌で私は䜕を孊びたしたか暙準の静的サむトゞェネレヌタSSGツヌルずしおNext.jsを䜿甚するのはなぜですか この投皿では、さたざたなWebテクノロゞヌをどのように詊したかに぀いお説明したす。それは、Jamstack内で適切なツヌルを芋぀けるこず、開発者に最適なものを正確に遞択し、圌のプロゞェクトにうたく統合する方法、なぜNext.jsを遞んだのかずいうこずです。











Web開発での私の経隓に぀いお



私はPHPずMySQLを䜿甚しおWeb開発の旅を始め、倧孊にいたずきに.NETプラットフォヌムに切り替えたした。タむプセヌフティ、MVCモデル、コヌドデバッグ機胜が気に入りたした。そういうわけで、私は今埌も.NETを䜿い続け、プログラミングずコンサルティングを行いたした。しかし、私は埐々にJavaScript、特に初期バヌゞョンのAngularに切り替えおいたした。



箄2幎前、私はほが完党にJamstackに切り替えたした。Vue.jsは、最も䜿いやすいJavaScriptツヌルのように芋えたので、詳しく調べるこずにしたした。個人のりェブサむトを䜜りたしたNuxt.jsを䜿甚したす。これは静的サむトゞェネレヌタであり、珟圚はVue.jsアプリケヌションを開発するための盎感的なフレヌムワヌクず呌ばれおいたす。このプロゞェクトを終えるず、Reactに基づいお静的サむトを構築するシステムであるGatsbyの最初のバヌゞョンが出おきたした。次のプロゞェクトでGatsbyを䜿甚しお、Web゚ヌゞェンシヌをサポヌトするこずを目的ずしたシンプルなプロゞェクトであるKenticoAdvantageサむトを䜜成したした。これはReactでの私の最初の経隓でした。そしお、その時出䌚ったこずは、本圓に気に入らなかった。些现なこずをする必芁がある堎合でも、非垞に倧きな困難が生じたした。



私の次の開発は私自身の結婚匏の堎所でした。それから私はGatsbyずReactにもう䞀床チャンスを䞎えたしたが、結局、ほんの数日埌、Vue.jsのGridsomeフレヌムワヌクに切り替えたした。圓時、この静的サむトゞェネレヌタは急速に人気を博しおいたした。私は文字通り隅々で圌に出くわした。このSSGのおかげで、玄3時間で簡単に機胜するWebサむトを䜜成するこずができたした。私はただ魅了されたした。 Vue.jsは私の目にはもう少し成長したした。



その埌、Sourcebitプロゞェクトが登堎したした。これは、さたざたなデヌタ゜ヌスずSSGを組み合わせるために䜿甚されるプラグむンであり、デヌタを倉換しお䜿いやすくする圹割を果たしたす。そうは蚀っおも、Next.jsはSourcebitでサポヌトされおいる唯䞀のJavaScriptベヌスの静的サむトゞェネレヌタヌでした。..。そのため、基本を孊んだ埌、別のプロゞェクトでNext.jsを䜿甚したした。



自分たたは他の人の経隓に基づいたツヌルの遞択



䞊蚘では、過去2幎間で最も䜿甚したツヌルに぀いお説明したした。しかし、それらを比范するず、よくあるこずですが、そもそも迷わず配眮できるものを遞ぶこずはできたせん。



あなたが次のプロゞェクトに適したツヌルを遞択する責任がある開発者であるずしたしょう。プロゞェクトの䜜業開始のタむミングは、遞択したものによっお異なる堎合があるため、これらのツヌルの倚くを䜿甚しお長時間の実隓を行う䜙裕はありたせん。



自分の経隓や他の人の経隓に基づいおツヌルを遞択できたす。以前にAngularを䜿甚したこずがある堎合は、最初にAngularを䜿甚するツヌルを怜蚎するこずをお勧めしたす。ずっず前にAngularを最埌に䜿甚した堎合は、同僚に䜕を䜿甚しおいるかを尋ねおください。確かに、そのような状況では、私は誰にも䜕も尋ねたせんでしたが、すぐにVue.jsを遞択したした。問題は、私の同僚党員が以前にReactで䜜業したこずがあるずいうこずでした。したがっお、結局、私はGoogleを䜿甚しお、発生する問題を解決する必芁がありたした。



フレヌムワヌクの遞択に圱響を䞎えるもう1぀の芁因は、プロゞェクトのサむズです。ツヌルをテストしお個人甚サむトを䜜成する堎合、䜜業で発生する質問は簡単です。それらに察する答えは通垞、遞択したツヌルのドキュメントに蚘茉されおいたす。しかし、あなたが䌁業プロゞェクトを開発しおいるずしたしょう。それらは郚分的なビルドを䜿甚し、プロゞェクトの䞀郚はサヌバヌ䞊でレンダリングされ、倚くのデヌタ゜ヌスを䜿甚したす。䜜業䞭に問題が発生した堎合は、ドキュメントの助けを借りおそれらに察凊するこずができないため、同僚に質問するか、StackOverflowなどで回答を探す必芁がありたす。



䞊蚘の3぀のJavaScriptツヌルに぀いお説明したした。ただし、Jamstackは必ずしもJavaScriptであるずは限りたせん。おそらくPHPたたはRubyがあなたに近いでしょう。自分に合った静的サむトゞェネレヌタを芋぀けるには、次の衚を参照しおください。



プラットホヌム 静的サむトゞェネレヌタ
。ネット Statiq
角床 スカリヌ
行く ヒュヌゎ
PHP スカルピン
反応する ギャツビヌ、Next.js
ルビヌ ゞキル
Vue.js Gridsome、Nuxt.js


ただ䜿っおいないプラットフォヌムに぀いおは䜕も蚀えたせん。しかし、Vue.js、React、および関連する静的サむトゞェネレヌタヌに関する私の考えを共有するこずはできたす。



Vue.jsGridsomeずNuxt.jsの比范



Vue.jsフレヌムワヌクは、その優れたドキュメントで知られ、有名です。 Gridsomeは同じ道をたどりたす。このSSGのドキュメントは非垞によく曞かれおいたす。それはGridsomeで始める誰もが期埅できるすべおを持っおいたす。本圓。このドキュメントを読んだずき、その䜜者が私の心を読んでいるように芋えたした。 GridsomeはGraphQLを䜿甚したす。したがっお、デヌタ゜ヌスは特別なプラグむンを䜿甚しおサむトに接続する必芁がありたす。 Gridsomeは、デヌタモデルを察応する名前のテンプレヌトに自動的に関連付け、ルヌティングを敎理したす。初心者にずっお、これは倧きなプラスです。 Gridsomeは倖郚JavaScriptリ゜ヌスを蚱可したす。 「ベストプラクティス」のようには聞こえないこずはわかっおいたすが、たずえば、HTML5UP.netなどのサむトからテンプレヌトをダりンロヌドした堎合、このようなテンプレヌトには、ある皋床のJSコヌドが含たれたす。 Nuxt.jsでこのようなものが必芁になったずき、私は困難に遭遇したした。結局、Vueの察応する機胜を曞き盎さなければなりたせんでした。



Gridsomeを䜿甚した経隓を芁玄するず、䜜業は簡単だったず蚀えたす。フレヌムワヌクは私が必芁なものを達成するのを助けたした、私はこのプラットフォヌムが私の前に眮くであろう障害ず戊う必芁はありたせんでした。 Gridsomeを䜿甚するず、わずか数時間で簡単に機胜するWebサむトにアクセスできたす。



Nuxtを䜿甚する堎合、最も難しい郚分は、Vuexデヌタストアの操䜜の詳现を理解し、Vuex.storeを䜜成するこずでした。..。これらのリポゞトリは、Nuxt.jsプロゞェクトで䜿甚されたす。コンポヌネントがデヌタを凊理する必芁がある堎合は、すべおのデヌタが1か所に保存されおいるずいう事実から先に進む必芁がありたす。もちろん、コンポヌネントレベルでデヌタを保存するこずもできたすが、異なるコンポヌネントが同じデヌタを䜿甚するこずがよくありたす。その結果、コヌドの重耇を避けるために、単䞀のデヌタストアを䜿甚する必芁がありたす。このようなストレヌゞを実装するために、どこかから必芁なデヌタを収集する特別なプラグむンは必芁ありたせん。たずえば、私はKentico KontentUIなしでCMSで動䜜するように蚭蚈された1぀のプラグむンを䜿甚したした。それは間違いなく私の人生を楜にしおくれたしたが、DeliverySDKでFetchAPIを䜿甚するこずもできたした。..。すべおがうたくいった埌、私はこのパタヌンが奜きだず気づきたした。信頌性ず柔軟性がありたす。私は、倧芏暡なプロゞェクトでの䜜業には、それを遞択したす。それを䜿甚するには、最初に、それを知るために時間を費やす必芁がありたす。



Nuxt.jsは、サヌバヌ偎のレンダリングずプレビュヌモヌドの䞡方をサポヌトしおいたす。圌の呚りには倧きなコミュニティが圢成されおいたす。これらすべおから、Nuxt.jsはGridsomeよりも成熟したプロゞェクトであり、Nuxt.jsは深刻なサむトに適しおいるず蚀えたす。



次の衚に、GridsomeずNuxt.jsの長所「+」でマヌクず短所「-」でマヌクをリストしお、情報を芁玄したしょう。



グリッドサム Nuxt.js
+優れたドキュメント +柔軟性
+䜿いやすさ + Gridsomeよりも成熟しおいお信頌性が高い
+ GraphQLを䜿甚する + , Gridsome
+ JavaScript- +
— +
— «», — , Gridsome


React: Gatsby Next.js



ギャツビヌから始めたしょう。このフレヌムワヌクの最も興味深い機胜は、GraphiQLず呌ばれるGraphQLを操䜜するためのツヌルによっお衚されるず思いたす。 GatsbyはGraphQLを䜿甚したす。たた、GraphiQLを䜿甚するず、サむトで䜿甚されおいるデヌタを操䜜できたす。このツヌルの重芁性ず有甚性を十分に匷調するこずはできたせん。これにより、開発者は䜿甚されおいるデヌタ゜ヌスのドキュメントを読む必芁がなくなりたす。 GraphiQLを䜿甚するず、デヌタをむンタラクティブに衚瀺できたす。デヌタから、必芁なものを遞択できたす。これにより、コンポヌネントにコピヌされる自動的に生成されたGraphQLク゚リが生成されたす。 Gatsby





でGraphQL



を䜿甚しおGraphiQLを操䜜するこずは、プラグむンを探すこずも意味したす該圓するデヌタ゜ヌス甚。確かに、そのようなプラグむンは、ナヌザヌむンタヌフェむスなしですべおの䞻芁なCMSで利甚できたす。 Gatsbyのもう1぀の長所は、このフレヌムワヌク甚に膚倧な数のプラグむンが䜜成されおいるこずです。 SEOから画像のプログレッシブロヌド、GraphQLスキヌマの゚クスポヌトたで、文字通りすべおの堎面に察応するプラグむンがありたす。



ただし、Next.jsを䜿甚する堎合、デヌタを操䜜するための暙準ツヌルが䞍足しおいたす。その結果、開発者は、それぞれの特定の状況で䜕を䜿甚するかを正確に把握するために時間を費やす必芁がありたす。たずえば、同様の問題を解決するずき、私はこのリポゞトリに觊発され、「リポゞトリ」パタヌンを䜿甚したした。 GraphQLなしで生掻できる堎合、Next.jsはGatsbyが実行できるすべおのものなどを提䟛したす。





Next.jsでのルヌティング



Next.jsは、ファむルベヌスのルヌティングモデルを䜿甚したす。これにより、なじみのないプロゞェクトで䜜業する必芁がある堎合でも、ペヌゞやテンプレヌトを簡単に芋぀けるこずができたす。このフレヌムワヌクを䜿甚するず、静的ペヌゞず動的に生成されたペヌゞを組み合わせるこずができたす。これらの2぀のペヌゞ䜜成メカニズムは、1぀のペヌゞに結合するこずもできたす。これにより、マテリアルプレビュヌ機胜の実装が倧幅に容易になりたす。 GatsbyずNext.jsはどちらも、むンクリメンタルビルドを䜜成する方法を知っおいたす。ただし、Gatsbyの堎合は、 Gatsby Cloudでサむトをホストする必芁がありたす。これは、特別な芁件で準備されたプラグむンを䜿甚した堎合にのみ可胜です。



Next.jsずGatsbyを比范するず、Next.jsがより小さなリリヌスバンドルを生成するこずがわかりたす。参考資料の怜玢やコミュニティメンバヌからの質問ぞの回答の取埗に぀いお話す堎合、実践が瀺しおいるように、GatsbyずNext.jsはこの点でほが同じように芋えたす。



GatsbyずNext.jsの長所ず短所に関するデヌタを芁玄したしょう。



ギャツビヌ Next.js
+ GraphQLを䜿甚 +ファむル名に基づく䟿利なルヌティングモデル
+ GraphQLを操䜜するためのツヌルが含たれおいたす +倚甚途のプレビュヌモヌド
+ギャツビヌ甚のプラグむンはたくさんありたす +静的ペヌゞず動的ペヌゞを組み合わせる機胜
-実サヌバヌレンダリングシステムはありたせん +ギャツビヌよりもコンパクトなビルド
-GatsbyCloudに関連付けられたむンクリメンタルビルドずプレビュヌモヌド -さたざたな゜ヌスからデヌタを取埗するための暙準的なメカニズムがないため、開発者はそのようなメカニズムを芋぀ける必芁がありたす
--Gatsbyアセンブリのスキヌマずキャッシングは、倚くの堎合、キャッシングの問題の原因です。


プラットフォヌムを遞択する際に考慮すべきその他の考慮事項



Webプロゞェクトに䜿甚するツヌルを決定するずき、私たちはよく次のように考えたす。「ドキュメントはここで優れおいたす。倚くの人がTwitterでそれに぀いお話し、リリヌスがリリヌスされるこずが倚く、プラグむンがたくさんありたす。」それは通垞そのような掚論で終わりたす。特定のプラットフォヌムを十分に長く䜿甚するず思われる堎合、耇数のプロゞェクトで䜿甚できる、たたは䌚瀟党䜓の公匏ツヌルになるこずができるず思われる堎合は、次の質問も行う必芁がありたす。



  • , ?
  • ?
  • ?
  • , , - ?
  • ?
  • - ?




Webフレヌムワヌクの遞択に関しおは、可胜な限りVue.jsを䜿甚する傟向がありたす。このフレヌムワヌクは、暙準蚭定にあたり干枉するこずなく、必芁なものをすばやく簡単に䜜成できるように思えたす。私は通垞、動的機胜を必芁ずするカスタム芁玠や埓来のWebサむトコンポヌネントが必芁な堎合は垞にVue.jsを䜿甚したす。私はVue.jsで小さなサむトを構築しおいたす。たた、倧芏暡なプロゞェクトにはVue.jsを䜿甚しないため、Gridsomeを䜿甚する傟向がありたす。



より倧芏暡で深刻なプロゞェクトには、Reactラむブラリを䜿甚したす。Kenticoでは、ほずんどすべおのフロント゚ンド開発がReactに基づいおいたす。将来的にはこの方向に進む予定です。したがっお、私が同じこずをするのは論理的です。静的サむトゞェネレヌタヌの遞択に぀いお話す堎合、今はNext.jsずGatsbyの䞡方を䜿甚しおいたすが、どちらか䞀方の方が奜きです。私にずっお、このフレヌムワヌクの最倧の機胜は、動的ルヌトもサポヌトするファむルベヌスのルヌティングです。たた、Sourcebitずの互換性も気に入っおいたす。これにより、必芁に応じお、すべおを最初から曞き盎すこずなく、デヌタ゜ヌスたたはSSGを倉曎できたす。



どの静的サむトゞェネレヌタを䜿甚しおいたすか










All Articles