خواندن فایل HTML و ارسال پاسخ با استفاده از Node.js
شنبه 11 اردیبهشت 1395در این مقاله از Node.js برای خواندن فایل HTML و ارسال پاسخ به آن استفاده میشود. با عملیاتهای File IO به سادگی میتوانید ،فایل HTML در Node.js را بخوانید و با استفاده از ماژول های ساده، یک پاسخHTML به کلاینت بفرستید.
در برنامه های وب مرسوم ، یک وب سرور (به عنوان مثال 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 ارائه میشود.
مرحله 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 جایی که نرم افزار اجرا شده را نشان می دهد
.
در این Command دستور زیر را وارد کنید
Node app
نتیجه در زیر نمایش داده خواهد شد
مرحله 5: مرورگر را باز کنید و آدرس زیر را وارد کنید
http://localhost:5050
نتیجه در زیر نمایش داده خواهد شد
این پاسخ را به طور پیش فرض دریافت خواهیم کرد. اما ما نیاز به دریافت یک پاسخ 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 به کلاینت بفرستید.
- NodeJs
- 3k بازدید
- 2 تشکر