পুরো স্ট্যাক জাভাস্ক্রিপ্ট সহ ফ্রন্ট এবং ব্যাক-এন্ড পৃথক করার পদ্ধতিগুলি?


31

ধরুন আমার একটি ফ্রন্ট-এন্ড রয়েছে যা বেশিরভাগই একক পৃষ্ঠার অ্যাপ্লিকেশন যা কৌণিক, গ্রান্ট এবং বোভার ব্যবহার করে লেখা। এবং ধরুন আমার একটি ব্যাকএন্ড রয়েছে, যা বেশিরভাগই কেবল একটি আরআরআইপি এর উপরে বসে থাকে যা একটি গ্রাহক, এক্সপ্রেস এবং সিক্যুয়ালাইজের মতো জিনিস ব্যবহার করে একটি ডাটাবেস থেকে বস্তুগুলি সঞ্চয় / পুনরুদ্ধার করে।

কৌণিক অ্যাপ্লিকেশনটি ব্যবহারকারী দেখায় এমন সমস্ত ভিজ্যুয়াল স্টাফ করে, তবে এটি ব্যাক-এন্ড দ্বারা সরবরাহিত পরিষেবাদিগুলির উপর একটি জিইউআই হয়ে থাকে।

এগুলি দুটি পৃথক কোডবেজে বিভক্ত করা, স্বাধীন বিকাশের অনুমতি, সংস্করণকরণ, ধারাবাহিক সংহতকরণ, উন্নয়নের দিকে এগিয়ে যাওয়া ইত্যাদি etc.

আমার প্রশ্নটি হল, পরিষ্কারভাবে এটি করার জন্য কী কী পদ্ধতি রয়েছে? পূর্ণ-স্ট্যাক জাভাস্ক্রিপ্টের জন্য কি সেরা অনুশীলনের প্রস্তাব দেওয়া হয়েছে?

বিকল্প # 1 টি একরকম বলে মনে হচ্ছে, অর্থাত "এগুলি আলাদা করবেন না"। প্রোটি হ'ল বিল্ড চেইনটি সহজ, এবং সমস্ত কিছু এক জায়গায় - তবে মনে হয় অনেকগুলি কনস রয়েছে; স্বাধীনভাবে সংস্করণ করা আরও শক্ত, একটি ভাঙ্গা ফ্রন্টের অর্থ একটি আন-ডিপ্লোয়যোগ্য পিঠ এবং আরও অনেক কিছু।

অপশন # 2 টি একটি ছোট-একরঙা বলে মনে হচ্ছে, যেখানে সামনে-শেষ বিল্ড চেইনের ফলাফল ব্যাক-এন্ডে একগুচ্ছ ফাইল লিখবে। distফ্রন্ট-এন্ড উপর ডিরেক্টরি ব্যাক এন্ড উপর কিছু ডিরেক্টরি পড়ুন হবে, তাই মূলত যখন সামনে শেষ minifies, uglifies, ইত্যাদি, এটা ব্যাক এন্ড, যা সবকিছু রান প্রকাশ শেষ পর্যন্ত।

বিকল্প # 3 সম্পূর্ণ-বিচ্ছিন্ন বলে মনে হচ্ছে: ফ্রন্ট-এন্ড এবং ব্যাক-এন্ড প্রত্যেকে বিভিন্ন নিজস্ব বন্দরগুলিতে তাদের নিজস্ব সার্ভার চালায় এবং তারা সম্পূর্ণ পৃথক প্রকল্প। ত্রুটিটি মনে হয় যে একে অপরের বন্দরগুলি সম্পর্কে তাদের জানার জন্য কনফিগার করা দরকার; ব্যাক-এন্ডকে অবশ্যই সম্মুখ-প্রান্ত থেকে সিওআরএসকে মঞ্জুরি দিতে হবে এবং ফ্রন্ট-এন্ডটি জানতে হবে those সমস্ত প্রান্তটি কোথায় রয়েছে।

বিকল্প # 4 টি পুরো জিনিসটি একসাথে ছড়িয়ে দেওয়ার জন্য ডকার-রচনার মতো কিছু ব্যবহার করা হতে পারে।

আমি নিশ্চিত যে অন্যান্য বিকল্প আছে। প্রস্তাবিত সেরা অনুশীলন কি?

উত্তর:


18

এর মধ্যে একটি REST ইন্টারফেস সহ এটি একটি ফ্রন্ট-এন্ড, ব্যাক-এন্ড অ্যাপ্লিকেশন। আপনার ইতিমধ্যে সম্পূর্ণ বিচ্ছেদ রয়েছে।

আমার ভোটটি # 3 বিকল্পের জন্য You কনফিগারেশন আপনাকে শক্তভাবে-জোড়াযুক্ত কোড বাইন্ডিংয়ের প্রয়োজন ছাড়াই সম্পূর্ণ পৃথকীকরণের অনুমতি দেয়। আপনি যদি সিওআরএস সম্পর্কে চিন্তিত হন তবে সমস্ত কিছু একটি ডোমেনে রাখুন। আপনার অবশ্যই সিওআরএস থাকতে হবে তা পরিচালনা করার সেরা উপায় একটি কনফিগারেশন।

তবে এখানে কোনও "সেরা অনুশীলন" নেই। সর্বোত্তম অনুশীলনটি হ'ল যা আপনার নির্দিষ্ট প্রয়োজনগুলি সর্বোত্তমভাবে পূরণ করবে।


2
যদি তারা দুটি পৃথক সার্ভার হয় তবে আপনি কীভাবে সমস্ত কিছু একটি ডোমেনে রাখবেন? এমনকি যদি তারা একই হোস্টে ছুটে আসে তবে তাদের আলাদা আলাদা উত্স তৈরি করে বিভিন্ন বন্দরে থাকতে হবে।
FrobberOfBits

1
যদি সর্বোত্তম অনুশীলন না হয় তবে কীভাবে এই কনফিগারেশনটি করা হয় তার কোনও উদাহরণ রয়েছে?
FrobberOfBits

7
আপনাকে আপনার অ্যাপ্লিকেশান সামনে একটি বিপরীত প্রক্সি (nginx) করা এবং মাউন্ট করতে /অবস্থানকে localhost:3000(ফ্রন্টএন্ড সার্ভার) এবং /api/করতে localhost:3001(API সার্ভার)। nginx তখন ডিফল্ট HTTP পোর্ট শুনতে পাবে।
nvartolomei

@nvartolomei আমি বিপরীত প্রক্সি ব্যবহারের সাথে একমত। ব্যাকএন্ড, সম্মুখ প্রান্তের মতো রুটের তথ্যের মধ্যে কিছু তথ্য পরিষ্কারভাবে ভাগ করার কোনও উপায় আছে? এছাড়াও, আপনার বিপরীত প্রক্সিটি কোনও সিডিএন-তে নির্দেশ করা কি সহজ?
অ্যান্ড্রু অলব্রাইট

6

হ্যাঁ, আপনি দুটি পৃথক করা উচিত এবং তৃতীয় পক্ষের অ্যাপ্লিকেশনের মতো সামনের প্রান্তের অ্যাপটিকে চিকিত্সা করা উচিত - আপনি শেষ পর্যন্ত অন্য ক্লায়েন্ট যুক্ত করতে পারেন, উদাহরণস্বরূপ একটি মোবাইল অ্যাপ্লিকেশন এবং যদি প্রথম ক্লায়েন্টটি এভাবে নির্মিত হয় তবে আপনার জীবন আরও সহজ হবে।

ডকার পাত্রে বা অন্য কোনও ডিপ্লোয়মেন্ট সিস্টেম ব্যবহার করা বেশিরভাগ ব্যাকএন্ডের সাথে সম্পর্কিত কারণ আপনার অ্যাপ্লিকেশনটির সামনের প্রান্তটি কেবল স্থিতিশীল সম্পদ যা সমাধান করা দরকার। আপনি হয় এই সার্ভিসগুলিকে স্থিতিশীলভাবে আপনার সার্ভারে বা অন্য কোথাও সিডিএন যেমন ক্লাউডফ্রন্টের মতো হোস্ট করতে পারেন।

কর এড়ানো আপনাকে সামান্য কনফিগারেশন সাশ্রয় করতে পারে, তবে উপরের উত্তর হিসাবে উল্লিখিত হয়েছে, এটি বিন্দু অনুসারে। কর্স (এবং টোকেন এথ) ব্যবহার করা অন্য ক্লায়েন্টদের জন্যও আপনার ব্যাকএন্ডকে আরও ভালভাবে প্রস্তুত করবে।

সম্পাদনা করুন: যতক্ষণ না পুরো স্ট্যাক জেএস সেরা অভ্যাসগুলি - আমি কেবল এটিই বলব, ধারাবাহিকভাবে থাকি। যদি আপনি প্রতিশ্রুতি ব্যবহার করেন (এবং আপনার উচিত) তবে উভয় পক্ষেই এটি করুন। একই জেএস স্টাইল এবং ফর্ম্যাটিং রাখুন, একই পরীক্ষার ল্যাব ব্যবহার করুন (যেখানে সম্ভব) ইত্যাদি

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.