Node.js یک پلتفرم بر اساس موتور جاوا اسکریپت گوگل V8 است. Node.js برای ساخت سریعتر و مقیاس پذیرتر اپلیکیشن های تحت شبکه می باشد.
Node.js یک کتابخانه از جاوا اسکریپت نیست بلکه یک پلتفرم است که جاوااسکریپت را سمت سرور اجرا می کند.
اپلیکیشن های نود بر روی هاست موجود شما نمی توانند اجرا شوند.
شما می توانید از VPS و سرروهای مشخص برای نصب نود و اجرای برنامه خود استفاده کنید.
راحت ترین روش برای گسترش اپلیکیشن Node استفاده از سرویس های مقیاس پذیر مانند Heroku که کاملا رایگان هستند، می باشد.
در زبان های سمت سرور موجود مانند java ,PHP هر کاربری که به سرور متصل می شود یک thread به ازای آن کاربر به وجود می آید.اگر تعداد اتصال های همزمان افزایش یابد ناچار به افزایش منابع مانند حافظه RAM و افزایش سرور های موجود خواهیم بود که این به نوبه خود سبب افزایش هزینه ها خواهد شد.
Node.js این مشکل را به وسیله نحوه تغییر اتصال به سرور حل می کند. در این روش هر اتصال به صورت یک رویداد اجرا می شود و نه به صورت یک thread.
Node.js یک پلتفرم سمت سرور است که بر مبنای موتور جاوا اسکریپتی گوگل موسوم به V8 ایجاد شده و به شما امکان میدهد که با کمک javascript برای سمت سرور برنامه بنویسید و فقط یک thread ایجاد کنید و تمام درخواستها را به صورت رویداد ( event ) مدیریت کنید درست مثل مدیریت event ها در جاوا اسکریپت.
Node.js از معماری ناهمگام (asynchronous) استفاده می کند که جاوا اسکریپت آن را هندل می کند. به این معناست که سرور به رویدادها و ارسال رویدادها مثل یک دیتابیس واکنش نشان می دهد. این سبک از برنامه نویسی بسیار متفاوت از سبک synchronous است، و استفاده از آن در دیگر زبان ها می تواند دشوار باشد.
یک module ، کدهای مربوط به یک unit of code را کپسوله می کند. هنگام ایجاد یک module ، تمام توابع مربوطه داخل یک فایل قرار میگیرند. Node module ها تنها در محدوده (scope) خود اجرا میشوند در نتیجه با سایر Moduleها تداخل نخواهند داشت. Node امکان دسترسی به برخی از قابلیت های عمومی در برنامه را فراهم میکند تا امکان همکاری module آسان تر شود. دو آیتم اولیه که ما باید روی آن کار کنیم require و export است.
شما به moduleهای دیگری نیاز دارید که در کد خود، از آنها استفاده کنید و Module شما مواردی که نیاز است به صورت عمومی در برنامه وجود داشته باشد را به خارج از خود نمی فرستد( نه داده ای را میگیرد و نه داده ای را به بیرون می فرستد.) بیایید با یک مثال پیش برویم، کد زیر را بعنوان test.js ذخیره کنید.
exports.name = function() {
console.log('My name is Iman Madaeni');
};
می توانید با استفاده از کد زیر از یک فایل دیگر فراخوانی کنید:
var test= require('./test.js');
test.name(); // 'My name is Iman Madaeni
شما میتوانید هم از exports و هم از module.exports برای وارد کردن کد در برنامه خود استفاده کنید مانند:
var mycode = require('./path/to/mycode');
در موارد معمولی شما (به عنوان مثال در کد ExpressJ) propertyها را در شی که فرستاده میشود تنظیم میکنید که این شی در یک فایل با پسوند.js قرار دارد و درنهایت آن را با استفاده از متد require() به قسمتی که میخواهیم اضافه میکنیم.
بنابراین در مثال شمارنده ساده، شما باید کدهای زیر را داشته باشید:
// counter.js
var count = 1;
exports.increment = function() {
count++;
};
exports.getCount = function() {
return count;
};
// then in your application (any other .js file):
var counting = require('./counter.js');
console.log(counting.getCount()); // 1
counting.increment();
console.log(counting.getCount()); // 2
در شرایط ساده، شما میتوانید با فایلهای مورد نیاز خود مانند یک تابع رفتار کنید که تنها یک شی را به عنوان خروجی باز میگرداند و می توانید زمانیکه این شی را بعنوان شی فرستنده(export) تنظیم کردید propertyها (strings, numbers, arrays, functions و هر چیز دیگر...) را به این شی اضافه کنید.
در برخی مواقع نیاز داریم خروجی متد require() به جای یک شی ، یک تابع باشد. به این ترتیب می توانیم در موارد بعدی آن را فراخوانی کنیم. در این مورد نیاز داریم که از module.exports هم استفاده کنیم، مانند:
در فایل hello.js داریم
module.exports = exports = function() {
console.log("Hello World!");
};
و همین طور در فایل app.js داریم:
var Hello = require('./hello.js');
Hello(); // "Hello World!"
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید