در این مطلب قصد دارم درباره تاریخچه و ویژگی های جاوااسکریپت بنویسم و معرفی کوتاهی درباره Node.js ارائه بدم.

تاریخچه جاوااسکریپت

در سال 1995 شرکت نت اسکیپ (Netscape) زبان اسکریپت نویسی را برای کارهایی مانند اعتبار سنجی داده های ارسالی کاربر (فرم های صفحات وب) در مرورگر، توسعه داد. در آن دوره به دلیل کم بودن پهنای باند اتصال به اینترنت اعتبار سنجی داده های ارسالی کاربر درسمت سرور علاوه بر ایجاد سربار پردازشی، بسیار زمانبر نیز بود. اسکریپت های این زبان در صفحات HTML جاسازی می شد و فقط در محیط مرورگر قابل اجرا بود. در ابتدا این زبان با نام Mocha توسعه داده شد و سپس  LiveScript نام گرفت. ولی در نهایت به دلیل موفقیت های زیاد زبان جاوا، JavaScript نام‌گذاری شد تا بتواند توجه برنامه نویسان را به خود جلب کند. (زبان برنامه نویسی جاوا هیچ ربطی به جاوا اسکریپ ندارد و این دو هریک زبان برنامه نویسی مستقلی هستند.) بعد از نت اسکیپ شرکت ماکروسافت هم اقدام به پیاده سازی چنین زبان اسکریپت نویسی برای مرورگر خود کرد و آن را JScript نام گذاری کرد.
نت اسکیپ برای استاندارد سازی جاوااسکریپت و ایجاد سازگاری این زبان در مرورگرهای مختلف، طرح پیشنهادی را برای استاندارد سازی جاوااسکریپت به سازمان استاندارد سازی ECMA International ارائه کرد. نتیجه این کار انتشار اولین نسخه از مشخصات زبان ECMAScript در سال 1997 شد.با گذشت زمان نسخه های جدیدتری از این استاندارد منتشر شده و زبان جاوااسکریپت کاملتر و بهتر از گذشته شده است. در حال حاضر آخرین نسخه ECMAScript 9 (ES9) است که در ژوئن 2018  منتشر شده است.

ویژگی های جاوااسکریپت

از ویژگی های جاوااسکریپت می توان مواردد زیر اشاره کرد.

  • محبوب و پراستفاده
  • سادگی و یاد گیری آسان و سریع
  • وجود منابع آموزشی زیاد
  • لایبرری ها و فریم ورک های متنوع و بسیار زیاد
  • پر کاربرد، با کاربرد های برنامه نویسی صفحات وب، برنامه های سمت سرور، برنامه های دسکتاپ، برنامه تلفن همراه هوشمند و حتی برنامه نویسی برای سیستم های جاسازی شده
  • پشتیبانی از پارادایم های برنامه نویسی رویه ای (Procedural programming)، شی گرا (OOP: Object Oriented Programming) و تابعی (Functional Programming)


Node.js چیست؟

همانطور که گفته شد در ابتدا جاوااسکریپت برای اجرا در محیط مرورگر ایجاد شد ولی اکنون کاربردهایی بیشتری دارد. Node.js یک محیط اجرای زبان جاوااسکریپت است که برپایه موتور جاوااسکریپت گوگل کروم ایجاد شده است.  از Node.js برای ساخت سریعتر و مقیاس پذیرتر اپلیکیشن های تحت شبکه استفاده می شود.
Node.js از یک مدل ورودی و خروجی (I/O) رویداد محور استفاده می کند که مسدود نشونده (Non-Blocking)  است و همین امر باعث کاهش فشار موجود بر روی سرور و افزایش کارآیی می‌شود و این امر برای اجرای برنامه‌های مبتنی بر داده که بصورت بلادرنگ (Real-Time)  بر روی سرورهای توزیع شده استفاده می‌شوند بسیار مناسب است.
در زبان های سمت سرور موجود مانند PHP هر درخواستی (HTTP Request) که به سرور ارسال می شود یک Thread به ازای آن درخواست به وجود می آید. اگر تعداد درخواست های همزمان زیاد باشد ناچار به افزایش منابع مانند حافظه RAM  و افزایش سرور های موجود خواهیم بود که این باعث افزایش هزینه ها خواهد شد. اما Node.js این مشکل را با مدل  I/Oرویداد محور حل کرده است. به این صورت که هر درخواست به صورت یک رویداد اجرا می شود و نه به صورت یک Thread. و کل برنامه فقط روی  یک Thread اجرا می شود. برای درک بهتر به شکل زیر توجه کنید.


Node.js علاوه بر یک محیط اجرا، لایبرری بزرگی از ماژول های مختلف جاوااسکریپتی ارائه می کند که توسعه وب اپلیکیشن ها را سریعتر و آسان تر می کند.


مثالی از Node.js

این وب سرور ساده به تمام درخواست ها با پیام "hello world"  پاسخ می دهد.

var http = require('http');
http.createServer(function(req,res){
  res.writeHead(200,{'Content-Type':'text/plain'});
  res.end("Hello World");
}).listen(1337, "127.0.0.1");
console.log("Server running at http://127.0.0.1:1337/");

برای اجرای این وب سرور کافی است کد بالا را در فایلی با نام دلخواه مثلا example.js قرار دهید و توسط node آن را اجرا کنید:

$ node example.js
Server running at http://127.0.0.1:1337/


فریم ورک های زیادی برای توسعه وب اپلیکیشن با Node.js ساخته شده که فهرست زیر شامل محبوبترین آنهاست.

  • Express.js
  • Koa2
  • Sails.js
  • NestJS
  • LoopBack
  • Meteor.js
  • Derby.js
  • Hapi.js
  • Mean.io
  • Total.js


امیدوارم این مطلب برای شما مفید باشد.