সামনের দিকের দৃষ্টিকোণ থেকে উত্তর:
এটি করা যাবে না বলে সবার কথা শুনবেন না, কারণ ১৯৯ 1996 সালে আমি যে-পরীক্ষামূলক সান ফ্রান্সিসকো স্টেট ইউনিভার্সিটির সহ-লেখা হয়েছিল সে অবশেষে কয়েক বছর আগে ইন্টারনেট স্বর্গে গিয়েছিল এবং সেই সময়ে কোনও একক ব্রাউজারের সামঞ্জস্যতা ঠিক করার দরকার পড়ে না never ; এটি আপনার 40 বছরের লক্ষ্য প্রায় অর্ধেক। এবং এই স্ট্যান্ডফোর্ড রিসার্চ ইনস্টিটিউট প্রকল্পের জন্য 1998 সালে আমি এই জাভাস্ক্রিপ্ট-ভিত্তিক ফ্রন্ট-এন্ড তৈরি করেছি কয়েক বছর পরে ফ্ল্যাশয়ার কিছু দিয়ে প্রতিস্থাপন করা হয়েছিল, তবে মূল ইউআই এখনও ছোটখাটো সামঞ্জস্যতা সংশোধন নিয়ে চলতে পারে না এমন কোনও কারণ নেই।
কৌশলটি হ'ল আপনার অ্যাপ্লিকেশনটি কেবলমাত্র বহুল-সমর্থিত ডাব্লু 3 সি / ইসিএমএ মান ব্যবহার করে এবং আপনার নিয়ন্ত্রণে একটি পরিষ্কার নকশা রয়েছে তা নিশ্চিত করা। যদিও ট্রেন্ডি 90-যুগের প্রযুক্তিতে লেখা অনেকগুলি ওয়েব অ্যাপস আজ ভাল বা মোটেও কার্যকর হবে না, 90 দশকের যুগের ওয়েব অ্যাপ্লিকেশনগুলি এখনও বড় স্ট্যান্ডার্ডগুলিতে লেখা আছে। তারা পাস দেখতে পারে, কিন্তু তারা কাজ করে।
এখানে লক্ষ্যটি কোনও ওয়েব অ্যাপ্লিকেশনটি লেখার নয় যা তাদের সার্ভারে উঠে যাবে এবং 40 বছর ধরে সেখানে থাকবে যাতে কেউ আবার এটি স্পর্শ না করে। এটি এমন একটি ভিত্তি তৈরি করতে হবে যা এখনও কয়েক দশক ধরে রেখায় কার্যকর হতে পারে যা স্ক্র্যাচ থেকে পুনর্নির্মাণ না করে নতুন বৈশিষ্ট্যগুলিকে সমর্থন করতে বাড়তে পারে।
প্রথমত, আপনাকে অফিসিয়াল স্ট্যান্ডার্ড এবং শুধুমাত্র অফিসিয়াল স্ট্যান্ডার্ডগুলিতে কোড করতে হবে । কোনও জাভাস্ক্রিপ্ট বৈশিষ্ট্যগুলি অনুমোদিত অনুমোদিত ECMAScript মানের অংশ নয়; ES5.1 বর্তমান সংস্করণ এবং সাধারণত সমর্থিত তাই এটি লক্ষ্য করা নিরাপদ। একইভাবে, এইচটিএমএল 5, সিএসএস এবং ইউনিকোডের বর্তমান সংস্করণগুলি ভাল। কোনও পরীক্ষামূলক জাভাস্ক্রিপ্ট, সিএসএস 3 বা এইচটিএমএল বৈশিষ্ট্য নেই (যা বিক্রেতা-উপসর্গযুক্ত বা ব্রাউজারগুলির মধ্যে 100% চুক্তি ছাড়াই রয়েছে)। এবং কোনও ব্রাউজার-নির্দিষ্ট সামঞ্জস্য হ্যাক নেই। আপনি একবারে কোনও নতুন বৈশিষ্ট্যটি স্ট্যান্ডার্ডে ব্যবহার করা শুরু করতে পারেন এবং প্রত্যেকে এটি উপসর্গ ছাড়াই সমর্থন করে।
ইএস 5 সাপোর্টের অর্থ আইই 8 বা তার আগের নামানো হ'ল, যা আমি যাইহোক প্রস্তাব করি যেহেতু এটির জন্য ব্রাউজার-নির্দিষ্ট হ্যাকগুলি দরকার যা কয়েক দু'বছরে অকেজো হবে। দীর্ঘায়ু হওয়ার সর্বোত্তম সুযোগের জন্য আমি ইএস 5 এর স্ট্রিক্ট মোডের পরামর্শ দেব, যা আসলে আইই 10 এ আপনার বেসলাইন ব্রাউজারের সামঞ্জস্যতা এবং প্রত্যেকের সাম্প্রতিক সংস্করণকে সেট করে । এই ব্রাউজারগুলিতে এইচটিএমএল 5 এর ফর্ম বৈধতা এবং স্থানধারক বৈশিষ্ট্যগুলির অনেকের জন্য স্থানীয় সমর্থন রয়েছে যা খুব দীর্ঘ সময়ের জন্য কার্যকর হবে।
ECMAScript এর নতুন সংস্করণগুলি পুরানো সংস্করণগুলির সাথে সামঞ্জস্য বজায় রাখে, সুতরাং আপনার কোডটি বর্তমান মান অনুযায়ী লিখিত হয় তবে আসন্ন বৈশিষ্ট্যগুলি গ্রহণ করা অনেক সহজ হবে। উদাহরণস্বরূপ, আসন্ন class
সিনট্যাক্স ব্যবহার করে সংজ্ঞায়িত ক্লাসগুলি বর্তমান constructor.prototype
সিনট্যাক্সের সাথে সংজ্ঞায়িত ক্লাসগুলির সাথে পুরোপুরি বিনিময়যোগ্য হবে । সুতরাং পাঁচ বছরে কোনও বিকাশকারী কোনও কিছু না ভাঙিয়ে ফাইল-বাই-ফাইল ভিত্তিতে ES6 ফর্ম্যাটে ক্লাসগুলি পুনরায় লিখতে পারে - ধরে নিই, আপনারও ভাল ইউনিট পরীক্ষা আছে।
দ্বিতীয়ত, ট্রেন্ডি জাভাস্ক্রিপ্ট অ্যাপ্লিকেশন ফ্রেমওয়ার্কগুলি এড়িয়ে চলুন, বিশেষত যদি তারা আপনার অ্যাপ্লিকেশনটিকে কোড করার পদ্ধতি পরিবর্তন করে। ব্যাকবোন ছিল সমস্ত ক্রোধ, তারপরে স্প্রাউটকোর এবং এমবার ছিল, এবং এখন অ্যাঙ্গুলারের কাঠামোর প্রত্যেকে প্রচার করতে পছন্দ করে। এগুলি কার্যকর হতে পারে তবে এগুলির মধ্যেও কিছু সাধারণ বিষয় রয়েছে: নতুন সংস্করণগুলি প্রকাশিত হওয়ার সাথে সাথে তাদের অ্যাপ্লিকেশনগুলি ভেঙে দেয় এবং কোড পরিবর্তন করতে হয় এবং তাদের দীর্ঘায়ু প্রশ্নবিদ্ধ। আমি সম্প্রতি একটি কৌণিক 1.1 অ্যাপ্লিকেশনটি 1.2 তে আপডেট করেছি এবং বেশ কিছুটা আবার লিখতে হয়েছিল। একইভাবে, ব্যাকবোন 2 থেকে 3 এ যেতে অনেকগুলি HTML পরিবর্তন দরকার। স্ট্যান্ডার্ডগুলি কোনও কারণে ধীর গতিতে চলছে তবে এই ফ্রেমওয়ার্কগুলি দ্রুত চলে এবং পর্যায়ক্রমে ভাঙা জিনিসগুলি ব্যয়।
এছাড়াও, নতুন অফিসিয়াল স্ট্যান্ডার্ডগুলি প্রায়শই পুরানো ফ্রেমওয়ার্কগুলি অপ্রচলিত ছেড়ে দেয় এবং যখন এটি ঘটে তখন frame ফ্রেমওয়ার্কগুলি মিউটেট হয় (ব্রেকিং পরিবর্তন সহ) বা পিছনে ফেলে রাখা হয়। আপনি জানেন যে ইসমাস্ক্রিপ্ট ra অনুমোদিত হয়ে গেলে এবং সমস্ত ব্রাউজারগুলি এর মানকৃত প্রতিশ্রুতি শ্রেণিকে সমর্থন করলে বিশ্বের সমস্ত প্রতিযোগিতামূলক প্রতিশ্রুতি গ্রন্থাগারগুলিতে কী ঘটতে চলেছে? তারা অচল হয়ে যাবে এবং তাদের বিকাশকারীরা তাদের আপডেট করা বন্ধ করবে। আপনি যদি সঠিক কাঠামোটি বেছে নিয়ে থাকেন তবে আপনার কোডটি যথেষ্ট পরিমাণে মানিয়ে নিতে পারে এবং যদি আপনি খারাপভাবে অনুমান করেন তবে আপনি একটি বড় রিফ্যাক্টরিংয়ের দিকে তাকিয়ে থাকবেন।
সুতরাং আপনি যদি কোনও তৃতীয় পক্ষের গ্রন্থাগার বা কাঠামো গ্রহণ করার কথা ভাবছেন তবে নিজেকে জিজ্ঞাসা করুন ভবিষ্যতে অপসারণ করা কতটা কঠিন। যদি এটি অ্যাংুলারের মতো কাঠামো থাকে যা আপনার অ্যাপ্লিকেশনটি স্ক্র্যাচ থেকে পুনর্নির্মাণ ব্যতীত কখনও মুছে ফেলা যায় না, এটি একটি ভাল লক্ষণ এটি 40-বছরের আর্কিটেকচারে ব্যবহার করা যাবে না। যদি এটি কোনও তৃতীয় পক্ষের ক্যালেন্ডার উইজেট হয় যা আপনি কিছু কাস্টম মিডলওয়্যারের সাথে বিমূর্ত করেছেন, এটি প্রতিস্থাপন করতে কয়েক ঘন্টা সময় লাগবে।
তৃতীয়ত, এটি একটি ভাল, পরিষ্কার অ্যাপ্লিকেশন কাঠামো দিন। এমনকি যদি আপনি কোনও অ্যাপ ফ্রেমওয়ার্ক ব্যবহার না করেন তবে আপনি এখনও বিকাশকারী সরঞ্জামগুলি, স্ক্রিপ্টগুলি তৈরি করতে এবং একটি ভাল পরিষ্কার ডিজাইনের সুবিধা নিতে পারেন। আমি ব্যক্তিগতভাবে ক্লোজার টুলকিটের নির্ভরতা পরিচালনার খুব অনুরাগী কারণ এটি আপনার লাইটওয়েট এবং এর অ্যাপ্লিকেশনটি তৈরি করার পরে এর ওভারহেড সম্পূর্ণভাবে মুছে ফেলা হয়েছে। আপনার স্টাইলশিটগুলি সংগঠিত করার জন্য এবং রিলিজের জন্য স্ট্যান্ডার্ড ভিত্তিক সিএসএস স্টাইলশিট তৈরির জন্য লেসারসিএসএস এবং এসসিএসএসও দুর্দান্ত সরঞ্জাম।
আপনি এমভিসি কাঠামোর সাহায্যে নিজের কোডটি একক-ব্যবহারের ক্লাসেও সংগঠিত করতে পারেন। এটি ভবিষ্যতে বেশ কয়েক বছর পূর্বে ফিরে আসা এবং আপনি যখন কিছু লিখছেন তখন আপনি কী ভাবছিলেন তা জেনে রাখা এবং কেবল যে অংশগুলির প্রয়োজন তা প্রতিস্থাপন করা আরও সহজ করে দেবে।
আপনার ডাব্লু 3 সি এর পরামর্শও মেনে চলতে হবে এবং উপস্থাপিত তথ্যগুলি আপনার HTML থেকে সম্পূর্ণ দূরে রাখা উচিত out (এতে "বড়-সবুজ-পাঠ্য" এবং "দ্বি-কলাম-প্রশস্ত" এর মতো উপাদানগুলিকে উপস্থাপনামূলক শ্রেণীর নাম দেওয়ার মতো চিট অন্তর্ভুক্ত রয়েছে)) যদি আপনার এইচটিএমএল শব্দার্থক এবং সিএসএস উপস্থাপনযোগ্য হয় তবে এটি বজায় রাখা এবং অভিযোজন করা আরও সহজ হবে'll ভবিষ্যতে নতুন প্ল্যাটফর্মে। অন্ধ বা অক্ষম ব্যক্তিদের জন্য বিশেষায়িত ব্রাউজারগুলির জন্য সমর্থন যুক্ত করা আরও সহজ হবে।
চতুর্থত, আপনার পরীক্ষাগুলি স্বয়ংক্রিয় করুন এবং আপনার কাছাকাছি পূর্ণ কভারেজ রয়েছে তা নিশ্চিত করুন। সার্ভার-সাইড বা জাভাস্ক্রিপ্টে প্রতিটি শ্রেণীর জন্য ইউনিট পরীক্ষা লিখুন। সামনের প্রান্তে, প্রতিটি শ্রেনী প্রতিটি সমর্থিত ব্রাউজারে তার বৈশিষ্ট অনুযায়ী কাজ করে তা নিশ্চিত করুন। প্রতিটি প্রতিশ্রুতিবদ্ধতার জন্য আপনার বিল্ড বট থেকে এই পরীক্ষাগুলি স্বয়ংক্রিয় করুন mate এটি দীর্ঘায়ু এবং নির্ভরযোগ্যতা উভয়ের জন্যই গুরুত্বপূর্ণ, যেহেতু আপনি বর্তমান ব্রাউজারগুলি অস্পষ্ট করে রেখেও আপনি প্রথমদিকে বাগগুলি ধরতে পারেন। জেসমিন এবং গুগল ক্লোজারের জেএসউনিট ভিত্তিক টেস্টিং ফ্রেমওয়ার্ক উভয়ই ভাল।
আপনি সম্পূর্ণ ইউআই ক্রিয়ামূলক পরীক্ষা চালাতে চাইবেন, যা সেলেনিয়াম / ওয়েবড্রাইভার ভাল। মূলত, আপনি এমন একটি প্রোগ্রাম লেখেন যা আপনার ইউআইয়ের মধ্য দিয়ে যায় এবং এটিকে এমনভাবে ব্যবহার করে যেন কোনও ব্যক্তি এটি পরীক্ষা করে। বিল্ড বট পর্যন্ত ওয়্যারগুলিও তৈরি করুন।
শেষ অবধি, অন্যরা যেমন আপনার ডেটা রাজা হিসাবে উল্লেখ করেছে। আপনার ডেটা স্টোরেজ মডেলটির মাধ্যমে ভাবেন এবং নিশ্চিত হন যে এটি শেষ পর্যন্ত নির্মিত। আপনার ডেটা স্কিমাটি শক্ত কিনা তা নিশ্চিত করুন এবং প্রতিটি প্রতিশ্রুতিতে এটিরও ভালভাবে পরীক্ষিত হয়েছে। এবং আপনার সার্ভারের আর্কিটেকচারটি স্কেলযোগ্য কিনা তা নিশ্চিত করুন। আপনি সামনের প্রান্তে যা কিছু করেন তার চেয়ে এটি আরও গুরুত্বপূর্ণ।