হ্যাঁ, এটি একটি সার্ভার।
একটি নোড.জেএস ওয়েব অ্যাপ্লিকেশন হ'ল এনগিনেক্স বা অ্যাপাচি-এর মতো একটি পূর্ণাঙ্গ ওয়েব সার্ভার।
আপনি অন্য কোনও ওয়েব সার্ভার ব্যবহার না করেই আপনার নোড.জেএস অ্যাপ্লিকেশনটি পরিবেশন করতে পারেন। আপনার কোডটি কেবল এতে পরিবর্তন করুন:
app = express();
http.createServer(app).listen(80);
আসলে, কিছু প্রকল্প অন্যান্য সার্ভারের (অ্যাপাচি সহ) জন্য ফ্রন্ট-এন্ড লোড ব্যালেন্সার হিসাবে নোড.জেস ব্যবহার করে।
মনে রাখবেন যে নোড.জেএস এটি করার জন্য একমাত্র উন্নয়ন স্ট্যাক নয়। গো, জাভা এবং সুইফটে ওয়েব ডেভলপমেন্ট ফ্রেমওয়ার্কগুলিও এটি করে।
কেন?
শুরুতে ছিল সিজিআই। সিজিআই ভাল ছিল এবং ঠিক আছে। অ্যাপাচি একটি অনুরোধ পাবেন, ইউআরএলকে একটি সিজিআই অ্যাপ্লিকেশন চালানো দরকার, সেই সিজিআই অ্যাপ্লিকেশনটি কার্যকর করতে হবে এবং পরিবেশের ভেরিয়েবল হিসাবে ডেটা পাস করতে হবে, স্টাডাউট পড়বে এবং ডেটাটি ব্রাউজারে ফিরিয়ে দিতে হবে।
সমস্যাটি হ'ল এটি ধীর। এটি ঠিক আছে যখন সিজিআই অ্যাপ্লিকেশনটি একটি ছোট স্ট্যাটিক্যালি সংকলিত সি প্রোগ্রাম ছিল তবে ছোট স্ট্যাটিক্যালি সংকলিত সি প্রোগ্রামগুলির একটি গ্রুপ বজায় রাখা কঠিন হয়ে পড়ে। তাই লোকেরা স্ক্রিপ্টিং ভাষায় লেখা শুরু করে। তারপরে এটি বজায় রাখা শক্ত হয়ে যায় এবং লোকেরা অবজেক্ট অরিয়েন্টেড এমভিসি ফ্রেমওয়ার্কগুলি বিকাশ করতে শুরু করে। এখন আমাদের সমস্যা হতে শুরু করে - প্রতিটি অনুরোধে অবশ্যই এই সমস্ত শ্রেণিগুলি সঙ্কলন করতে হবে এবং কেবলমাত্র এইচটিএমএল পরিবেশন করার জন্য এই সমস্ত অবজেক্ট তৈরি করতে হবে, এমনকি পরিবেশন করার জন্য গতিশীল কিছুই নেই (কারণ ফ্রেমওয়ার্কটি পরিবেশন করার জন্য গতিশীল কিছুই নেই)।
আমাদের যদি প্রতিটি অনুরোধে এই সমস্ত বস্তু তৈরি করার প্রয়োজন না হয় তবে কী হবে?
এটাই লোকেরা ভেবেছিল। এবং সেই সমস্যাটি সমাধান করার চেষ্টা থেকে শুরু করে বেশ কয়েকটি কৌশল এসেছে। প্রাচীনতমগুলির মধ্যে একটি হ'ল mod_php
অ্যাপাচি-র মতো ওয়েব সার্ভারগুলিতে সরাসরি দোভাষীদের এম্বেড করা । সংকলিত ক্লাস এবং অবজেক্টগুলিকে গ্লোবাল ভেরিয়েবলে সংরক্ষণ করা যায় এবং তাই ক্যাশে করা যায়। আর একটি কৌশল ছিল প্রাক সংকলন করা। এবং অন্য কৌশলটি ছিল একটি নিয়মিত সার্ভার প্রক্রিয়া হিসাবে অ্যাপ্লিকেশনটি চালানো এবং ফাস্টসিজিআইয়ের মতো কাস্টম প্রোটোকল ব্যবহার করে ওয়েব সার্ভারের সাথে কথা বলা।
তারপরে কিছু বিকাশকারীরা তাদের অ্যাপ-> সার্ভার প্রোটোকল হিসাবে কেবল HTTP ব্যবহার শুরু করে started কার্যত, অ্যাপ্লিকেশনটি একটি এইচটিটিপি সার্ভারও। এর সুবিধাটি হ'ল আপনার কোনও নতুন, সম্ভবত বগি, সম্ভবত পরীক্ষিত প্রোটোকল প্রয়োগ করার দরকার নেই এবং আপনি সরাসরি কোনও ওয়েব ব্রাউজার (বা সাধারণভাবে curl
) ব্যবহার করে আপনার অ্যাপটি ডিবাগ করতে পারেন । এবং আপনার অ্যাপ্লিকেশনটিকে সমর্থন করার জন্য আপনার কোনও পরিবর্তিত ওয়েব সার্ভারের দরকার নেই, কেবল এমন কোনও ওয়েব সার্ভার যা বিপরীত প্রক্সি বা পুনঃনির্দেশগুলি করতে পারে।
কেন অ্যাপাচি / এনগিনেক্স ব্যবহার করবেন?
আপনি যখন কোনও নোড.জেএস অ্যাপ্লিকেশন পরিবেশন করেন তখন নোট করুন যে আপনি নিজের ওয়েব সার্ভারের লেখক। আপনার অ্যাপ্লিকেশনটিতে যে কোনও সম্ভাব্য বাগটি হ'ল ইন্টারনেটে সরাসরি ব্যবহারযোগ্য বাগ। কিছু লোক এটিকে (ন্যায়সঙ্গতভাবে) স্বাচ্ছন্দ্য দেয় না।
আপনার নোড.জেএস অ্যাপ্লিকেশনের সামনে অ্যাপাচি বা এনগিনেক্সের একটি স্তর যুক্ত করার অর্থ আপনার অ্যাপ্লিকেশনটির ইন্টারফেস হিসাবে লাইভ ইন্টারনেটে একটি যুদ্ধ-পরীক্ষিত, সুরক্ষামূলকভাবে শক্ত সফ্টওয়্যার রয়েছে। এটি একটি ক্ষুদ্র বিড়ম্বন যুক্ত করে (বিপরীত প্রক্সিং) তবে বেশিরভাগই এটির পক্ষে মূল্যবান বলে মনে করে।
এটি নোড.জেএস এর প্রথম দিনগুলিতে স্ট্যান্ডার্ড পরামর্শ হিসাবে ব্যবহৃত হত তবে এই দিনগুলিতে এমন সাইট এবং ওয়েব পরিষেবাদি রয়েছে যা সরাসরি নোড.জেগুলি ইন্টারনেটে প্রকাশ করে। http.Server
মডিউল এখন মোটামুটি ভাল যুদ্ধের পরীক্ষিত ইন্টারনেটে বিশ্বাস করা হয়।
Isn't it true that a Node.js based server (i.e. code) will still be placed within something like Nginx to run?
না, ভুল