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

خیلی مطلب جسورانه ای خواهد بود . چرا که من در حدی نیستم که بخوام پاسخ سوال به این سختی و پیچیده گی رو بدم . اما به دلیل مناعت طبع دوستان که لطف داشتند و از من خواستند مطلبی در این باب بنویسم ، پس سعی کردم مطابق با تجربه خودم و دیدگاه هایی که وجود داره ، مطلبی بنویسم .

اول از همه باید بدونیم داریم چی یاد میگیریم . من چون اعتقاد دارم که برنامه نویس باید زبان انگلیسی نسبتا خوبی داشته باشد و قصد یاد دادن چیزی هم ندارم ، پس از وب سایت نود جی اس ، یک سری مطالب رو بیان میکنم که فکر میکنم مهم هستند

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 platform

Electron 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