জাভাস্ক্রিপ্ট বেশ ভালভাবে জানা সত্ত্বেও, আমি নোড.জেএস বাস্তুতন্ত্রের এই তিনটি প্রকল্প ঠিক কী করবে তা নিয়ে আমি বিভ্রান্ত । এটা কি রেলের 'র্যাক'র মতো কিছু? কেউ দয়া করে ব্যাখ্যা করতে পারেন?
জাভাস্ক্রিপ্ট বেশ ভালভাবে জানা সত্ত্বেও, আমি নোড.জেএস বাস্তুতন্ত্রের এই তিনটি প্রকল্প ঠিক কী করবে তা নিয়ে আমি বিভ্রান্ত । এটা কি রেলের 'র্যাক'র মতো কিছু? কেউ দয়া করে ব্যাখ্যা করতে পারেন?
উত্তর:
[ আপডেট: এর 4.0 রিলিজ হিসাবে, এক্সপ্রেস আর সংযোগ ব্যবহার করে না। যাইহোক, এক্সপ্রেস এখনও সংযোগের জন্য লেখা মিডওয়্যারের সাথে সামঞ্জস্যপূর্ণ। আমার মূল উত্তরটি নীচে]
আপনি এই সম্পর্কে জিজ্ঞাসা করে আমি আনন্দিত, কারণ এটি অবশ্যই নোড.জেএস এর দিকে নজর দেওয়া লোকদের জন্য বিভ্রান্তির একটি সাধারণ বিষয়। এটি ব্যাখ্যা করার জন্য আমার সেরা শটটি এখানে:
নোড.জেএস নিজেই একটি HTTP মডিউল সরবরাহ করে, যার createServerপদ্ধতিটি এমন কোনও বস্তু প্রদান করে যা আপনি HTTP অনুরোধগুলির প্রতিক্রিয়া জানাতে ব্যবহার করতে পারেন। সেই বস্তুটি http.Serverপ্রোটোটাইপের উত্তরাধিকার সূত্রে প্রাপ্ত ।
সংযুক্তি একটি createServerপদ্ধতিও সরবরাহ করে, যা কোনও অবজেক্টকে দেয় যা এর বর্ধিত সংস্করণকে উত্তরাধিকার সূত্রে প্রাপ্ত হয় http.Server। মিডওয়্যারওয়্যারের প্লাগ ইন করা সহজ করার জন্য মূলত কানেক্টের এক্সটেনশানগুলি রয়েছে । এজন্য কানেক্ট নিজেকে "মিডলওয়্যার ফ্রেমওয়ার্ক" হিসাবে বর্ণনা করে এবং প্রায়শই রুবির রকের সাথে সাদৃশ্যযুক্ত হয়।
এক্সপ্রেস সংযুক্তিকে কী সংযুক্ত করতে পারে তা HT মডিউলের সাথে করায়: এটি createServerএমন একটি পদ্ধতি সরবরাহ করে যা কানেক্টের Serverপ্রোটোটাইপ প্রসারিত করে । সুতরাং কানেক্টের সমস্ত কার্যকারিতা এখানে রয়েছে, আরও দেখুন রেন্ডারিং এবং রুটগুলি বর্ণনা করার জন্য একটি কার্যকর ডিএসএল। রুবির সিনেট্রা একটি ভাল উপমা।
তারপরে এমন অন্যান্য ফ্রেমওয়ার্ক রয়েছে যা আরও এগিয়ে যায় এবং এক্সপ্রেস প্রসারিত করে! উদাহরণস্বরূপ জাপা , যা কফিস্ক্রিপ্ট, সার্ভার-সাইড jQuery, এবং পরীক্ষার জন্য সমর্থনকে সংহত করে।
"মিডলওয়্যার" বলতে কী বোঝায় তার একটি দৃ concrete় উদাহরণ এখানে রয়েছে: বাক্সের বাইরে, উপরের কোনওটিই আপনার জন্য স্ট্যাটিক ফাইল সরবরাহ করে না। তবে কেবল connect.staticএকটি ডিরেক্টরিতে নির্দেশ করার জন্য কনফিগার করা (একটি মিডওয়্যার যা সংযোগের সাথে আসে) ফেলে দিন এবং আপনার সার্ভার সেই ডিরেক্টরিতে থাকা ফাইলগুলিতে অ্যাক্সেস সরবরাহ করবে। দ্রষ্টব্য যে এক্সপ্রেস কানেক্টের মিডলওয়্যারগুলি সরবরাহ করে; express.staticহিসাবে একই connect.static। (দুজনেই staticProviderসম্প্রতি পর্যন্ত পরিচিত ছিল ।)
আমার ধারণাটি হ'ল বেশিরভাগ "আসল" নোড.জেএস অ্যাপসটি আজকাল এক্সপ্রেসের সাথে বিকাশ করা হচ্ছে; এটি যুক্ত করা বৈশিষ্ট্যগুলি অত্যন্ত কার্যকর এবং আপনি যদি এটি চান তবে নিম্ন-স্তরের কার্যকারিতা এখনও রয়েছে।
গৃহীত উত্তরটি সত্যই পুরানো (এবং এখন ভুল)। সংযোগের বর্তমান সংস্করণ (3.0) / এক্সপ্রেস (4.0) এর উপর ভিত্তি করে এখানে তথ্য (উত্স সহ) রয়েছে।
HTTP / https createServer যা কেবল একটি কলব্যাক নেয় (req, res) উদাহরণস্বরূপ
var server = http.createServer(function (request, response) {
// respond
response.write('hello client!');
response.end();
});
server.listen(3000);
মিডলওয়্যারটি মূলত এমন কোনও সফ্টওয়্যার যা আপনার অ্যাপ্লিকেশন কোড এবং কিছু নিম্ন স্তরের API এর মধ্যে বসে। সংযোগ অন্তর্নির্মিত HTTP সার্ভার কার্যকারিতা প্রসারিত করে এবং একটি প্লাগইন ফ্রেমওয়ার্ক যুক্ত করে। প্লাগইনগুলি মিডলওয়্যার হিসাবে কাজ করে এবং তাই সংযোগ একটি মিডওয়্যার ফ্রেমওয়ার্ক
এটি যেভাবে করে তা বেশ সহজ ( এবং আসলে কোডটি খুব ছোট! )। আপনি কল করার সাথে সাথেই আপনি var connect = require('connect'); var app = connect();একটি ফাংশন পাবেন appযা করতে পারে:
.use( উত্স ) রয়েছে ( এটি কোডের এই সাধারণ লাইনের কারণে এখানে আসে )।1. এর কারণে) আপনি নিম্নলিখিতটি করতে পারেন:
var app = connect();
// Register with http
http.createServer(app)
.listen(3000);
২) এর সাথে একত্রিত করুন এবং আপনি পাবেন:
var connect = require('connect');
// Create a connect dispatcher
var app = connect()
// register a middleware
.use(function (req, res, next) { next(); });
// Register with http
http.createServer(app)
.listen(3000);
সংযোগ নিজেকে নিবন্ধিত করার জন্য একটি ইউটিলিটি ফাংশন সরবরাহ করে httpযাতে আপনাকে কল করার প্রয়োজন নেই http.createServer(app)। এটি বলা হয় listenএবং কোডটি সহজভাবে একটি নতুন HTTP সার্ভার তৈরি করে, কলব্যাক হিসাবে নিবন্ধকের কানেক্ট করে এবং আর্গুমেন্টগুলিকে ফরোয়ার্ড করে http.listen। উত্স থেকে
app.listen = function(){
var server = http.createServer(this);
return server.listen.apply(server, arguments);
};
সুতরাং, আপনি এটি করতে পারেন:
var connect = require('connect');
// Create a connect dispatcher and register with http
var app = connect()
.listen(3000);
console.log('server running on port 3000');
এটি http.createServerশীর্ষে একটি প্লাগইন ফ্রেমওয়ার্ক সহ এখনও আপনার ভাল পুরানো ।
এক্সপ্রেসজেএস এবং সংযোগ সমান্তরাল প্রকল্প। কানেক্ট হয় মাত্র একটি মিডলওয়্যার ফ্রেমওয়ার্ক, একটা চমৎকার সঙ্গে useফাংশন। এক্সপ্রেস কানেক্টের উপর নির্ভর করে না ( প্যাকেজ.জসন দেখুন )। তবে এটি সংযুক্ত যা কিছু করে তা করে:
createServerলাইক কানেক্টের সাথে নিবন্ধভুক্ত হতে পারে কারণ এটিও একটি ফাংশন যা req/ resজুড়ি ( উত্স ) নিতে পারে ।listen করার জন্য একটি ইউটিলিটি ফাংশনসংযোগ কী সরবরাহ করে (যা ডুপ্লিকেট প্রকাশ করে) এর সাথে সাথে এর আরও অনেকগুলি বৈশিষ্ট্য রয়েছে। যেমন
useExpressJS ফাংশন এবং কানেক্ট সামঞ্জস্যপূর্ণ এবং তাই হয় মিডলওয়্যার ভাগ করা হয় । উভয়ই মিডলওয়্যার ফ্রেমওয়ার্ক, এক্সপ্রেসের একটি সাধারণ মিডলওয়্যার ফ্রেমওয়ার্কের চেয়ে বেশি রয়েছে ।
আমার মতামত: আপনার নিজের পছন্দমতো করতে আপনাকে উপরের ভিত্তিতে enough যথেষ্ট অবহিত করা হয়েছে।
http.createServerআপনি যদি স্ক্র্যাচ থেকে কানেক্ট / এক্সপ্রেস জাতীয় কিছু তৈরি করে থাকেন তবে ব্যবহার করুন ।http.createServerবেশিরভাগ লোকের কেবল এক্সপ্রেসজেএস ব্যবহার করা উচিত।
এগুলি সময় মত কিছুটা সত্য হতে পারে তবে এখন ভুল:
এটি HT.Server এর বর্ধিত সংস্করণ উত্তরাধিকার সূত্রে প্রাপ্ত
ভুল। এটি এটি প্রসারিত করে না এবং যেমনটি আপনি দেখেছেন ... এটি ব্যবহার করে
এক্সপ্রেস HTTP মডিউলে যা সংযোগ করে তা সংযুক্ত করতে দেয়
এক্সপ্রেস 4.0 এমনকি সংযোগের উপর নির্ভর করে না। বর্তমান প্যাকেজ.জসন নির্ভরতা বিভাগটি দেখুন
নোড.জেএস সার্ভারের পক্ষে জাভাস্ক্রিপ্ট মোটর।
সমস্ত জেএস ক্ষমতা ছাড়াও, এতে নেটওয়ার্কিং ক্ষমতা (এইচটিটিপি এর মতো), এবং ফাইল সিস্টেমে অ্যাক্সেস অন্তর্ভুক্ত রয়েছে।
এটি ক্লায়েন্ট-সাইড জেএস থেকে আলাদা যেখানে নেটওয়ার্কিংয়ের কাজগুলি ব্রাউজার দ্বারা একচেটিয়া করা হয় এবং সুরক্ষা কারণে ফাইল সিস্টেমে অ্যাক্সেস নিষিদ্ধ।
সার্ভারে চলমান এমন কিছু, HTTP বোঝে এবং ওয়েব সার্ভারের মতো ফাইলগুলিতে অ্যাক্সেস করতে পারে। তবে এটি এক নয়।
নোড.জেএসকে ওয়েব সার্ভারের মতো আচরণ করার জন্য এটি প্রোগ্রাম করতে হবে: আগত এইচটিটিপি অনুরোধগুলি পরিচালনা করুন এবং উপযুক্ত প্রতিক্রিয়া সরবরাহ করুন।
এক্সপ্রেস এটিই করে: এটি জেএসে একটি ওয়েব সার্ভারের প্রয়োগ implementation
সুতরাং, কোনও ওয়েবসাইট বাস্তবায়ন এক্সপ্রেস রুটগুলি কনফিগার করা এবং সাইটের নির্দিষ্ট বৈশিষ্ট্যগুলি প্রোগ্রাম করার মতো।
পৃষ্ঠাগুলি পরিবেশন করাতে বেশ কয়েকটি কাজ জড়িত। এই কাজগুলির মধ্যে অনেকগুলি সুপরিচিত এবং খুব সাধারণ, তাই নোডের সংযোগ মডিউল (নোডের অধীনে চালিত হওয়ার জন্য উপলব্ধ অনেকগুলি মডিউলগুলির মধ্যে একটি) সেই কার্যগুলি কার্যকর করে।
বর্তমানের মুগ্ধকর অফারটি দেখুন:
সংযোগ হ'ল একটি কাঠামো এবং এর মাধ্যমে আপনি আপনার প্রয়োজনীয় (উপ) মডিউলগুলি চয়ন করতে পারেন। Contrib মিডলওয়্যার পৃষ্ঠা অতিরিক্ত একটি দীর্ঘ তালিকা উল্লেখ middlewares ।
এক্সপ্রেস নিজেই সর্বাধিক সাধারণ কানেক্ট মিডলওয়্যারগুলির সাথে আসে।
নোড.জেএস ইনস্টল করুন
নোড এনপিএম , নোড প্যাকেজ ম্যানেজারের সাথে আসে ।
কমান্ডটি npm install -g expressবিশ্বব্যাপী এক্সপ্রেস ডাউনলোড এবং ইনস্টল করবে ( এক্সপ্রেস গাইডটি চেক করুন )।
চলমান express fooকমান্ড লাইন (নোড নেই) একটি প্রস্তুত টু রান আবেদন নামে foo বিন্যাস তৈরি করবে। এর (নতুন তৈরি) ডিরেক্টরিতে পরিবর্তন করুন এবং কমান্ডটি সহ নোড দিয়ে এটি চালান node <appname>, তারপরে খুলুন http://localhost:3000এবং দেখুন। এখন আপনি ভিতরে আছেন।
Node.jsনিজেই একটি এইচটিটিপি মডিউল সরবরাহ করে, যার ক্রিয়েট সার্ভার পদ্ধতিটি এমন কোনও বস্তু দেয় যা আপনি HTTP অনুরোধগুলির প্রতিক্রিয়া জানাতে ব্যবহার করতে পারেন। সেই বস্তুটি http.Serverপ্রোটোটাইপের উত্তরাধিকার সূত্রে প্রাপ্ত ।
সম্পর্কিত তথ্য, বিশেষত যদি আপনি ভিজুয়াল স্টুডিও আইডিইয়ের সাথে কাজ করার জন্য এনটিভিএস ব্যবহার করছেন। এনটিভিএস ভিজুয়াল স্টুডিও ২০১২, ২০১৩ এ নোডজেএস এবং এক্সপ্রেস সরঞ্জাম, স্ক্যাফোল্ডিং, প্রজেক্ট টেম্পলেট উভয়ই যুক্ত করে।
এছাড়াও, এক্সপ্রেসজেএস বা কানেক্টকে একটি "ওয়েব সার্ভার" হিসাবে অভিহিত করে এমন ভেরিয়েজটি ভুল। আপনি এগুলি বা তাদের ছাড়াই একটি বেসিক ওয়েব সার্ভার তৈরি করতে পারেন। একটি বেসিক নোডজেএস প্রোগ্রামটি http অনুরোধগুলি পরিচালনা করতে http মডিউলটিও ব্যবহার করতে পারে, এইভাবে একটি প্রাথমিক ওয়েব সার্ভার হয়ে ওঠে।
মিডলওয়্যার নাম হিসাবে বোঝায় আসলে মিডওয়্যার মাঝখানে বসে আছে .. মাঝখানে কি? অনুরোধ এবং প্রতিক্রিয়ার মাঝখানে .. কীভাবে অনুরোধ, প্রতিক্রিয়া, এক্সপ্রেস সার্ভার এই ছবিতে এক্সপ্রেস অ্যাপে বসে আপনি দেখতে পাচ্ছেন অনুরোধগুলি ক্লায়েন্টের কাছ থেকে আসছে তখন এক্সপ্রেস সার্ভার সার্ভার সেই অনুরোধগুলি পরিবেশন করে .. তারপরে আরও গভীর খনন করতে পারি .. আসলে আমরা এটি ভাগ করতে পারি সম্পূর্ণ এক্সপ্রেস সার্ভারের সম্পূর্ণ কাজটি এইভাবে ছোট পৃথক কার্যগুলিতে করা হয়। মিডলওয়্যার কীভাবে অনুরোধ এবং প্রতিক্রিয়ার মধ্যে বসে কিছু নির্দিষ্ট কাজ করে সার্ভারের অংশগুলির একটি ছোট অংশ এবং পরেরটির কাছে অনুরোধটি পাস করে .. অবশেষে সমস্ত কাজ করে প্রতিক্রিয়া করা হয়ে যায় .. সমস্ত মাঝারি ওয়্যার অনুরোধের অবজেক্ট, প্রতিক্রিয়া অবজেক্ট এবং অনুরোধের পরবর্তী কার্য অ্যাক্সেস করতে পারে প্রতিক্রিয়া চক্র ..
মিডলওয়্যারের জন্য এক্সপ্রেস ইউটিউব ভিডিওতে মিডলওয়্যারটি ব্যাখ্যা করার জন্য এটি ভাল উদাহরণ