نود جی اس رو از کجا شروع کنیم؟

خیلی مطلب جسورانه ای خواهد بود . چرا که من در حدی نیستم که بخوام پاسخ سوال به این سختی و پیچیده گی رو بدم . اما به دلیل مناعت طبع دوستان که لطف داشتند و از من خواستند مطلبی در این باب بنویسم ، پس سعی کردم مطابق با تجربه خودم و دیدگاه هایی که وجود داره ، مطلبی بنویسم . اول از همه باید بدونیم داریم چی یاد میگیریم . من چون اعتقاد دارم که برنامه نویس باید زبان انگلیسی نسبتا خوبی داشته باشد و قصد یاد دادن چیزی هم ندارم ، پس از وب سایت نود جی اس ، یک سری مطالب رو بیان میکنم که فکر میکنم مهم هستند Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.Node.js is an open-source, cross-platform JavaScript run-time environment that executes JavaScript code outside of a browser.(wikipedia)طبق گفته های بالا ، نود جی اس یک زبان نیست و همونطور که دیدیم ، یک موتور هست که با جاوا اسکریپت اجرا میشه .جاوا اسکریپتخوب ، اول از همه باید با جاوا اسکریپت آشنا بشیم و تسلط نسبی داشته باشیم روی نحوه کار کردن با جاوا اسکریپت . برای این کار باید یک دید کلی داشته باشیم . باید یک شناسنامه کامل از اکما اسکریپت ها و تفاوت نسخه هایی که موجود هست را بدونیم . https://en.wikipedia.org/wiki/ECMAScript لینک هایی معرفی میکنم تا بتونیم جاوا اسکریپت رو کامل و خوب یاد بگیریم . به این منظور ، به ترتیب لینک ها رو جلو میریم . البته اعتبار لینک ها تضمین شده هستند . https://javascript.info/ https://developer.mozilla.org/en-US/docs/Web/JavaScript https://medium.com/@madasamy/15-javascript-concepts-that-every-nodejs-programmer-must-to-know-6894f5157cb7 نود جی اسدر این مرحله باید حتما بدونیم که نود جی اس داره با چه ساختاری کار میکنه؟ مثل اینکه blocking ‌و non-blocking و تفاوت های async و sync ‌و ... رو بدونیم . بهتره که داکیومنت جامعی از نود جی اس بخونیم .باندلر هامشکل بعدی که دیده شده و خیلی ها با اون مشکل دارن ، نداشتن مهارت کافی بر روی bundler های جاوا اسکریپت هست . بهتر اینه که بعد از کسب مهارت کافی در جاوا اسکریپت ، دلیل و نحوه استفاده از باندلر ها رو بدونید . JavaScript bundlers are similar to loaders but they are mostly concerned with making code ready for production.همانطور که در بالا نوشتم ، باندلر ها ،‌دغدغه ایجاد یک نسخه production با پرفورمنس خوب را دارند . در لینک زیر میتونید لیست بهترین باندلر ها که در اولین ردیف آن ، webpack قرار دارد رو ، ببینید . https://www.slant.co/topics/3900/~best-frontend-javascript-module-bundlers قرار نیست به همه این باندلر ها تسلط داشته باشید . اما باید بتونید به راحتی کانفیگ کنید و اصطلاحات رو درک کنید . فریم ورک ها در مرحله بعدی باید بدونیم که چه هدفی داریم؟ قصد نوشتن کد های سمت وب داریم یا اینکه میخوایم یک نرم افزار بنویسیم که روی دسکتاپ کار کنه یا یک موبایل اپلیکیشن و حتی کارهای روبوتیک و یا نرم افزارهایی برای arduino یا میکرو کامپیوتر ها مثل raspberry pi؟خوب برای هر کدوم ، فریم ورک ها و بویلرپلیت های خاص خودشو داریم . فریم ورک های وب :Express.js https://expressjs.com/ Koa.js https://koajs.com/ Sails.js https://sailsjs.com/ AdonisJs https://adonisjs.com MeteorJs https://www.meteor.com/ NestJs https://nestjs.com مواردی که ذکر شد ، محبوب ترین ها هستند و دلیل بر برتری ندارند و مواردی که نوشته نشدند بسیار زیادندفریم ورک های cross platformElectron js https://electronjs.org/ NW.js https://nwjs.io/ Meteor.js https://www.meteor.com/ ذخیره سازی cache ذخیره سازی در cache برای بالا بردن پرفورمنس اپلیکیشن ها یک امر لازم و مهم است . express-redis-cache https://www.npmjs.com/package/express-redis-cache node-cache https://www.npmjs.com/package/node-cache cache-manager https://www.npmjs.com/package/cache-manager مدیریت پایگاه دادهMongoose ODM (Mongo DB) https://mongoosejs.com/ Sequelize docs.sequelizejs.com TypeORM https://typeorm.io/ Mysql https://github.com/mysqljs/mysql https://virgool.io/JavaScript8/%D9%86%D9%88%D8%B4%D8%AA%D9%86-%DA%A9%D9%88%D8%A6%D8%B1%DB%8C-mysql-%D8%AF%D8%B1-nodejs-c2qq531hzxir سوکت ها و فریم ورک های آنسوکت یک پروتوکل برای ارتباط real time بین اپلیکیشن ها است (وب ، موبایل ، دسکتاپ و ...). این پروتوکل ، فریم ورک های مختلف زیادی دارد که معروفترین آنه socket.io هست . البته معروف بودن دلیل بر بهتر بودن نیست . باید بدونید که پروژه شما به چه چیز هایی نیاز دارد . socket.io https://github.com/socketio/socket.io ws https://github.com/websockets/ws Feathers https://github.com/feathersjs/feathers Express-ws https://github.com/HenningM/express-ws انتشار برنامه های وب (Deploying)در این مرحله ، باید نحوه انتشار برنامه ها بر روی وب سایت رو بدونیم . این مورد را Deploy کردن میگن. برای این کار بهترین روش شناخته شده ، استفاده از PM2 هست PM2 http://pm2.keymetrics.io/ کمی هم داکر خوبهاین مورد لازمه برنامه نویس نیست ، اما خوبه برنامه نویس بدونه داکر چیه و چرا ازش استفاده میکنیم . چون قصد آموزش ندارم و فقط میخوام ریفرنس بدم ، لینک داکر و توضیحاتش رو قرار میدم . Docker is a set of coupled software-as-a-service and platform-as-a-service products that use operating-system-level virtualization to develop and deliver software in packages called containers https://www.docker.com/ میتوانید بعد از این مطلب ، لینک زیر رو بخونین https://virgool.io/liara-ir/%D9%86%D9%88%D8%B4%D8%AA%D9%86-dockerfile-%D8%A8%D8%B1%D8%A7%DB%8C-nodejs-jyxg06dz3ak5