Maison >interface Web >js tutoriel >Les principales étapes que je suis lors du lancement de projets Node.js

Les principales étapes que je suis lors du lancement de projets Node.js

Susan Sarandon
Susan Sarandonoriginal
2024-10-07 18:18:31858parcourir

The main steps I follow when kicking off Node.js projects

Dalam artikel ini, saya ingin menekankan beberapa langkah yang saya ikuti semasa membangunkan aplikasi Node.js. Langkah ini membantu saya menyampaikan apl yang boleh dipercayai yang merangkumi keperluan perniagaan dan fleksibel serta berskala untuk pertumbuhan jangka panjang.

Sebelum bermula dengan pendekatan dan teknologi yang boleh menyelesaikan masalah, anda harus memahami isu yang akan anda selesaikan. Itulah sebabnya perkara penting yang perlu anda fikirkan ialah konteks perniagaan.
Anda tidak boleh meramalkan bagaimana projek itu akan berkembang selepas pengeluaran dan perkara yang diperlukan oleh perniagaan nanti. Perkara yang boleh anda lakukan ialah membincangkan perkara yang diperlukan oleh syarikat untuk MVP dan membangunkan projek itu dalam cara yang boleh skala untuk bersedia menghadapi perubahan dan migrasi kemudian.

Selepas anda mempunyai konsep dan matlamat untuk MVP, mari beralih ke peringkat kejuruteraan dan periksa pendekatan serta teknologi yang boleh membantu memastikan kebolehskalaan dan kebolehpercayaan aplikasi.

Rangka kerja

Adalah lebih baik untuk bermula dengan memilih seni bina yang akan anda laksanakan — monolit, tanpa pelayan atau perkhidmatan mikro. Terdapat pendekatan seni bina yang paling biasa buat masa ini, tetapi anda tidak terhad di sini.
Anda boleh memilih rangka kerja berdasarkan seni bina. Berhati-hati di sini kerana banyak rangka kerja wujud dalam ekosistem Node.js.
Pilihan saya ialah:

  • Express.js sangat baik untuk projek kecil atau prototaip, yang akan diganti kemudian.

  • Nest.js merangkumi beberapa seni bina, yang merupakan rangka kerja lalai yang saya pertimbangkan semasa memutuskan perkara yang hendak digunakan. Ia bagus untuk monolit, yang akan dibahagikan kepada domain dan kemudiannya diubah menjadi perkhidmatan mikro yang berasingan.

  • Molekul akan bagus jika anda mempertimbangkan perkhidmatan mikro. Namun, saya bukan peminat besar untuk mencipta perkhidmatan mikro apabila projek bermula kerana kerumitan infrastruktur dan proses pembangunan keseluruhan. Ia merupakan rangka kerja yang sangat baik untuk membina perkhidmatan mikro di sekeliling monolit anda atau berhijrah daripada monolit kepada MS.

  • Next.js. Ya, saya juga mempertimbangkannya apabila memutuskan apa yang harus saya gunakan. Ia sesuai jika anda adalah satu-satunya jurutera yang akan mengusahakan projek itu atau jika semua jurutera adalah pembangun timbunan penuh. Bersama-sama dengan Vercel, anda akan mendapat banyak faedah dan boleh bergerak dengan pantas. Walau bagaimanapun, kemudian, anda mungkin perlu memindahkan bahagian belakang ke pangkalan kod yang berasingan kerana kerumitan.

  • Tanpa pelayan adalah hebat dan mungkin satu-satunya penyelesaian untuk mengendalikan seni bina tanpa pelayan. Ia luar biasa untuk prototaip atau API kecil. Namun, saya lebih suka menggunakannya bersama-sama dengan seni bina monolit atau MS sebagai perkhidmatan tambahan atau untuk mengendalikan bahagian aplikasi yang sempit di mana tanpa pelayan sesuai.

Skrip taip

Ia sesuai untuk hampir setiap projek dan seni bina. Walau bagaimanapun, saya tidak mahu berhenti di sini kerana artikel yang berbeza telah menerangkan secara meluas kebaikan dan kelemahannya.

Penyimpanan data

Sudah tentu, anda mesti memilih pangkalan data SQL atau NoSQL berdasarkan keperluan perniagaan anda, atau mungkin anda memerlukan kedua-dua jenis storan. Saya kerap memilih daripada beberapa pangkalan data yang saya kerjakan dan mempunyai pengalaman yang luas.

  • Pilihan lalai saya ialah PostgreSQL. Ia adalah storan hubungan yang sempurna dengan salah satu pengoptimum terbaik. Ia boleh menampung kebanyakan keperluan anda.

  • Selalunya, saya menganggap MongoDB, terutamanya versi tanpa pelayan. Ia adalah pangkalan data teguh yang mendapat manfaat daripada model hubungan dan merupakan pangkalan data NoSQL yang berkuasa dengan banyak ciri yang kebanyakan storan tidak menyediakan.

  • Jika anda memerlukan penyelesaian NoSQL yang berkuasa tanpa faedah hubungan, pertimbangkan DynamoDB. Saya juga kerap menggunakannya, tetapi kebanyakannya untuk mengendalikan bahagian projek yang sempit. Berhati-hati dengan pangkalan data ini kerana ia mempunyai reka bentuk khas yang anda mesti pelajari sebelum digunakan. Jangan jadi seperti orang yang mencipta banyak jadual dan cuba menggunakannya sebagai MongoDB atau bahkan sebagai DB hubungan. Dalam kes ini, anda akan menghadapi masalah besar apabila produk berkembang.

Selain itu, saya ingin menyebut storan tidak berterusan seperti ElasticSearch dan Redis, yang sering saya gunakan. ElasticSearch tidak bagus apabila projek bermula, tetapi anda boleh mengambil kira dan menggunakannya kemudian apabila anda perlu mengendalikan indeks dan carian yang kompleks. Redis atau pangkalan data memori lain adalah mesra dan mudah untuk dilaksanakan. Kami kerap memerlukan cache walaupun pada permulaan projek, jadi senang untuk memilikinya.

Couche d'accès aux données

Ici, j'utilise différentes approches selon le côté produit. J'aime commencer avec ORM et migrer vers le générateur de requêtes ou le SQL brut par parties étroites. Pour les bases de données NoSQL, je ne dirais pas que j’aime les ODM et que je préfère utiliser des pilotes. Par exemple, je n'apprécie pas particulièrement utiliser Mongoose et je choisis le pilote Node.js à la place. Je pense que c'est plus flexible et simple que l'ODM, et cela ne nécessite pas d'utiliser le modèle relationnel.

Pour les bases de données relationnelles, il existe de nombreuses bibliothèques différentes que vous pouvez utiliser ici, mais si vous utilisez une base de données SQL, vous pouvez envisager TypeORM.

Flux de travail de développement

La dernière chose que je veux mentionner est le flux de travail de développement. J'aime garder les choses aussi simples que possible et utiliser des outils faciles à mettre en œuvre pour aider à automatiser les flux de travail, en passant à des solutions plus flexibles et plus complexes si nécessaire. Voici mes recommandations d'outils que vous pouvez envisager :

  • Actions Github. C'est un excellent outil CI/CD que vous pouvez configurer rapidement et facilement.

  • Dependabot est un outil fantastique pour conserver les packages dans les dernières versions et rechercher des vulnérabilités.

  • Terraforme. Je l'utilise pour gérer l'infrastructure. Cela simplifie beaucoup de choses si au moins quelques personnes travaillent sur un projet. Au fur et à mesure que le projet se développe, il devient massif, et peut-être pour une meilleure gestion de l'état, vous aurez besoin d'outils comme Terragrunt pour simplifier le code lié à l'infrastructure. Si vous utilisez AWS comme fournisseur de cloud, vous pouvez également utiliser AWS CDK. C'est un outil intéressant avec prise en charge de Typescript, mais il n'est disponible que pour AWS, et si vous avez besoin de quelque chose provenant d'une autre infrastructure cloud, le code sera beaucoup plus complexe que Terraform. C'est pourquoi je préfère Terraform même pour AWS.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn