معرفی NodeJs

node1  

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

معرفی

برای شروع کار با Node.js ابتدا باید تفاوت بین Node.js و محیط‌های اسکریپت نویسی سمت سرور دیگری مثل PHP، پایتون و رابی را بدانید.

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

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

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

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

node2

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

node3

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

node19

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

ماژول‌ها

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

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

node5

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

node6

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

نصب

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

node7

 یا:

node8

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

node9

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

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

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

node10

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

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

node11

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

node12

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

سرور HTTP

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

node13

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

node14

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

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

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

node15

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

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

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

node16

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

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

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

node17

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

node18

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

منبع: tutsplus
 


آخرین بروزرسانی
۱۴ اسفند ۱۴۰۲ 
تعداد کلیک
۴,۲۱۲

فهرست نظرها و ارسال نظر جدید

نام را وارد کنید
ایمیل را وارد کنید
تعداد کاراکتر باقیمانده: 1000
نظر خود را وارد کنید