استارت‌آپ و کارآفرینی

آشنایی اولیه با Node.js (بخش دوم)

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

همانگونه که می‌دانید جاوا اسکریپت یک زبان Event-based هست پس هر عملیاتی در سرور انجام شود باعث بوجود آمدن یک رویداد Non-blocking هست. هر Connection و یا ارتباطی باعث بوجود آمدن یک رویداد می‌شود، هر اطلاعاتی که از طریق آپلود فرم‌ها در حال أمدن باشد یک رویداد  data-received  بوجود می‌آید هم چنین درخواست اطلاعات از دیتابیس نیز باعث می‌شود رویداد جدیدی بوجود آید. به زبان ساده‌تر سایت  Node  بدون این که این رویداد ها را block کند می‌تواند از هزاران کاربر همزمان پشتیبانی کند. Node.js نقش یک سرور را بازی میکند (مثلا Apache) و کدهای اپلیکشن را اجرا میکند.

در Node.js هم مثل Apache ماژول‌ها یا بهتر بگیم کتاب‌‌خانه‌هایی وجود دارند که به اپلیکیشن ما مشخصات و ویژگی‌های خاصی اضافه می‌کنند، مانند : Data Store‌ها ، پشتیبانی از فایل های Zip ، ورود کاربران از طریق اکانت‌های شبکه‌های اجتماعی و درگاه‌های خرید. البته باید خاطر نشان کرد که امکاناتی که برای Node در دسترس است کمتر از PHP هست اما همه ما می‌دانیم که Node درحال پیشرفت و یک زبان ۶ ساله است و مجموعه بزرگی از برنامه نویسان، کامیونیتی Node را تشکیل می‌دهند و جای نگرانی نیست.

یکی از مزیت‌هایی که همیشه باید در مورد Node به یاد داشته باشیم این هست که : همه چیز در بکگراند در حال اجراست، در اکثر زبان‌های اسکریپتی در طرف سرور، برنامه ما منتظر یک Function می‌ماند تا Function بعدی اجرا شود اما در Node این شما هستید که Function ها را طوری تعریف می‌کنید که Function‌های دیگر هم در حال اجرا باشند. این مبحث یکی از بهترین مزیت های Node است و در عین حال مبحثی پیچیده نیز هست. در مقالات بعدی در این مورد بیشتر توضیح میدهیم.

در نمونه کد ساده HTTP زیر مثال ساده ای آماده کرده ایم :

var http = require("http"); 
http.createServer(function (request, response) {
 response.writeHead(200, {
 'Content-Type': 'text/plain'
 });
 response.write('Hello World!');
 response.end();
}).listen(8080);
console.log("Server running!");

خوب برای این که مفهوم ساده‌تری از کد بالا را درک کنیم بیاید آن را کمی بیشتر بررسی کنیم. ما ماژول HTTP را در پروژه قرار داده ایم سپس یک سرور درست کردیم و یک Function را به عنوان پارمتر استفاده کرده‌ایم. این Function برای هر بار Connection ما فراخوانده می‌شود و دو argument با اسم های request ، که پارامترهای درخواستی را از کاربر می‌گیرد و آن یکی هم response هست که اطلاعاتی را ما به سمت کاربر می‌فرستیم. (اگر تا اینجای کار خسته شده اید طبیعی است)

در گام بعدی ما شئ یا همان (Object) ، ریسپانس را استفاده میکنیم که کد ۲۰۰ را با پیامی Hello World را برگرداند. سپس به سرور می‌گوییم که حواسش به پورت ۸۰۸۰ باشد که اگر درخواستی دریافت کرد سریعا پیامی بدهد که ما بدانیم این برنامه در حال اجراست. اگر می‌خواهید کد بالا را خودتان امتحان کنید آنرا کپی کرده و به اسم test.js ذخیره کنید و سپس Node را نصب کنید و در Command Line خود، کد زیر را اجرا کنید. (در پست های بعدی با نحوه نصب Node بر روی سه سیستم عامل مختلف دیگر بیشتر آشنا خواهید شد)

node test.js

 

6 نظرات
  1. احسان می گوید

    بسیار عالی بود
    خسته نباشید
    اگر امکانش هست سرعت آموزش رو قدری بالاتر ببرید

    1. امین ضیا می گوید

      ممنون و مرسی احسان جان، حتمن چشم. مطالب به صورت پیش نویس آمادس فقط باید سردبیر اجازه انتشار بده.

  2. علی ذوقی می گوید

    خیلی خوب بود
    ممنون

    1. امین ضیا می گوید

      فدات شم علی جان. لطف داری.

  3. محمد می گوید

    دوستان اگر خواستید یک نگاهی به این مطلب داشته باشید (در رابطه با کتاب فارسی “آشنایی با node.js”):
    http://dotjs.parsiblog.com/Posts/1

  4. شهاب می گوید

    سلام
    می تونیم با node و php به صورت ترکیبی تو یک پروژه کار کنیم؟
    این کارا رو میشه تو یه سرور انجام داد؟
    میشه همزمان با یه دیتابیس کار کنیم؟
    برا قسمت چت یک سایت که با php نوشته شده روش پیشنهادیتون چیه؟
    از نظر تهیه سرور node.js و کانفیگش تو ایران چجوری اقدام کنم؟
    ببخشید سوالات زیاد شدن !

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.