متخصص شدن در Express.js – بخش اول

متخصص شدن در Express.js – بخش اول

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

 

یا اینکه اگر Node برای شما تازگی دارد، از ادامه خواندن این پست منصرف شوید و سری به پست راهنمای Node.js برای تازه کارها و بایگانی نود.جی.اس بیندازید.

 

این پست قرار است یکی از فریم ورک های محبوب برای Node.js را معرفی کند و آن Express.js است. این پست قصد دارد مفاهیم عمدتا پایه ای Express 4 را به شما معرفی کند.

 

آموزش express.js و node.js

 

اگر به سایت Express.js مراجعه کنید با شعار “Fast, unopinionated, minimalist web framework for Node.js” روبرو می شوید، همانطور که می بینید عنوان کاملا واضح است و نیازی به تعریف آن نیست. این فریم ورک محبوب کمک می کند برنامه های وب بهتر و سریعتر درست کنیم. توسعه دهندگانی که با Sinatra در زبان Ruby کار کرده باشند، با این مفاهیم آشنا خواهند بود.

 

فریم ورک Express.js

 

Express طوری ساخت شده است که بخش های دشوار ساخت برنامه را پنهان کند و به توسعه دهندگان این را می گوید: “نگران نباشید، نیازی به درک این بخش ندارید، و خود وظیفه آن را به عهده می گیرم“. در کل، Express در برنامه شما سحر و جادو می کند. (البته جادوی خوب)  😈

 

برنامه های ساخته شده با express.js

 

شاید بهتر باشد نگاهی به کاتالوگ اکسپرس بیندازید تا متعجب شوید که چه سایت های معروفی مثل Myspace و Koding و بسیاری دیگر از فریم ورک اکسپرس استفاده می کنند.  😯

 

اما تمام جادو ها قیمتی دارند، شاید عملکرد داخلی Express را درک نکنیم. این درست مثل رانندگی ماشین است، من می توانم بدون اینکه از دانش عملکرد آن باخبر باشم به رانندگی ادامه بدهم، اما خوبه که دانش آن را نیز داشته باشم. اما چه می شود اگر ماشین خراب شود؟

 

پس اجازه دهید Express را از پایه همراه با Node درک کنیم.  💡

 

 لایه زیرین: HTTP سرور نود.جی.اس

 

Node شامل یک ماژول HTTP است که ساخت وب سرور را ساده می کند. این چیزی است به آن اشاره شد:

 

 

اگر تکه کد فوق را در فایلی دلخواه به نام server.js قرار دهیم و آن را با دستور node server.js اجرا کنیم، همانطور که می دانیم پاسخ Hello World به درخواست (request) ما داده می شود و اگر با مرورگر خود به آدرس http://localhost:3000 مراجعه کنید همان پاسخ را دریافت می کنید. شما می توانید به آدرس localhost:3000/users یا localhost:3000/?id=2 مراجعه کنید و مثل قبل، پیام Hello World را دریافت کنید. این درست مثل حرف زدن با دیواره آجریه.

 

اجازه دهید کدها فوق را به بخش های کوچکتر تقسیم کنیم تا درک آنها بهتر شود.

 

همانطور که مشخص است در خط اول ماژول http قرار داده شده در Node را در برنامه فراخوانی کرده ایم. این باعث می شود این ماژول دوست داشتنی در داخل متغیری به نام http قرار گیرد. برای درک بهتر تابع require می توانید تابع require را مطالعه کنید.

 

در ادامه ما سرور خود را داخل متغیری به نام server با استفاده از http.createServer گذاشته ایم. وظیفه این تابع این است که به درخواست ها گوش می دهد. ما به این موضوع در ادامه خواهیم پرداخت چون بسیار مهم است.

 

آخرین کاری که ما انجام داده ایم این است که به سرور دستور داده ایم که به هر درخواستی که از پورت 3000 می آید گوش بدهد و آنگاه آن را با دستور console.log در کنسول نمایش دهد.

 

خیلی خوب، برگردیم به تابع کنترولر request که بسیار هم مهم است.

 

کنترل درخواست

 

قبل از اینکه این بخش را شروع کنیم، لازم است بگویم که یک دسته عملیات HTTP وجود دارد که فکر نمی کنم مربوط به آموزش Express باشد. اگر در اینباره کنجکاو هستید می توانید نگاهی به مستندات HTTP بیندازید.

 

هرگاه درخواست (request) جدیدی را برای سرور ایجاد می کنیم، تابع کنترولر request فراخوانی می شود. اگر باور ندارید می توانید یک console.log در داخل آن قرار دهید. همانطور که مشاهده می کنید، با هر با رفرش کردن صفحه، پیام را در کنسول چاپ می شود.

 

request، یک درخواستی است که از سوی کلاینت می آید. در بیشتر برنامه ها، از نام کوتاه شده req استفاده می شود که معادل request می باشد. اجازه دهید به آن نگاهی بیندازیم، برای این کار تابع کنترولر درخواست کد فوق را بصورت زیر تغییر می دهیم:

 

 

سرور خود را بارگذاری مجدد کنید و دوباره به آدرس http://localhost:3000 مراجعه کنید.

 

آموزش Node.js

 

همانطور که در خروجی فوق مشاهده می کنید ما آدرس movies را درخواست کرده ایم. این یک درخواست GET می باشد و همچنین می توانید با استفاده از user-agent مرورگر کاربر را شناسایی کنید و بسیاری ویژگی دیگر. اگر به آدرس دیگری مثل localhost:3000/songs مراجعه کنید خواهید دید که درخواست URL تغییر می کند. اگر با مرورگر دیگر مشاهده کنید، user-agent نیز تغییر می کند. و همچنین اگر یک درخواست POST ارسال کنید، method نیز تغییر می کند.

 

response نیز درست مثل بحث request می باشد و از کلمه کوتاه شده res برای response استفاده می کند. با هر response، شما همه پاسخ های ارسال شده را دریافت می کنید و آنگاه response.end را فراخوانی می کنید. در نهایت باید این متد را فراخوانی کنید چون مستندات Node این را می گویند. در واقع این متد مسئول ارسال داده است. برای آزمایش می توانید سرور را بدون این متد اجرا کنید تا مشاهده کنید سرور تا بی نهایت اجرا می شود و متوقف نمی شود.  😐

 

قبل از اینکه داده ها را ارسال کنیم، نیاز است که تعدادی سرآیند (header) به برنامه اضافه کنید. در مثال ما، این کار را انجام داده ایم:

 

 

این خط دو چیز را انجام می دهد. ابتدا کد وضعیت یعنی 200 را ارسال می کند. به این معنی که همه چیز خوب است. سپس مجموعه ای از از هدرها را اضافه می کند. در این مورد، ما دستور داده ایم که ما در حال ارسال یک محتوای ساده هستیم. ما می توانیم چیزهای مثل JSON و HTML را نیز ارسال کنیم.

 

آیا مفاهیم بیشتر از Express را می خواهی؟ باشه در قسمت بعد به درخواستت رسیدگی می شه.   😆