ماهو الNode.js

AbdullaScriptمنذ 8 سنوات

ماهو الNode.js؟

كثير ماسمع المطورين بهذا الإطار في الفتره الاخيره حيث حصد هذا الاطار على اهتمام الكثير من المبرمجين في مجال تطوير الويب  لما يقدمه من امور خرافيه نوعا ما و مستوى جديد كليا في هذا العالم.

 

ال Node.js هو اطار عمل برمج العديد من وحداته Modules الأساسية بلغه الJavaScript تم تطويره  من قبل مبرمج امريكي يعيش في المانيا  يدعى ريان دال و السوبر فايز جوينت، و كان اول إطلاق لهذا الباترن في عام 2009.

 

من المعروف بأن لغة الجافا سكربت هي لغة الClient Side، بمعنى ذلك انها لغة تعمل بجانب المستخدم وليس في السيرفر ولكن بعد تطوير ريان دال لهذا الباترن (النود جي اس) الذي يعمل بمحرك قوقل V8 والعديد من الlibraries الاخرى اصبح الامر اكثر تعقيدا من ذي قبل و تحول هذا الإطار بالعمل في السيرفر كمثل الPHP، بمعنى اخر، الNode.js اصبح إطار عمل Functionality حركية و ديناميكية بشكل تام بإمكانك التعامل مع قواعد البيانات وما الى ذلك من خلاله بكل سهوله.

 

يستخدم إطار الNode.js لبرمجة تطبيقات الويب بالتحديد و المواقع بشكل عام، يعتمد في عمله على الevents او باللغة العربية تدعى ( المناسبات )  لذلك اي شي يحصل على السيرفر يقوم بإطلاق non-blocking event كل كونكشن جديد => fires event ، معلومات مرسله من فورم => fires event ، طلب بيانات من قاعدة البيانات من قبل المستخدم => fires event.


عمليا، هذا يعني ان الموقع او التطبيق لا يمكن ان يتاخر بتنفيذ مناسبة event حتى لو دخله او استخدمه آلاف المستخدمين في نفس الوقت لان إطار ال Node.js برمج ليكون Non-Blocking بذلك الأوامر يتم تنفيذها بالتوازي بخلاف الPHP التي هي لغة block until completion اي ان الاوامر لايتم تنفيذها الا بتنفيذ ما سبق من اوامر وهذا هو الفرق الاكبر مابين PHP & Node.js وهذا هو سبب تميز إطار عمل النود وسبب السرعه الرهيبه في تنفيذ الاوامر.

 

nodejs-vs-php-asynchronous-vs-synchronous.jpg

 

لتثبيت الإطار، قم بزيارة الموقع ادناه، يدعم الانظمة جميعها Windows, OSX & Linux


https://nodejs.org/en/download/

 

امثلة: بعد التحميل والتثبيت، في هذا القسم سيتم وضع عدة امثلة لطريقة بدائية Hello World ومن ابسط الامثلة هو

1- انشأ ملف بإسم hello.js و اكتب فيه التالي


var http = require('http');
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World!');
}).listen(3000, '127.0.0.1');

 

2- افتح الterminal او cmd على الوندوز واكتب


node hello.js


بذلك، اصبح التطبيق يعمل على port 3000 كما هو محدد.

3- افتح اي متصفح تستخدمه وادخل على الرابط


http://127.0.0.1:3000

 

مثال آخر على كيفية التعامل مع Bootstrap & Node.js

صفحة الHTML


<!DOCTYPE html>
<html lang="en">
   <head>
      <meta charset="utf-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <title>Node.js Bootstrap 101</title>
      <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
      <script src="/bootstrap/js/bootstrap.min.js"></script>
   </head>
   <body>
      <nav class="navbar navbar-default">
         <div class="container">
            <div class="navbar-header">
               <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
               <span class="sr-only">Toggle navigation</span>
               <span class="icon-bar"></span>
               <span class="icon-bar"></span>
               <span class="icon-bar"></span>
               </button>
               <a class="navbar-brand" href="#">Node.js</a>
            </div>
            <div id="navbar" class="collapse navbar-collapse">
               <ul class="nav navbar-nav">
                  <li class="active"><a href="#">Home</a></li>
                  <li><a href="about">About</a></li>
                  <li><a href="contact">Contact</a></li>
               </ul>
            </div>
            <!--/.nav-collapse -->
         </div>
      </nav>
      <div class="container">
         <div class="col-md-12">
            <h1>Home Page</h1>
            <h3>Bootstrap & NodeJS</h3>
         </div>
      </div>
   </body>
</html>

 

صفحة الAbout


<!DOCTYPE html>
<html lang="en">
   <head>
      <meta charset="utf-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <title>Node.js Bootstrap 101</title>
      <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
      <script src="/bootstrap/js/bootstrap.min.js"></script>
   </head>
   <body>
      <nav class="navbar navbar-default">
         <div class="container">
            <div class="navbar-header">
               <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
               <span class="sr-only">Toggle navigation</span>
               <span class="icon-bar"></span>
               <span class="icon-bar"></span>
               <span class="icon-bar"></span>
               </button>
               <a class="navbar-brand" href="#">Node.js</a>
            </div>
            <div id="navbar" class="collapse navbar-collapse">
               <ul class="nav navbar-nav">
                  <li><a href="home">Home</a></li>
                  <li class="active"><a href="#">About</a></li>
                  <li><a href="contact">Contact</a></li>
               </ul>
            </div>
            <!--/.nav-collapse -->
         </div>
      </nav>
      <div class="container">
         <div class="col-md-12">
            <h1>ِAbout Page</h1>
            <h3>Bootstrap & NodeJS</h3>
         </div>
      </div>
   </body>
</html>

 

صفحة الContact


<!DOCTYPE html>
<html lang="en">
   <head>
      <meta charset="utf-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <title>Node.js Bootstrap 101</title>
      <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
      <script src="/bootstrap/js/bootstrap.min.js"></script>
   </head>
   <body>
      <nav class="navbar navbar-default">
         <div class="container">
            <div class="navbar-header">
               <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
               <span class="sr-only">Toggle navigation</span>
               <span class="icon-bar"></span>
               <span class="icon-bar"></span>
               <span class="icon-bar"></span>
               </button>
               <a class="navbar-brand" href="#">Node.js</a>
            </div>
            <div id="navbar" class="collapse navbar-collapse">
               <ul class="nav navbar-nav">
                  <li><a href="home">Home</a></li>
                  <li><a href="about">About</a></li>
                  <li class="active"><a href="#">Contact</a></li>
               </ul>
            </div>
            <!--/.nav-collapse -->
         </div>
      </nav>
      <div class="container">
         <div class="col-md-12">
            <h1>Contact Page</h1>
            <h3>Bootstrap & NodeJS</h3>
         </div>
      </div>
   </body>
</html>

 

قم بتثبيت Dependency Express


npm install express --save

 

ملف الserver.js


var express = require("express");
var app	= express();
app.use('/bootstrap',  express.static(__dirname + '/bootstrap'));


app.get('/',function(req,res){
      res.sendFile(__dirname + "/home.html");
});

app.get('/home',function(req,res){
      res.sendFile(__dirname + "/home.html");
});

app.get('/about',function(req,res){
      res.sendFile(__dirname + "/about.html");
});

app.get('/contact',function(req,res){
      res.sendFile(__dirname + "/contact.html");
});

app.listen(3000,function(){
  console.log("Working On Port 3000");
});

 

تأكد من وضعك ملفات الBootstrap في المسار التالي ( في مجلد اسمه bootstrap بجانب ملف السيرفر)


<link rel="stylesheet" href="/bootstrap/css/bootstrap.min.css">
<script src="/bootstrap/js/bootstrap.min.js"></script>

 

خطوة اخير, قم بتشغيل السيرفر من خلال الأمر


node server.js

 

افتح المتصفح على الرابط التالي


http://127.0.0.1:3000

 

وهذا هي اولى الدروس في الNode.js ولاستخدامات اكثر، قم بزيارة رابط Github ادناه للحصول على tools مفتوحه المصدر.


https://github.com/developerbh

 

إسأل ماشئت وسأحاول الأجابة ان شاء الله.

كلمات دليلية:
5
إعجاب
32242
مشاهدات
0
مشاركة
0
متابع
متميز
محتوى رهيب

التعليقات (2)

Alhadhrami:

أقترح عليك الالتزام بمصطلحات موحّدة وصحيحة.

مصطلحات موحّدة مثلاً: مرّة تقول على الـNode.js باترن ومرّة تقول عليه إطار. لازم توحّد المصطلح.

مصطلحات صحيحة مثلاً: النود في الحقيقة بيئة runtime وليس إطار أو باترن. وأيضاّ مثلاً، الـevents برأيي تترجم إلى "أحداث" وليس "مناسبات."

مقال جميل، أعجبني الشرح بشكل عام.

بالتوفيق.

tarek:

مقال مميز فيه كل ما تريد معرفته عن بيئة node.js وكيف تعمل على السيرفر وما يميزها عن غيرها من منصات برمجة الويب

https://torok-web.blogspot.com/2017/09/nodejs.html

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !