آشنایی با فریمورک Express
۲۹ شهریور ۱۳۹۹
یکی از فناوریهایی که امروزه بسیار مورد توجه توسعهدهندگان فرانتاند قرار گرفته، Node.js است زیرا این رانتایم با ویژگیهای انعطافپذیری بالا، قدرتمند و آسان همراه است و توسعه سمت سرور با زبان جاوااسکریپت را برای برنامهنویسان فراهم کرده اما درنهایت توسعهدهندگان Node.js به دنبال چیزی بودند که قابلیت توسعه سریع را برایشان فراهم کند و بدینترتیب Express.js بهوجود آمد.
عنوانهایی که در ادامه این مقاله دنبال میکنیم، عبارتند از:
- مقدمهای بر Express.js
- ویژگیهای Express.js
- شروع کار با Express.js
- Routing و استفاده از متدهای GET، POST، PUT و DELETE
مقدمهای بر Express.js
Express.js یک وب فریمورک است که با Node.js ساخته شده و به مدیریت آسان جریانهای داده بین سرور و Routeها در برنامههای سمت سرور کمک میکند. این وب فریمورک تحت لایسنس MIT (Massachusetts Institute of Technology) به عنوان یک نرمافزار متنباز منتشر شده و استفاده از آن برای عموم کاملا رایگان است. علاوهبراینها Express.js بسیار سبک است و حداکثر انعطافپذیری را به همراه بسیاری از ویژگیهای جذاب فراهم میکند، به همین دلیل وب فریمورک Express.js بهعنوان سرور فریمورک استاندارد Node.js شناخته میشود.
Express.js با فراهم کردن عملکردهای مورد نیاز بکاند، افق دید توسعهدهندگان Node.js را گسترش داد و به کمک این فریمورک توسعهدهندگان توانستند برای اولین بار، زبان جاوااسکریپت را در بکاند وب استفاده کنند. Node و Express همدیگر را تکمیل کردند، بدینگونه که Node.js قابلیت توسعه برنامههای سمت سرور را فراهم آورد و Express انتشار آن برنامهها را در وب تسهیل کرد.
ویژگیهای Express.js
برخی از مهمترین ویژگیهای Expres.js:
- توسعه برنامههای وب را سریعتر کرد.
- در ساخت برنامههای موبایل، برنامههای وب تک صفحهای (SPA)، چند صفحهای (MPA) و هیبریدی کمک میکند.
- استفاده از موتورهای قالبسازی مانند Jade و EJS را فراهم کرده است.
- از معماری MVC (Model-View-Controller) پیروی میکند.
- از دیتابیسهای MongoDB، Redis، MySQL پشتیبانی میکند.
- مدیریت خطاها در middleware را فراهم کرده است.
- پیکربندی و سفارشیسازی برنامه را ساده میکند.
تمام ویژگیهای بالا باعث شدند تا در بیشتر برنامههای Node.js شاهد وب فریمورک Express.js باشیم.
شروع کار با Express.js
قبل از شروع کار با Express.js میبایست این وب فریمورک را بر روی سیستم خود نصب کرده و آن را بهعنوان وابستگی در پروژهتان اضاف کنید. با درک اجزای اساسی یک برنامه ساده Express.js کار را شروع میکنیم. با استفاده از کدهای زیر یک سرور Express ساخته میشود و هنگامی که از مرورگر کاربر درخواست GET به سرور فرستاده شود، پیام خوشآمدگویی را به کاربر نشان میدهد.
//Importing express module
const express = require('express')
//Creating an express module object
const app = express()
//Creating Callback function and sending response
app.get('/', (req, res) => res.send('Welcome to Express Demo!!!'))
//Establish the server connection
//PORT ENVIRONMENT VARIABLE
const port = process.env.PORT || 8080;
app.listen(port, () => console.log(`Listenon port ${port}..`));
همانطور که مشاهده میکنید مانند هر فایل جاوااسکریپت دیگر، اولین قدم شروع کدنویسی، افزودن پکیجهای مورد نیاز به پروژه است. از آنجا که مقاله ما درباره Express.js است، ماژول express را به برنامهمان import کردهایم. در مرحله بعد میبایست یک آبجکت از ماژول express بسازید تا بتوانید در برنامهتان از آن آبجکت استفاده کنید. درنهایت باید یک کالبک فانکشن ایجاد کنید تا کاربر بتواند از طریق آدرس http://localhost:8080
به سرور درخواست GET بفرستد. هنگامی که کاربر آدرس را مرورگر خود بازکند با پیام Welcome to Express Demo!!!
مواجه خواهد شد.
در کالبک فانکشن، پارامتر res
از طریق ماژول request
در اختیار ما قرار میگیرد تا دادهها را به صفحه وب ارسال کنیم.
در بخش پایانی این قطعه کد، میبایست پورتی را به سرور خود اختصاص دهید، در این مثال با ایجاد یک environment variable پورت 8080 را به سرور خود اختصاص دادهایم. سرانجام برای اینکه سرور شما در پورتی که برای آن قرار دادهاید به درخواستها گوش دهد باید از متد listen
استفاده کنید.
اینها اساس ساخت یک سرور با Express.js بودند که در ادامه قابلیتهای بیشتری را بررسی خواهیم کرد.
Routing و استفاده از متدهای GET، POST، PUT و DELETE
Routing فرایندی است که در آن رفتار برنامه را نسبت به درخواستهای مختلف تعیین میکنند. در اصل مشخص میکنیم که سرور ما چگونه باید به یک درخواست کاربر مانند درخواستهای route، path یا URI که با متدهای خاص HTTP به سمت سرور فرستاده میشوند، پاسخ دهد.
هر route میتواند چندین handler function داشته باشد. کد زیر سینتکس تعریف Route است.
app.METHOD(PATH, HANDLER)
app
: یک آبجکت از express است که میتواند نام دیگری نیز داشته باشد.METHOD
: یکی از متدهای HTTP در این قسمت قرار میگیرد، برای مثال میتواند GET، POST، PUT یا DELETE باشد.PATH
: هر صفحه وب یک Route خاص دارد که در این قسمت قرار داده میشود.HANDLER
: یک کالبک فانکشن است و هنگامی که کاربر یک Route خاص را با توجه به متدهایی که برایش تعریف کردهایم، درخواست کند این فانکشن اجرا میشود.
در ادامه چهار متد اصلی HTTP را به ترتیب بررسی خواهیم کرد.
- GET
- POST
- PUT
- DELETE
GET
از متد GET برای دریافت دادهها استفاده میشود و هیچ تغییری بر روی دادهها ایجاد نمیکند. یک مثال ساده از متد GET:
app.get('/', (req, res) => {
//method body
});
POST
با استفاده از متد POST میتوانید داده جدیدی ایجاد کنید.
app.post('/api/books', (req, res)=> {
//method body
});
PUT
متد PUT داده موجود را بهروزرسانی یا درصورتی که موجود نباشد، داده جدیدی ایجاد میکند.
app.put('/api/books/:id', (req, res) => {
//method body
});
DELETE
با استفاده از متد DELETE و قرار دادن مسیر یک داده خاص در بخش path
میتوانید داده موجود را حذف کنید.
app.delete('/api/books/:id', (req, res) => {
//method body
});