آشنایی با فریمورک 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
});
توسعهدهندگان دربارهی ما چه میگویند
تجربه کار باliara_cloud@امروز خیلی خوب بود. یکی از سرویس هام رو منتقل کردم روش و راضیم. انقد سریع و جذاب کارم راه افتادم اصن باورم نمیشد! برعکس سرویس های PaaS دیگه با اون همه پیچیدگیشون. دمتون گرم
...
MohammadReza
keikaavousi
بعد از بسته شدن @fandoghpaas و ناراحتی همهمون از اینکه یه سرویس خوب و صادق نمیتونه از پس هزینهها بر بیاد، سرویسم رو منتقل کردم به پاس لیارا (https://liara.ir @liara_cloud) . تجربه راحت و خوب. تفاوتهایی داشت که کمی کار میخواست ولی تا الان کاملا راضی.
jadi
jadi
یه خسته نباشید باید به تصمیمliara_cloud@بگم،
بعد از چندین روز سرکله زدن با سرویس های مشابه بالاخره تصمیم گرفتم لیارا رو امتحان کنم و باور نمیشه ۱۰ دقیقه بیشتر وقت نبرد،
دمتون گرم.
Arch
EbadiDev
واسه سرویس PaaS با اختلاف لیارا بهترین رابط کاربری داره و یکی از مزیتهای سرویس دیتابیسشون اینه که خودشون به صورت دورهای بکآپ میگیرن.
...
Ali Najafi
me_ali_najafi
یکی از کارهای خوبی که جدیداً میکنم اینه که یه دیتابیس روی لیارا میسازم و به پروژه وصل میکنم اینطوری هم خونه و هم محل کار دیتابیس بروز رو دارم و راحت میتونم ادامه بدم کار روliara_cloud@
Navid
1navid
عاشقliara_cloud@شدم درسته در حد AWS نیست ولی خب تجربه خوبی واسه پروژه های داخل ایران ارائه میده، میتونم رو CD هم اجراش کنم
Amir H Shekari
vanenshi