30 روز با Node - روز یازدهم: فریم ورک Express js در نود جی اس

24 مرداد 1397
express-js-nodejs

Express js چیست؟

اکسپرس‌ جی‌ اس (Express js)، یا بطور ساده، اکسپرس (Express) یک فریم‌ورک انعطاف پذیر وب برای نود جی‌ اس است که مجموعه‌ ای از ویژگی ها همچون APIهای ساده در اختیار قرار می‌دهد تا در ساختن بخش مدیریت (بک-اند یا back-end) در یک وبسایت یا اپلیکین موبایل از آنها استفاده کنیم. اکسپرس متن باز است و درحال حاضر توسط موسسه نود جی‌ اس پشتیبانی می‌شود. اکسپرس (Express js) همچنین میان‌افزارها (middlewares) و تعاریف مسیرنویسی (Routing) پایه را برای ما فراهم می‌سازد.

چرا از فریم‌ورک اکسپرس (Express js) استفاده کنیم؟

  1. روتینگ یا مسیرنویسی را بسیار ساده می‌کند.
  2. به دلیل اینکه برپایه‌ی نود جی‌ اس بنا شده، بسیار سریع است.

پیش‌نیازهای نصب اکسپرس (Express js)

برای نصب اکسپرس (Express js)، باید موارد زیر از قبل نصب شده باشند:
1. نود جی‌ اس: که می توان از ترمینال یا خط فرمان آن را بررسی کرد:
>node -v
v8.5.0

2. مدیر پکیج نود (NPM): که باز هم به کمک دستور زیر در ترمینال یا خط فرمان می‌توان آن را چک کرد:

>npm -v
5.4.2

نصب Express js

به یکی از سه شیوه زیر می‌توان Express js را نصب نمود:

  1. نصب Express js بصورت سراسری (globally): با دستور زیر می‌توان Express js را بصورت سراسری نصب کرد که در اختیار تمام اپلیکیشن‌ها باشد:
>npm install express -g

2. نصب Express js بصورت محلی (locally): دستور زیر را در ترمینال یا خط فرمان وارد کنید تا Express js بصورت محلی و فقط برای اپلیکیشن فعلی نصب شود:

>npm install express 

3. نصب اکسپرس همراه با نشانه‌ی --store: چنانچه نشانه‌ی --store آخر دستور نصب به‌کار ببریم، اکسپرس بصورت یک وابستگی (dependency) در فایل package.json اضافه خواهدشد:

>npm install express --save

ایجاد یک سرور ساده در Express js

خب، بیایید یک سرور ساده در اکسپرس بسازیم که پیام آشنای hello world را به‌عنوان پاسخ به کاربر ارسال می‌کند. به کمک یک ویرایشگر ساده متن، همانند Notepad++ کد زیر را در فایل server.js بنویسید:

var express = require('express')
var app = express()

app.get('/', function (req, res) {
  res.send('Hello World!')
})
app.listen(3000, function () {
  console.log('Server is listening at 3000')
})

اکنون به کمک دستور زیر در ترمینال یا خط فرمان، سرور را بر پا کنید (فقط سطر اول وارد کنید، سطر دوم پاسخ اجرا است):

>node server.js
Server is listening at 3000

اکنون در مرورگر خود آدرس http://localhost:3000 یا http://127.0.0.1:3000 را باز کنید. مطمئنا تعجب خواهید کرد که چگونه به این سادگی یک سرویس دهنده وب راه انداختید، پورت 3000 به آن اختصاص دادید، مسیر تعیین کردید و صفحه وب نوشتید!

نکته: برای خاموش کردن سرور، کلید CTRL+C را در خط فرمانی بزنید یا پنجره خط فرمان/ترمینال را ببندید.

مسیرنویسی (Routing) در Express js

یکی از بزرگترین مزیت‌های استفاده از اکسپرس، این است که مسیر نویسی را بسیار ساده کرده است. به مثال زیر دقت کنید. ببینید چگونه مسیرهایی برای اپلیکیشن وب مشخص می‌کنیم. کدها بسیار واضح نوشته شده اند. این قطعه‌ کد را در فایلی به نام routes.js ذخیره کنید:
var express = require('express')
var app = express()

app.get('/', function (req, res) {
  res.send('Simple Example of routes!');
})

app.get('/signup', function (req, res) {
  res.send('This is demo route for sign up');
})

app.get('/signin', function (req, res) {
  res.send('This is demo route for sign in');
})

app.get('/signin/dashboard', function (req, res) {
  res.send('This is demo route for user who signed in and now reaches their dashboard');
})


app.listen(3000, function () {
  console.log('Server is listening at 3000')
})

اکنون همانند مثال قبل، به کمک دستور زیر سرور را بر پا کنید. دقت کنید سطر اول را وارد کنید، سطر دوم پاسخ سیستم است:

>node routes.js
Server is listening at 3000

به همین سادگی، ما چهار مسیر، معادل چهار صفحه وب ایجاد کردیم. مرورگرتان را اجرا کنید:

  • برای باز کردن صفحه‌ی پیش‌فرض وب، با مسیر پیش‌فرض، نشانی http://127.0.0.1:3000 یا http://localhost:3000 را وارد کنید.
  • برای مسیر دموی signup، نشانی http://127.0.0.1:3000/signup یا http://localhost:3000/signup را وارد کنید.
  • برای مسیر دموی signin، نشانی http://127.0.0.1:3000/signin یا http://localhost:3000/signin را وارد کنید.
  • برای مسیر دموی dashboard، نشانی http://127.0.0.1:3000/signin/dashboard یا http://localhost:3000/signin/dashboard را وارد کنید.

ساده و جادویی بود، نه؟

تقاضای پارامتردار در Express js

در اکسپرس به تقاضایی که پارامتر دارد چگونه رسیدگی می‌شود؟ اجازه دهید با مثالی پاسخ دهیم:

فرض کنید ماژولی به نام signup داریم که درآن سه پارامتر از سمت کاربر می‌گیرد، نام، ایمیل و رمز عبور. (درحالت عادی، داده‌ها در بانک اطلاعاتی ذخیره می‌شوند که در درس‌های بعدی به آن می‌پردازیم، ولی درحال حاضر فقط برروی درک تقاضای پارامتردار تمرکز کنید)

var express = require('express');
var fs = require('fs')

var app = express()

app.get('/', function (req, res) {
  res.send('Simple Example of routes!');
}) 

app.get('/signup', function(req,res){
	// this is how we will receive params from front end 

  var name = req.query.name; 
  var email = req.query.email;
  var password = req.query.password;
  //For demo purpose
  console.log(name + '' + email + ' ' + password);

  /**
   * Store this in a database and perform further processing
   */
    res.send("In signup module")
});

app.listen(3000, function () {
  console.log('Server is listening at 3000')
})

برای بررسی کد بالا، دستور زیر را در خط فرمان یا ترمینال وارد کنید:

>node routes-with-params.js
Server is listening at 3000

اکنون مرورگز خود را باز کنید و نشانی http://127.0.0.1:3000 یا http://localhost:3000 را برای مشاهده صفحه پیش فرض یا مسیر پیش فرض بزنید. صفحه ای خواهید دید که حاوی پیام Simple Example of routes! است.

مسیر signup نیز داریم که با نشانی http://127.0.0.1:3000/signup یا http://localhost:3000:3000  قابل دسترسی و مشاهده است و پیام In signup module را در خود نشان می‌دهد.

نکته:  مسیرها در این قطعه کد به کمک متد GET نوشته شده‌اند. پس برای ارسال پارامتر به همراه مسیر signup، می‌توانید بصورت معمول زیر آنها ارسال کنید:

http://localhost:3000/signup?name=ِDaryush&email=d.meskin@yahoo.com&password=1234456

در خط فرمان یا ترمینال هم پارامترهایی که ارسال می‌کنید، توسط سرور به شما نشان داده می‌شود.

خلاصه

امروز، در روز یازدهم از دوره 30 روزه‌ی نود جی‌ اس، Express js را شناختیم و نصب و استفاده کردیم. همچنین یک سرور ساده توسط آن برپا کردیم، کمی درمورد مسیریابی گفتیم و چگونگی رسیدگی به پارامترها را نیز نشان دادیم.

نویسنده شوید
دیدگاه‌های شما (3 دیدگاه)

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

ابوالفضل
09 آبان 1400
سلام با تشکر از مقاله خوبتون من خودم react js کار کردم و کمی با node js آشنایی دارم میخواستم بدونم که برای کار با express نیازی هست node js رو کامل یاد بگیریم یا نه؟

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

علیرضا
21 خرداد 1400
عالی... فقط همین !

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

ارشیا
07 دی 1398
عالی بود ممنون

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.