خواندن فایل HTML و ارسال پاسخ با استفاده از Node.js

شنبه 11 اردیبهشت 1395

در این مقاله از Node.js برای خواندن فایل HTML و ارسال پاسخ به آن استفاده میشود. با عملیاتهای File IO به سادگی میتوانید ،فایل HTML در Node.js را بخوانید و با استفاده از ماژول های ساده، یک پاسخHTML به کلاینت بفرستید.

 خواندن فایل HTML و ارسال پاسخ با استفاده از Node.js

 در برنامه های وب مرسوم ، یک وب سرور (به عنوان مثال IIS)  شامل ساختار دایرکتوری برای مدیریت صفحات وب (HTML، ASP، ASPX، و غیره) است.  وقتی که یک درخواست در صفحه دریافت شود، وب سرور پردازش درخواست را بر اساس تنظیمات سمت سرور  انجام میدهد  و در صورت تطبیق، پاسخ HTML را برمی گرداند. این تنظیمات شامل اطلاعات برای گسترش صفحه و زمان اجرا مرتبط با آن است. دلیل این است که environment میزبان نیاز به اطلاعات کامل در  مورد URL  صفحه ، و سپس بر طبق آن  صفحه را بر روی سرور  پیدا میکند  .

در صورتی که به یادگیری اصولی و حرفه ای این تکنولوژی قدرتمند علاقمند هستید میتوانید دوره کامل و جامع آموزش Node Js موجود در سایت تاپ لرن را مشاهده کنید .

در Node.js  می توانیم این عملیات را  با استفاده از ماژول فایل (FS) و ماژول HTTP انجام دهیم.

   Node.js ابتدا URL را اسکن میکند به این صورت که فایل متنی مربوطه را میخواند و براساس آن به پیام درخواست شده پاسخ میدهد. در این مقاله، یک پروژه Node.js و با یک فایل HTML ایجاد کرده. کد پس از آن URL درخواست را می خواند و بر اساس آن، پاسخ ارسال خواهد شد.

پیش نیازهای پیاده سازی.

برای اجرای مراحل زیر نیاز به منابع به شرح زیر است:

Visual Studio Code یا Visual Studio 2013/2015

ابزار های Node برایVisual Studio

پیاده سازی

 در اینجا با استفاده از Visual Studio Code  پیاده سازی را انجام میدهیم .این IDE رایگان برای ایجاد و اشکال زدایی وب سایت ها و برنامه های کاربردی ابر مدرن در ویندوز، مک OSX و پلت فرم لینوکس بکار میرود

مرحله 1: یک پوشه بر روی هارد (به عنوان مثال E: \)  با نام VSCoderespondHtml ایجاد میکنیم. در این فولدر یک پوشه جدید به نام Scripts ایجاد کرده که برای ذخیره فایل های اسکریپت  نرم افزار مورد استفاده قرار میگیرد.    Visual Studio  Code. را باز کرده و   پوشه  VSCoderespondHtml را  با استفاده از File> Open Folder  انتخاب کنید. هنگامی که پوشه باز می شود، گزینه ای برای ایجاد یک فایل جدید در سمت راست نمایش داده خواهد شد ، همانطور که در تصویر زیر نشان داده شده است. پوشه Scripts  را انتخاب کنید وبر روی آیکون فایل جدید ، کلیک کنید. یک کادر خالی که برای ایجاد یک فایل نام جدید app.js ارائه میشود.

new-nodejs-file

مرحله 2: در پوشه VSCoderespondHtml، یک پوشه به نام AppPages اضافه کرده. در این پوشه یک فایل HTML جدید با نام MyPage.html. اضافه میکنیم.

<!DOCTYPE html>
 
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title>The Page Returned by Making Http Call to Node.js</title>
    <style type="text/css">
        table, td {
          border:double;
        }
    </style>
</head>
<body>
    <h1>Product Information Page</h1>
    <table>
        <tr>
            <td>Product Id:</td>
            <td>
                <input type="text" />
            </td>
        </tr>
        <tr>
            <td>Product Name:</td>
            <td>
                <input type="text" />
            </td>
        </tr>
        <tr>
            <td></td>
            <td>
                <input type="button"  value="Save"/>
            </td>
        </tr>
    </table>
 
 
</body>
</html>

این یک فایل HTML ساده که برای ارسال درخواست  است.

مرحله 3 : app.js را باز کرده و کد زیر را در آن وارد کنید.

//1.
var http = require('http');
var fs = require('fs');
//2.
var server = http.createServer(function (req, resp) {
    //3.
    if (req.url === "/create") {
        fs.readFile("AppPages/MyPage.html", function (error, pgResp) {
            if (error) {
                resp.writeHead(404);
                resp.write('Contents you are looking are Not Found');
            } else {
                resp.writeHead(200, { 'Content-Type': 'text/html' });
                resp.write(pgResp);
            }
             
            resp.end();
        });
    } else {
        //4.
        resp.writeHead(200, { 'Content-Type': 'text/html' });
        resp.write('<h1>Product Manaager</h1><br /><br />To create product please enter: ' + req.url);
        resp.end();
    }
});
//5.
server.listen(5050);
 
console.log('Server Started listening on 5050');

کد بالا  عملیاتهای زیر  را انجام میدهد.( توجه : کد هایی که در بالا با کامنت شماره گذاری شده  ، در پایین با همان شماره توضیح داده شده اند. )

1. از آنجا که نیاز به ایجاد وب سرور برای http messaging است، نیاز به ماژول HTTP داریم . با خواندن فایل HTML با استفاده از فایل IO، نیاز به بارگذاری ماژول FS. داریم.

 2. یک سرور HTTP با callback برای پردازش درخواست(request processing)، ایجاد میکنیم.

3. . اگر URL   شامل  مقدار‘create/’ باشد، فایل MyPage.html را میخواند. اگر فایل  با موفقیت خوانده نشد، پاسخ با وضعیت HTTP و یافت نشده(Not Found) برای پیام درخواست ارسال می شود. اگر فایل خوانده شود، پس از آن پاسخ HTML ارسال خواهد شد.

4.
اگر URL با ‘/create’  مطابقت نداشت ،  پیام HTML  پیش فرضبرای درخواست فرستاده  میشود.

5.
سرور شروع به گوش دادن به پورت 5050 میکند .

مرحله 4: در app.js راست کلیک کنید و  Command Prompt را انتخاب کنید. با این کار command prompt  جایی که نرم افزار اجرا شده را  نشان می دهد

nodejs-command-prompt.

در این  Command دستور زیر  را وارد کنید

Node app

نتیجه در زیر نمایش داده خواهد شد

cmd-exe

مرحله 5:  مرورگر را باز کنید و  آدرس زیر را وارد کنید

http://localhost:5050

نتیجه در زیر نمایش داده خواهد شد

product-manager

این پاسخ را به طور پیش فرض دریافت خواهیم کرد. اما ما نیاز به  دریافت یک پاسخ HTML ) HTML response)، داریم ، برای همین URL   را مانند زیر تغییر میدهیم.

http://localhost:5050/create

در حال حاضر  صفحه html   را با موفقیت دریافت کرده ایم

روش 2 : ایجاد پروژه با استفاده از Visual Studio 2013

مرحله 1: ابتدا یک پروزه ایجاد کرده و نامی برای آن انتخاب کنید.

مرحله 2 : روی پروژه راست کلیک کرده و یک پوشه به نام AppPages اضافه کرده. در این پوشه یک فایل HTML جدید با نام MyPage.html. اضافه میکنیم.

 کد زیر را در آن وارد میکنیم.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    
    <meta charset="utf-8" />
    <title>The Page Returned by Making Http Call to Node.js</title>
    <script src="/Script/app.js"> </script>
    <style type="text/css">
        table, td {
            border: double;
        }
       
    </style>
</head>
<  body>
    <h1>صفحه اطلاعات صفحه</h1>
    <table>
        <tr>
            <td>شناسه:</td>
            <td>
                <input type="text" />
            </td>
        </tr>
        <tr>
            <td>نام محصول:</td>
            <td>
                <input type="text" />
            </td>
        </tr>
        <tr>
            <td></td>
            <td>
                <input type="button"  value="ذخیره"/>
            </td>
        </tr>
    </table>
</body>
</html>

مرحله 3 : app.js را باز کرده و کد زیر را در آن وارد کنید.

//1.
var http = require('http');
var fs = require('fs');
//2.
var server = http.createServer(function (req, resp) {
    //3.
    if (req.url === "/create") {
        fs.readFile("AppPages/MyPage.html", function (error, pgResp) {
            if (error) {
                resp.writeHead(404);
                resp.write('Contents you are looking are Not Found');
            } else {
                resp.writeHead(200, { 'Content-Type': 'text/html' });
                resp.write(pgResp);
            }

            resp.end();
        });
    } else {
        //4.
        resp.writeHead(200, { 'Content-Type': 'text/html' });
        resp.write('<h1>Product Manaager</h1><br /><br />To create product please enter: ' + req.url);
        resp.end();
    }
});
//5.
server.listen(5050);

console.log('Server Started listening on 5050');

کامنتهای کد درمرحله 3 بالا  توضیح داده شده است.

و در پایان  با فشردن کلید F5 ،برنامه را اجرا کنید.

 نتیجه گیری :با عملیاتهای  File IO به سادگی میتوانید  ،فایل HTML در Node.js را بخوانید  و با استفاده از ماژول های ساده، یک پاسخHTML به کلاینت بفرستید.

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • NodeJs
  • 3k بازدید
  • 2 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید