دنیای جاوا اسکریپت روز به روز بزرگتر میشود. اگر از برنامه نویسان قدیمی باشید، یادتان هست که اوایل جاوا اسکریپت فقط برای پویاسازی صفحات وب استفاده میشد. اما امروزه تقریبا هر کاری میتوان با آن انجام دهید. یکی از کارهای مهمی که جاوااسکریپت انجام میدهد، برنامه نویسی سمت سرور است. به کمک محیط اجرایی Node.js و فریم ورکهایی مثل Express.js میتوانید با جاوااسکریپت سرویسهای تحت وب بسازید. در این مطلب بررسی میکنیم که فریم ورک Express.js چیست و یک Rest api ساده با آن خواهیم ساخت.
Express.js یک وب فریم ورک برای محیط اجرایی Node.js است (پیشنهاد میکنیم به صفحه آموزش node js سر بزنید)که در نوامبر سال 2010 به طور رسمی معرفی و رونمایی شد. اکسپرس جی اس مثل بیشتر فریمورکهای جاوااسکریپت به صورت آزاد (Free) و متن باز (Open Source) ارائه شده است. Express.js از پروانه (لایسنس) MIT استفاده میکند. به کمک این فریم ورک میتوانید وب اپلیکیشن یا APIهای گوناگون طراحی کنید.
نویسنده و طراح اصلی Express.js گفته که ایده اصلی ساخت این فریم ورک را از Sinatra الهام گرفته است. Sinatra یک کتابخانه وب نوشته شده به زبان روبی است که میتواند جایگزینی برای چهارچوبهایی مثل Ruby On Rails یا Nitro باشد. به این ترتیب اکسپرس جی اس هم مثل سینتارا بسیار سبک بوده و امکانات آن در قالب پلاگینها ارائه میشود.
Express.js کامپوننت سمت بک اند در MEAN به حساب میآید. MEAN مخفف چهار سرویس و پلتفرم مختلف است که در پایین مشاهده میکنید:
کار با اکسپرس جی اس آسان است و میتوانید به سرعت با این فریم ورک ارتباط برقرار کنید، پس یکی از مهمترین مزایای آن یادگیری راحت این فریم ورک است. همینطور اکسپرس جی اس به راحتی پیکربندی شده و به خوبی قابل شخصی سازی (Customize) است. هنگامی که با Node ادغام میشود، به شما کمک میکند با سرعت و دقت بالا برنامههای تحت وب قدرتمند بسازید.
Express.js به راحتی با تمپلیت انجینهای مختلف مثل Pug ادغام میشود. در ارتباط با دیتابیسهای مختلف مثل MySQL یا MongoDB بسیار خوب عمل کرده و در ساخت Rest api سرور کمک بسیار زیادی به شما میکند. اکسپرس جی اس به آسانی به شما اجازه میدهد Routeهای برنامه خود را با متدهای HTTP تعریف کنید.
از آنجا که اکسپرس جی اس یک فریم ورک مینیمال و بسیار انعطافپذیر است، کسب و کارها و برندهای زیادی به آن اعتماد کرده و بخشهای مختلفی از محصولات خود را با اکسپرس جی اس طراحی کردهاند. بعضی از این برندها عبارتند از توییتر، IBM، پی پال، Uber و تعداد زیادی برند دیگر که با این فریم ورک کار میکنند.
همانطور که میدانید NPM مخفف Node Package Manager بوده و یک مدیر بسته برای زبان برنامه نویسی جاوااسکرپت به حساب میآید. برای نصب Express.js قبل از هر چیز مطمئن شوید که NPM را نصب دارید. بعد دستور زیر را محیط خط فرمان وارد کنید تا اکسپرس جی اس شروع به نصب کند:
npm install express
در مرحله اول ترمینال را باز کرده و یک پوشه جدید با نام web-server ایجاد کنید:
mkdir web-server
بعد وارد پوشه پروژه شده و فایل package.json را به کمک دستور npm init بسازید:
cd web-server
npm init
سپس نوبت نصب Express است که کمی قبل گفتیم چطور انجام میشود:
npm install express --save
در قدم بعدی یک پوشه با نام server.js در ریشه اصلی پروژه ایجاد کنید:
touch server.js
این فایل همانجایی است که ما پیکربندی تمام مسیرها (Routes) را انجام خواهیم داد.
دستور touch در ترمینال لینوکس برای ساخت یک فایل جدید به کار میرود.
کدهای زیر را به فایل server.js که کمی قبلتر ساخته بودید اضافه کنید:
const express = require('express');
var app = express();
app.get('/', (req, res) => {
res.send('Hello Express')
});
app.listen(process.env.PORT || 3000)
لازم است که کمی درباره کدهای بالا صحبت کنیم:
وقتی دستور NPM Install را بزنید و وابستگیهای لارم را از طریق ترمینال نصب کنید، آنها به فایل Package.json اضافه خواهند شد:
{
“name”: “web-server”,
“version”: “0.0.0”,
“description”: “Sample Code”,
“main”: “index.js”,
“author”: {
“name”: “Linda Haviv”,
“email”: “”
},
"dependencies": {
"express": "4.15.3",
"jade": "*",
"underscore": "^1.7.0"
}
}
حالا برای اجرای برنامه خود نیاز به نصب Nodemon داریم. در ترمینال دستورات زیر را تایپ کنید تا این ابزار نصب شود:
npm install -g nodemon
nodemon server.js
در مرحله آخر وارد مرورگر خود شده و به صورت لوکال وارد پورت 3000 شوید:
https://localhost:3000/
کار تمام شد. خسته نباشید. حالا باید روی صفحه نمایش خود پیغام “Hello Express” را مشاهده کنید.
یعنی کار js اصلا روی سرور نباشه و سمت مرورگر بصورت spa و mpa با حفظ ارسال کلمات کلیدی به گوگل عمل کنه؟
به صورت حرفه ای خیر اما برای سایتهای خیلی خیلی سبک ممکن هست شدنی باشه.