check home phone-call search send

Node.js چیست ؟ و شروع با آن

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

برنامه نویسی Event-Driven یا رویدادمحور به سبک خاصی از برنامه نویسی گفته می‌شود که در آن روند اجرای برنامه توسط رویدادها تعیین می‌شود. Node.js نیز یکی از زبان‌های برنامه‌نویسی است که طبق معماری رویداد محور عمل می‌کند.
همین موضوع باعث شده تا یادگیری این زبان برای مبتدیان سخت باشد ولی سرعت اجرای بالا در node.js محبوبیت زیادی در میان برنامه‌نویسان دارد. در این مطلب برخی از اصول پایه‌ای node.js معرفی شده که شناخت بهتری را به کاربران می‌دهد.

Node.js چیست

معرفی Node.js :

چیزی که در ویکی پدیا نوشته شده :

نود.جی‌اس (به انگلیسی: Node.js) یک چارچوب نرم‌افزاری ورودی/خروجی برای پایهٔ رویداد (به انگلیسی: Event) برای موتور جاوااسکریپت وی۸ (به انگلیسی: V8) برای سکوهای شبه یونیکس است که توسط رایان دال (به انگلیسی: Ryan Dahl) ساخته شده و رشد آن توسط جوینت (به انگلیسی: Joyent) که دال را استخدام کرده‌است حمایت می‌شود.

Node.js به هدف این است که مشابه توئیستد (به انگلیسی: Twisted) برای پایتون، Perl Object Environment برای پرل و EventMachine برای روبی شود. Node، بر خلاف جاوااسکریپت در مرورگر اجرا نمی‌شود بلکه به جاوااسکریپت تحت کارساز مربوط است. Node.js برخی مشخصات CommonJS را پیاده سازی می‌کند. Node.js شامل یک محیط یک محیط REPL (حلقهٔ خواندن-اجرا کردن-چاپ کردن) برای آزمایش گرفتن تعاملی است.

V8 چیست ؟

V8 موتور اجرای جاوا اسکریپت ساخته شده برای گوگل کروم و انتشار یافته است به صورت متن باز که نوشته شده توسط گوگل با زبان C++ و machine code به جای تفسیر آن در زمان واقعی است.
Node.js و با استفاده از libuv که مسئولیت رسیدگی به حوادث ناهمزمان است کار میکند. Libuv یک لایه انتزاعی برای شبکه و سیستم فایل قابلیت در هر دو ویندوز و پازیکس ایجاد میکند – که سیستم های مبتنی بر مانند لینوکس، مک OS X، OSS در بدون توقف و یونیکس.
قابلیت های اصلی Node.js ساکن بودن در یک کتابخانه جاوا اسکریپت است. اتصالات Node.js و، نوشته شده در زبان C ++، این فناوری به یکدیگر و به سیستم عامل ارتباط برقرار کنند.

آموزش nodejsالبته این توضیح در مورد Node.js زیاد دلچسب و خودمونی نیست و یکم سخته فهمیدنش ، پس خودمون باید یه توضیح درست و دقیق در مورد این Node.js بدیم ، اولا بگم node.js هیچ ربطی به مرورگر نداره و کدی که برای node نوشته میشه قرار نیست روی مرورگر اجرا بشه ، بعدش اینم بگم یک زبان جدید هم نیست. برنامه‌های node به زبان جاوا اسکریپت نوشته می شوند . جاوا اسکریپتی که سمت سرور اجرا میشود .

البته از node میشه برای نوشتن برنامه‌های غیر سروری هم استفاده کرد ولی بیشتر کاربردش برای نوشتن برنامه‌های سروری مخصوصا وب سرورهاست. در واقع node خودش وب سرور دارد و از وب سرور فعلی شما (مثلا آپاچی) استفاده نمی کند ، node از طریق خط دستور (command line) اجرا میشود و برنامه شما رو اجرا میکند . حالا برنامه شما میتونه از ماژول وب سرور node استفاده کنه و یک وب سرور راه بندازد .

هدف node ایجاد راهکاری آسان برای نوشتن برنامه‌های مرتبط با شبکه با سرعت، کیفیت و مقیاس پذیری بالاست. پس دلیل اول محبوبیت node رو میشه این جوری نوشت که با node حتی برنامه‌نویس‌های غیرحرفه‌ای هم می‌تونن برنامه‌های حرفه‌ای برای شبکه بنویسند.

اینو به صورت خودمونی نوشتیم حالا شاید باز بعضی از دوستان متوجه این Node.js نشده باشند با یکی از دوستان صحبت کردم و گفتم یه توضیحی دقیق در مورد این Node.js بده دقیق و روان باشد :

Node.js یک پلتفرم کدنویسی سمت سرور است که بر پایه موتور جاوا اسکریپت مرورگر گوگل‌ کروم کدنویسی شده است. این پلتفرم توسط رایان داهل در سال ۲۰۰۹ ایجاد شده است و در حال حاضر آخرین نسخه آن ورژن 0.10.36 می‌باشد.
بر اساس اعلان مستندات رسمی تعریف Node.Js به شکل زیر عنوان می‌شود:
“Node.js یک پلتفرم ایجاد شده بر پایه موتور جاوا اسکریپت گوگل کروم است که باعث سهولت ایجاد و مقیاس‌پذیری برنامه‌های تحت شبکه می‌شود. این پلتفرم از یک مدل I/O رویداد محور استفاده می‌کند که مسدود نشونده (non-blocking) است و همین امر باعث کاهش فشار موجود بر روی سرور و افزایش کارآیی می‌شود و این امر برای اجرای برنامه‌های مبتنی بر داده که بصورت بلادرنگ (Real-Time) بر روی سرورهای نامتمرکز استفاده می‌شوند بسیار مناسب است.”
Node.js یک پلتفرم کد باز برای گسترش برنامه‌های سمت سرور و تحت شبکه می‌باشد. این پلتفرم بر اساس زبان جاوا اسکریپت نوشته شده است و قابلیت پیاده‌سازی بر روی سیستم‌عامل‌های ویندوز، لینوکس و سیستم عامل کامپیوترهای اپل را دارد.

این فریم ورک کتابخانه‌ای عظیم از ماژول‌های مختلف جاوااسکریپت را فراهم می‌کند که سهولت در گسترش وب‌اپلیکیشن ها را تا حد زیادی فراهم می‌آورد.

آموزش node.js

شاید خیلی از دوستان در مورد پلتفرم چیزی ندونند ابتدا پلتفرم رو توضیح دهیم .

پلتفرم چیست ؟ (Platform)

پلتفرم در واقع بستری است که برنامه های نرم افزاری نوشته شده برای یک وسیله در آن قابل اجرا و استفاده است، این بستر هم شامل ملزومات سخت افزاری (مانند نوع سیستم و CPU) و هم شامل ملزومات نرم افزاری (مانند سیستم عامل) است. 
به طور مثال برنامه های کاربردی و بازی هایی که همه روزه با آنها سر و کار داریم بدون وجود دستگاه هایی مانند کامپیوترهای شخصی (PC)، تلفن های همراه، لپ تاپ ها، کنسول های بازی و… عملا قابل استفاده نیستند (سخت افزار) و از طرفی هر برنامه ای در یک سیستم عامل خاص (و یا حتی تحت نسخه خاص) قابل اجرا است (نرم افزار) که در مجموع به آنها پلتفرم می گوییم.
مانند پلتفرم ویندوز xp 64 bit، پلتفرم ویندوز 8، پلتفرم ویندوز موبایل، پلتفرم لینوکس، پلتفرم آندروید، پلتفرم جاوا، پلتفرم PC، پلتفرم XBOX و…، یا در حوزه وب در حال حاضر برنامه های نوشته شده به زبان ASP.NET نیاز به سرور با سیستم عامل به فرض ویندوز 2008 دارند (پلتفرم ویندوز سرور 2008)، با دقت در عبارت متوجه می شویم که یک پلتفرم در واقع معرف ملزومات سخت افزاری (سرور) و همچنین ملزومات نرم افزاری (سیستم عامل ویندوز سرور 2008) مورد نیاز برای اجرای یک برنامه کاربردی (ASP.NET) است.
همچنین ممکن است به نسخه ویژه یک نرم افزار نیز اشاره شده باشد (نسخه 2008)، یا در مورد PHP می توان به پلتفرم لینوکس سرور یا ویندوز سرور اشاره کرد که در واقع به معنی سروری است که روی آن سیستم عامل لینوکس یا ویندوز نصب و فعال باشد و لذا به طور خلاصه می گوییم PHP با پلتفرم لینوکس سرور یا ویندوز سرور قابل اجرا و سازگار است.

پلتفرم (Platform) چیست ؟

البته یک کلمه دیگر هم هست به اسم فریم ورک که با این پلت فرم اشتباه گرفته نشود در مورد فریم ورک هم یه توضیحی دهیم که در این مقاله این موضوعات کامل توضیح داده شود .

فریم ورک چیست ؟ (Framework)

فریم ورک (نرم افزاری) در واقع مجموعه منسجم از کلاس ها و توابع (کتابخانه کلاس ها و توابع) از پیش تعریف شده است که قابلیت های بالقوه گوناگون از یک زبان برنامه نویسی را در خود دارد و بدین ترتیب کاربر نهایی را قادر می سازد که از امکانات یک زبان استفاده کند بدون اینکه درگیر مسائل پیچیده و وقت گیر آن شود.
لذا همان طور که یک کلاس یا تابع با هدف جلوگیری از تکرار مکررات و افزایش سرعت کار، تعریف می شود، فریم ورک از این هم فراتر رفته و علاوه بر افزایش سرعت، مواردی مثل توسعه پذیری و ساده سازی را هم مد نظر دارد، به طور مثال همان طور که می دانیم در وب زبانی داریم به نام جاوا اسکریپت که به خودی خود توانایی های زیادی در زمینه اسکریپت نویسی تحت وب در اختیارمان قرار می دهد.
اما در کنار این توانایی ها محدودیت هایی نیز وجود دارد، به طور مثال همه مرورگرها تمام دستورات جاوا اسکریپت را به یک شکل تفسیر نمی کنند و در برخی موارد هر یک ساز خود را می نوازند، از طرفی مسلما تمام کاربران، برنامه نویس حرفه ای نیستند که با موارد پیچیده سر و کار داشته باشند و به راحتی نیازهایشان را پوشش دهند، اینجا است که فریم ورک هایی مانند جی کئوری (jQuery) وارد عمل می شوند.
در فریم ورکی مانند جی کئوری از قبل کلاس ها و توابعی تعریف شده که با مرورگرهای متفاوت سازگارند و با چند خط دستور ساده نیازهای گوناگونی را پوشش می دهند، کافی است فریم ورک را در صفحه خود وارد کنید تا به قابلیت هایش دسترسی داشته باشید، لذا ملاحظه می کنید که جی کئوری چیزی مجزا از جاوا اسکریپت نیست، بلکه مجموعه ای از دستورات آماده آن است که در موقعیت ها و برای مقاصد مختلف، به آسانی و بدون نوشتن کدهای اصلی قابل استفاده است، البته باید مد نظر داشت که استفاده یا عدم استفاده از فریم ورک می تواند بسته به موقعیت و نیاز، امری صحیح و ضروری یا در عین حال زائد و اشتباه تلقی شود، مخصوصا این امر در وب نمود بارزتری دارد، چرا که سرعت و سبکی از ارکان کلیدی در موفقیت سایت های وب هستند و فریم ورک ها معمولا به این مقوله آسیب می زنند.

فریم ورک چیست ؟

ویژگی‌های Node.JS :

در زیر برخی از مهم‌ترین ویژگی‌های این پلتفرم که باعث می‌شود انتخاب اول برنامه‌نویس‌ها باشد ذکر شده است:

غیرهمزمانی و رویداد محوری : همه‌ی API های کتابخانه Node.js غیرهمزمان می‌باشند که همین امر باعث مسدودناپذیری(non-blocking) آن می‌شود. این بدان معناست که که Node.js در بستر سرور هیچگاه در انتظار بازگشت اطلاعات از APIنمی‌ماند. سرور پس از صدا زدن یک API به سمت API بعدی حرکت می‌کند و برای اطلاع از وضعیت API قبلی از مکانیزم ثبت رویداد استفاده می‌کند.

سرعت بالا : با توجه به این که نود جی اس بر پایه نسخه ۸ موتور جاوا اسکریپت گوگل کروم پیاده‌سازی شده است در اجرای کدها بسیار سریع عمل می‌کند.

تک موضوع اما بسیار مقیاس‌ پدیر : نود جی اس از یک مدل تک موضوعی به همراه حلقه رویددادها استفاده می‌کند. مکانیزم رویداد باعث می‌شود که سرور به صورت مسدود نشونده پاسخ‌ها را ارسال کند و همین امر باعث می‌شود بر خلاف مکانیزم‌های سنتی که سرور را محدود به چند درخواست برای پردازش درخواست‌ها می‌کرد سرور بسیار مقیایس‌پذیر شود.

نود جی اس از یک برنامه تک موضوعی استفاده می‌کند و همان برنامه می‌تواند سرویسی برای تعداد بسیار بیشتری از درخواست ها نسبت به مکانیزم های قدیمی سرور مثل HTTP سرور آپاچی فراهم کند.

عدم وجود بافرینگ : این پلتفرم هیچ داده‌ای را بافر نمی‌کند و داده‌های خروجی را به صورت تکه‌تکه منتشر می‌کند.

چه کسانی از Node.js استفاده می‌کنند؟

چه کسانی از Node.js استفاده می‌کنند؟

در زیر لینکی مربوط به گیت‌هاب وجود دارد که لیستی جامع از پروژه ها، نرم‌افزارها و شرکت‌هایی که از Node.js استفاده می‌کنند را مشخص کرده است. از جمله مهمترین اعضای این لیست می‌توان eBay, General Electric, GoDaddy, Microsoft, PayPal, Uber, Wikipins, Yahoo! و را نام برد.

لیست پروژه ها ، نرم افزارها و شرکت های استفاده کننده از Node.js 

نمودار زیر مهم‌ترین بخش‌های Node.js را به تصویر کشیده است:

مهم‌ترین بخش‌های Node.js

کجا از Node.js استفاده کنیم؟

در زیر برخی از موقعیت‌هایی که نود جی اس خودش را به عنوان یک پلتفرم کارا معرفی می‌کند آمده است:

  • نرم‌افزارهای محدوده I/O (ورودی و خروجی)
  • نرم‌افزارهای جریان داده‌ای (Data Streaing)
  • داده‌های نرم‌افزارهای بلادرنگ (Real-Time)
  • برنامه‌های مبتنی بر JASON API
  • برنامه‌های تک صفحه‌ای

کجا از Node.js استفاده نکنیم؟

  • استفاده از این پلتفرم در برنامه‌های متمرکز بر CPU توصیه نمی‌شود.

node-js چیست

برنامه نویسی غیرهم زمان( Asynchronous Programming) :

Node.js از معماری ماژول محور برای تولید اپلیکیشن های پیچیده استفاده می‌کند. هر عملکرد و تابعی در Node.js غیر همزمان است. در I/O ناهمگام، هیچ پروسه‌ای منتظر به پایان رسیدن پروسه‌های دیگر نمی‌ماند. بنابراین هر thread که در روند فعلی برنامه متوقف شود، در پس زمینه‌ی آن اجرا خواهد شد. این مهمترین ویژگی است که باید در مورد node.js  بدانید.
 به عنوان مثال زمانی که می‌خواهید فایلی را از میان فایل‌های سیستمی بخوانید،  باید یک تابع callback مشخص کنید که وقتی عمل خواندن به اتمام رسید، اجرا شود.

در Node.js انجام هر کاری به عهده شماست!

Node.js تنها یک محیط است و شما موظف هستید تمامی موارد را خودتان ذکر کنید.  همین موضوع باعث می‌شود تا کار با این محیط برای کاربران جدید دشوار و خسته کننده به نظر برسد. در ادامه  کدهای Node.js برای یک برنامه‌ی بسیار ساده را می‌بینید:

var i, a, b, c, max;

max = 1000000000;

var d = Date.now();

for (i = 0; i < max; i++) {
    a = 1234 + 5678 + i;
    b = 1234 * 5678 + i;
    c = 1234 / 2 + i;
}

console.log(Date.now() - d);

و معادل آن در PHP:

$a = null;
$b = null;
$c = null;
$i = null;
$max = 1000000000;
 
$start = microtime(true);
 
for ($i = 0; $i < $max; $i++) {
    $a = 1234 + 5678 + $i;
    $b = 1234 * 5678 + $i;
    $c = 1234 / 2 + $i;
}
 
var_dump(microtime(true) - $start);

جدول زیر این دو زبان را  از نظر زمان پاسخ‌دهی مقایسه می‌کند:

معرفی Node.js

در تکرارهای پایین، PHP سریع‌تر عمل می‌کند اما با تکرارهای بالا به این نتیجه می‌رسیم که PHP 93% کندتر از Node.js است.

ماژول‌ها :

Node.js از معماری ماژول برای ساخت برنامه‌ها استفاده می‌کند. ماژول‌ها همانند کتابخانه‌ها در زبان C و واحدها در زبان پاسکال هستند. هر ماژول شامل مجموعه ای از توابع مربوط به موضوع اصلی ماژول است.  به عنوان مثال ماژول http شامل توابع خاصی برای HTTP است. به منظور تسهیل دسترسی به فایل‌های سیستمی، ایجاد سرورهای HTTP و TCP/UDP و اجرای سایر توابع مفید، تعدادی ماژول‌ اصلی در node.js فراهم شده است.
با نوشتن تابع require() ماژول مورد نظر خود را فراخوانی می‌کنیم.
 مانند مثال زیر:

var http = require('http');

در کد بالا تابع  require() یک مرجع از ماژول http را در یک متغیرhttp  ذخیره می‌کند. با پاس دادن نام ماژول به تابع require() باعث می‌شود Node درون پوشه‌ی node_modules برنامه ما را جست‌وجو کند تا آن را پیدا کند. در صورتی که ماژول مورد نظر پیدا نشد، node  حافظه ماژول‌های سراسری را جستجو می‌کند.
می‌توانید یک فایل واقعی را با کمک  کد زیر مشخص کنید:

var myModule = require('./myModule.js');

ماژول‌ها تکه کدهای محصور شده هستد. اغلب کد درون یک ماژول خصوصی است به این معنی که توابع و متغیرهای درون آن تنها از داخل ماژول قابل دسترسی هستند. ماژول زیر را به عنوان مثال بررسی می‌کنیم:

var PI = Math.PI;

exports.area = function (r) {
  return PI * r * r;
};

exports.circumference = function (r) {
  return 2 * PI * r;
};

توسط این کد یک متغیر pi ایجاد می‌کنیم که فقط داخل همین ماژول دیده می‌شود و خارج از ماژول غیرقابل دسترسی است. در صورتیکه دو تابع موجود کنار شیء exports از خارج ماژول هم قابل دسترسی هستند. در واقع می‌توان گفت pi کاملا محافظت شده است.

نصب node.js :

به منظور نصب node.js روی سیستم عامل Windows یا MacOS به سایت nodejs.org مراجعه کنید و در صورتی که از سیستم عامل لینوکس استفاده می‌‌کنید با وارد کردن کد زیر در ترمینال این برنامه را نصب کنید:

sudo apt-get update
sudo apt-get install node

یا:

sudo aptitude update
sudo aptitude install node

به دلیل وجود Node.js در منابع sid، ممکن است لازم باشد که آن‌ها را به لیست منابع‌تان اضافه کنید:

sudo echo deb http://ftp.us.debian.org/debian/ sid main > /etc/apt/sources.list.

اما مراقب نصب بسته‌های sid در سیستم‌های قدیمی‌تر باشید. زیرا ممکن است به سیستم صدمه بزند. برای جلوگیری از این امر بعد از اتمام نصب node فایل /etc/apt/sources.list.d/sid.list را پاک کنید.

نصب ماژول‌های جدید :

Node.js دارای یک سیستم مدیریت بسته به نام Node Package Manager (NPM) است که به طور خودکار همراه با node.js نصب می‌شود. NPM  برای نصب ماژول‌های جدید مورد استفاده قرار می‌گیرد. برای نصب یک ماژول ابتدا باید در قسمت command line  به پوشه مورد نظر خود رفته و دستور زیر را اجرا کنید:

npm install module_name

ایجاد برنامه‌ی معروف the hello world :

در اولین برنامه‌ی node.js  ای که می‌نویسیم،  پیغام ‘Hello World!’ برای کنسول نمایش داده می‌شود. برای ظاهر شدن این پیغام ابتدا باید یک فایل به نام hello.js ایجاد کرده و کد زیر را وارد نمایید:

console.log('Hello World!');

حال نوبت به اجرای صفحه می‌رسد. ترمینال را باز می‌کنیم در قسمت command line به پوشه‌ای که hello.js  در آن قرار دارد می‌رویم و دستور زیر را اجرا می‌کنیم:

node hello.js

حالا می‌توانید پیغام ‘Hello World!’ را مشاهده کنید.

سرور HTTP :

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

// Include http module.
var http = require("http");

// Create the server. Function passed as parameter is called on every request made.
// request variable holds all request parameters
// response variable allows you to do anything with response sent to the client.
http.createServer(function (request, response) {
	// Attach listener on end event.
	// This event is called when client sent all data and is waiting for response.
	request.on("end", function () {
		// Write headers to the response.
		// 200 is HTTP status code (this one means success)
		// Second parameter holds header fields in object
		// We are sending plain text, so Content-Type should be text/plain
		response.writeHead(200, {
			'Content-Type': 'text/plain'
		});
		// Send data and end response.
		response.end('Hello HTTP!');
	});
// Listen on the 8080 port.
}).listen(8080);

با استفاده از تابع response.write() می‌توانید اطلاعات بیشتری به کاربر بفرستید. البته باید این تابع را قبل از تابع response.end() فراخوانی کنید. این کد را به عنوان http.js ذخیره کرده و آن را در کنسول وارد کنید:

node http.js

با رفتن به آدرس http://localhost:8080 می‌توانید متن “Hello HTTP!” را در صفحه مشاهده کنید.

به کار بردن پارامترهای URL :

همانطور که قبلا ذکر شد در Node انجام هرکاری به عهده شماست.
کد زیر رادنبال کنید:

// Include http module, 
var http = require("http"), 
// And url module, which is very helpful in parsing request parameters. 
	url = require("url"); 

// Create the server. 
http.createServer(function (request, response) { 
	// Attach listener on end event. 
	request.on('end', function () { 
		// Parse the request for arguments and store them in _get variable. 
		// This function parses the url from request and returns object representation. 
		var _get = url.parse(request.url, true).query; 
		// Write headers to the response. 
		response.writeHead(200, { 
			'Content-Type': 'text/plain' 
		}); 
		// Send data and end response. 
		response.end('Here is your data: ' + _get['data']); 
	}); 
// Listen on the 8080 port. 
}).listen(8080);

در کد داده شده تابع parse() از ماژول url، درخواست‌های URL را به یک شیء تبدیل می‌کند. url یکی از ماژول های اصلی node  است.

خواندن و نوشتن فایل‌ها :

برای مدیریت فایل‌ها در node، از ماژول fs که یکی از ماژول‌های اصلی  node است استفاده می‌کنیم. با استفاده از توابع fs.readFile() و fs.writeFile() قادر به خواندن و نوشتن فایل‌ها خواهیم بود.
در ادامه مثالی از این توابع را مشاهده می‌کنید:

// include http module,
var http = require("http"),
// And mysql module you've just installed.
	fs = require("fs");

// Create the http server.
http.createServer(function (request, response) {
	// Attach listener on end event.
	request.on("end", function () {
		// Read the file.
		fs.readFile("test.txt", 'utf-8', function (error, data) {
			// Write headers.
			response.writeHead(200, {
				'Content-Type': 'text/plain'
			});
			// Increment the number obtained from file.
			data = parseInt(data) + 1;
			// Write incremented number to file.
			fs.writeFile('test.txt', data);
			// End response with some nice message.
			response.end('This page was refreshed ' + data + ' times!');
		});
	});
// Listen on the 8080 port.
}).listen(8080);

هربار که سرور یک درخواست دریافت می‌کند، اسکریپت یک شماره از فایل را می‌خواند،  سپس شماره‌ را یکی افزایش داده و در فایل می‌نویسد. تابع fs.readFile() سه آرگومان نام فایل، کدگذاری مورد انتظار و تابع   callback  را پذیراست. تابع fs.writeFile() نیز نام فایل و اطلاعات را به عنوان آرگومان می‌پذیرد.

دسترسی به پایگاه‌های داده MySQL :

بیشتر تکنولوژی‌های سمت سرور قبلی دارای ابزار ارتباطی و پایگاه داده‌ی داخلی برای خود هستند. اما برای داشتن پایگاه داده در node.js  باید کتابخانه مربوطه را نصب کنید. کنسول خود را باز کنید و به جایی که صفحات را ذخیره کرده‌اید بروید و دستور زیر را اجرا کنید:

npm install mysql@2.0.0-alpha2

با زدن این دستور ماژول مورد نظر دانلود و نصب می‌شود. مثال زیر کاربرد این دستور را نشان می‌دهد:

// include http module, 
var http = require('http'), 
// And mysql module you've just installed. 
	mysql = require("mysql"); 
	 
// Create the connection. 
// Data is default to new mysql installation and should be changed according to your configuration. 
var connection = mysql.createConnection(
 { 
	user: "root", 
	password: "", 
	database: "db_name"
}); 

// Create the http server. 
http.createServer(function (request, response) { 
	// Attach listener on end event. 
	request.on('end', function () { 
		// Query the database. 
		connection.query('SELECT * FROM your_table;', function (error, rows, fields) { 
			response.writeHead(200, { 
				'Content-Type': 'x-application/json' 
			}); 
			// Send data as JSON string. 
			// Rows variable holds the result of the query. 
			response.end(JSON.stringify(rows)); 
		}); 
	}); 
// Listen on the 8080 port. 
}).listen(8080);

در این کد با وارد کردن رشته query و تابع callback، به راحتی می‌توانید از پایگاه داده پرس و جو کنید. در یک برنامه واقعی  ابتدا باید وجود پیغام‌های خطا را چک کنید.  سپس  پاسخ‌های مناسب را  بسته به مثبت یا منفی بودن جواب کوئری ارسال کنید. پارامتر rows دربردارنده نتیجه کوئری است.  با استفاده از تابع JSON.stringify()  می‌توانید اطلاعات  موجود در rows را به فرمت  JSON تبدیل کنید.
این فایل را به عنوان mysql.js ذخیره کرده و اجرا نمایید.  در آدرس http://localhost:8080 فایل‌ها با فرمت   JSON برایتان نمایش داده خواهد شد.

 در این مقاله سعی کردیم توضیحات کاملی در مورد Node.js ارائه دهیم چند تعریف مختلف رو برای این پلتفرم بیان کردیم که شما بیشتر آشنا شوید بعد توضیحات مختصری در مورد شروع کار با Node.js ارائه دادیم . 

نظر شما در مورد پلتفرم Node.js چیه ؟

Avatar
پشتیبان سورس ایران 2180 مطلب منتشر شده

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

دیدگاه کاربران

تعداد دیدگاه های کاربران : 5 دیدگاه
Avatar
ریحانه
پاسخ دهید

خیلی خیلی ممنون. وقتی میگن خلاصه و مفید به این میگن 🙂

Avatar
محمد
پاسخ دهید

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

Avatar
الهام
پاسخ دهید

خیلی خوب بود
لطفا ادامه دهید


شما با موفقیت در خبرنامه ما عضو شدید