দেব জটিল জাভাস্ক্রিপ্ট ইউআই'র কাছে [বন্ধ]


19

জটিল ক্লায়েন্ট-সাইড জাভাস্ক্রিপ্টের বিকাশকে ঘিরে আমি বিভিন্ন পদ্ধতির ল্যান্ডস্কেপ এবং সেরা অনুশীলনগুলি বোঝার চেষ্টা করছি।

আমি নিশ্চিত নই এই অ্যাপ্লিকেশনটির ক্লাসটি কী লেবেল করবেন, সম্ভবত ভারী এজেএক্স বা আরআইএ (তবে ফ্ল্যাশ / সিলভারলাইটের মতো প্লাগইন নয়)। আমি এই বৈশিষ্ট্যগুলি সহ ওয়েব অ্যাপ্লিকেশনগুলিকে উল্লেখ করছি:

  • জাভাস্ক্রিপ্টে সমৃদ্ধ / নেটিভ ডেস্কটপ ইউএক্স অনুকরণ করুন
  • ডেটা-এপিআই (জেএসএন / এইচটিএমএল-টেমপ্লেটস) হিসাবে সার্ভারটি ব্যবহার করে ক্লায়েন্ট-সাইড জেএসে সর্বাধিক / সমস্ত আচরণ থাকে।

এটি ইউআই রেন্ডারিংয়ের জন্য ওয়েব-সার্ভার ব্যবহারের বিপরীতে, একটি পৃষ্ঠা-রিফ্রেশ মডেলটিতে সমস্ত এইচটিএমএল উত্পাদন করে।

কয়েকটি উদাহরণ হ'ল:

  • গুগল ডক্স / জিমেইল
  • MindMeister
  • পিভোটাল ট্র্যাকার

আমরা যখন এইচটিএমএল 5-তে এগিয়ে যাই, আমি ভারী জাভাস্ক্রিপ্ট সহ আরআইএ বিকাশের এই স্টাইলটি দেখতে পাচ্ছি, যা আরও সাধারণ এবং প্রতিযোগিতার জন্য প্রয়োজনীয় হয়ে উঠেছে।

প্রশ্ন: তাহলে এই ধরণের ভারী জেএস বিকাশ পরিচালনা করার জন্য সাধারণ পন্থাগুলি কোনটি?

ক্লায়েন্ট-সাইড কোড যেমন অ্যাপ্লিকেশনগুলি বৈশিষ্ট্যগুলিতে বৃদ্ধি পায় ততই মনোরম জটিল। কাঁচা জেএস (বা তাই আমি শুনেছি, এবং এটি বিশ্বাস করতে পারি) দিয়ে একাধিক দল জুড়ে বিকাশের প্রচেষ্টা স্কেলিংয়ের সমস্যা রয়েছে।

গুগল জিডব্লিউটি তৈরি করে উচ্চতর স্তরের ভাষা (জাভা) থেকে জেএস পর্যন্ত সংকলন করে উচ্চতর স্তরের ভাষাতে রয়েছে এমন বিকাশের অবকাঠামোর উপর ঝুঁকিয়েছে (গ্রহন, শক্তিশালী-টাইপিং, রিফ্যাক্টরিং সরঞ্জামগুলি) পাশাপাশি অ্যাবস্ট্রাক্ট ব্রাউজারের সামঞ্জস্যতা এবং অন্যান্য সমস্যাগুলি বিকাশকারী থেকে দূরে।

স্ক্রিপ্ট # সি এর জন্য # এর মতো অন্যান্য সরঞ্জাম রয়েছে যা একই রকম কিছু করে। এই সমস্ত জেএসকে আইএল (মধ্যবর্তী ভাষা) এর ভূমিকাতে আরও রাখে। অর্থাত। "আপনি কখনই সেই 'নিম্ন স্তরের ভাষা' তে আর লিখতে পারেন না।"

তবে এই 'জেএস সংকলন' একমাত্র পন্থা নয়। এটি স্পষ্ট নয় যে জিডব্লিউটিই প্রভাবশালী পদ্ধতির ... বা সত্যই এটি হয়ে উঠবে।

সমৃদ্ধ-ক্লায়েন্ট জাভাস্ক্রিপ্ট দিয়ে লোকেরা কী করছে? কিছু ওরিয়েন্টিং প্রশ্ন:

  • বেশিরভাগ দোকানগুলি কীভাবে ম্যানুয়ালি জেএস তৈরি করছে (jQuery এট আল এর মতো লিবসের উপরে)?
  • বা স্পষ্টভাবে সেরা-অনুশীলন উদ্ভূত না করে অনেকগুলি ভিন্ন পদ্ধতির রয়েছে?
  • বেশিরভাগ দোকানগুলি কি আরআইএ স্কেল বিকাশকে এড়ানো সহজ বিকাশকারী সার্ভার-সাইড / পৃষ্ঠা-রেড্রা মডেলের পক্ষে? যদি তাই হয় তবে কি এই টিকে থাকবে?
  • জেএসকে সংকলন করা সম্ভবত একটি উদীয়মান ভবিষ্যতের প্রবণতা? নাকি এ কি শুধুই ভুল মাথা?
  • কীভাবে তারা ক্লায়েন্ট জেএস এর জটিলতা এবং রিফ্যাক্টরিং পরিচালনা করবেন?
  • মডেলাইজেশন এবং দল জুড়ে কাজ বিতরণ?
  • এমভিসি / এমভিপি ইত্যাদির মতো ক্লায়েন্ট-পার্শ্ব নিদর্শনগুলির প্রয়োগ, প্রয়োগকরণ এবং পরীক্ষার ব্যবস্থা

তাহলে, আমাদের ভারী-জাভাস্ক্রিপ্ট এবং এইচটিএমএল 5 ভবিষ্যতে উদ্ভুত প্রবণতাগুলি কী কী?

ধন্যবাদ!


জিমব্রা ডেস্কটপ পরিবেশ অনুকরণ করতে ক্লায়েন্ট সাইড জেএসের উপর প্রচুর নির্ভর করে।
ফ্রগস্টায়ার 78

ধন্যবাদ। আপনি কীভাবে জানেন যে তারা কীভাবে তাদের জেএস বিকাশ করে? হাতে তৈরি, বা উচ্চ স্তরের সরঞ্জামিং?
ফিল ককফিল্ড

অনুরূপ প্রশ্নের উত্তরের বিকল্পগুলি সংক্ষিপ্ত বিবরণগুলি চমত্কারভাবে দেখায়
ভিক্টর সোরোকিন

1
Google+ হ'ল আমি বিশ্বাস করি
জিডাব্লুটিটির

খুব খারাপ এই প্রশ্নটি বন্ধ ছিল :( ... আইএমএইচও এটি আবার খোলার উচিত
ডাগলিনিস

উত্তর:


6

আমি যে ওয়েব অ্যাপ্লিকেশনগুলি দেখি (এবং যে ওয়েব ডেভসগুলির সাথে আমি কথা বলেছিলাম) বেশিরভাগ যারা এই দিকে এগিয়ে চলেছে তারা jQuery কে তাদের বেস হিসাবে ব্যবহার করছে।

জিডাব্লুটিটির (এবং একই জাতীয় বহু-স্তরের ভাষাগুলির) পেছনের পুরো যুক্তিটি হ'ল জাভা স্ক্রিপ্টটি "রিয়েল প্রোগ্রামারগুলি" ব্যবহারের জন্য খুব ফ্লেইক / খুব ভঙ্গুর / খুব পরিবর্তনযোগ্য। তবে আপনার যদি ফ্লেকি / ভঙ্গুর / পরিবর্তনযোগ্য বিটগুলি পরিচালনা করে এমন একটি কাঠামো থাকে তবে জটিলতার অতিরিক্ত স্তরটি যুক্ত করার কোনও কারণ নেই।

শুধুমাত্র আমার অভিমত…


আমি সন্দেহ করি যে কোনও ফ্রেমওয়ার্ক জাভাস্ক্রিপ্টের "ভঙ্গুরতা" বের করতে পারে। এটি গতিশীল প্রকৃতি ধারাবাহিকতা নিশ্চিত করা এবং রানটাইম ত্রুটির প্রবণতাটিকে খুব কঠিন করে তোলে। এটি পর্যাপ্তরূপে যে একটি জসন বৈশিষ্ট্যটি কোথাও নতুন নামকরণ করা হয়েছিল এবং জিনিসগুলি ভাঙ্গার জন্য পুরোপুরি পুনরায় সংবেদন করা হয়নি। ... এটি সাধারণ ছোট স্ক্রিপ্টগুলির সাথে সমস্যা নয়, তবে হাজার হাজার এলওসি সহ জটিল আরআইএতে এটি দ্রুত ঘটতে পারে এবং দ্রুত অলক্ষিত হয়। কোনও কাঠামো তা এড়াতে সক্ষম নয়।
ডাগলিনিস

5

আমি বলব জিডব্লিউটি ঝুঁকিপূর্ণ। এটি ব্যবহার করার সিদ্ধান্ত নেওয়ার পরে আপনি এটি আটকে গেছেন। মূলত এর অর্থ হ'ল আপনি নিজের মার্কআপ, ডিওএম এবং সিএসএসের কিছু দিককে কার্যকর করার পরিবেশ হিসাবে বিবেচনা করছেন। আপনার ক্লায়েন্ট কোডটি আরও পরিশীলিত হওয়ার সাথে সাথে GWT এর সাথে ম্যানুয়ালি লিখিত জাভাস্ক্রিপ্ট মিশানো সত্যিই শক্ত হয়ে উঠছে। জিডব্লিউটি এর স্থানীয় পদ্ধতি রয়েছে তবে এটি সম্ভাব্য প্রয়োগের ক্ষেত্রে যথেষ্ট সীমিত। এটি একটি বড় বাণিজ্য বন্ধ এবং এটি একটি বড় বাজি।

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

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

আমাদের বর্তমান প্রকল্পে আমরা স্ট্রিপস ব্যবহার করি - একটি নিম্ন স্তরের অ্যাকশন-ভিত্তিক কাঠামো - এবং ক্লায়েন্টের পাশে JQuery। আপনি একবারে ধাঁধাটির সমস্ত টুকরো স্পষ্টভাবে দেখলে অ্যাজাক্স করা খুব সহজ: এখানে আপনার সার্ভার-সাইড কোড যা ডেটাতে কাজ করে। এখানে আপনার ক্লায়েন্ট-সাইড কোড - ডেটা পুনরুদ্ধারের জন্য এবং কোনও পৃষ্ঠাতে জিনিসগুলি ঘটানোর জন্য। এখানে আপনার সিএসএস, এখানে আপনার মার্কআপ, এখানে আপনার টেম্পলেটিং - সবকিছু পরিষ্কার এবং ডিকোপলড। সহজেই এক্সটেনসেবল, হ্যাকযোগ্য, টিউনেবল এবং ডিবাগযোগ্য। আমি এটা ভালোবাসি.

গতি এবং সরলতার প্রতি এর মনোভাবের সাথে আমি জিকুয়েরিকে পছন্দ করি। আমি মডুলারালিটি এবং ব্যাপক উইজেটের জন্য YUI3 পছন্দ করি। ব্রাউজারগুলিতে আমাকে ধারাবাহিকতা দেওয়ার জন্য আমি YUI CSS পছন্দ করি। আমি গুড পার্টসের জন্য জাভাস্ক্রিপ্ট পছন্দ করি। আমাকে কাজ শেষ করার জন্য আমি জাভা পছন্দ করি।

শুধু KISS, এবং আপনি ভাল থাকবেন!


2
এবং বিটিডাব্লু, গুগল জিমেইলের জন্য জিডব্লিউটি ব্যবহার করে না - তারা তাদের বন্ধের লাইব্রেরি ব্যবহার করে।
অ্যান্ড্রু Андрей Листочкин

1
GWT এর আশেপাশের ঝুঁকিগুলির বিশ্লেষণ এবং সাধারণভাবে উচ্চ স্তরের ভাষা থেকে সংকলন করে সত্যই প্রশংসা করুন।
ফিল ককফিল্ড

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

3

এগুলি আমি "একক পৃষ্ঠার অ্যাপ্লিকেশনগুলি" বলে শুনেছি।

এটি একটি নতুন পরিবেশ এবং নিয়মগুলি এখনও সম্পূর্ণ লিখিত হয় নি। আমি গত বছর (২০১০) তুলনামূলকভাবে বড় একক-পৃষ্ঠার অ্যাপ্লিকেশনটিতে কাজ করেছি এবং এগুলি আমাদের ব্যবহার করা সরঞ্জাম।

এর শেষ প্রান্তটি ছিল জাভা, একটি জেএসওএন পরিষেবা সরবরাহ করার জন্য সার্লেটলেটগুলি ব্যবহার করা হয়েছিল, যা পৃষ্ঠাটি শেষ পর্যন্ত প্রস্তুত আদেশ জমা দেওয়ার জন্য ব্যবহৃত হত। এই পরিষেবাটি কিছু বৈধতা পদক্ষেপ এবং মূল্য নির্ধারণের জন্যও ব্যবহৃত হয়েছিল।

সম্মুখ-প্রান্তের কোডটি ছিল জাভাস্ক্রিপ্ট। আমরা পৃষ্ঠা উপাদানগুলির ম্যানিপুলেশন করতে jQuery ব্যবহার করেছি , টেম্প্লেটিংয়ের জন্য খাঁটি এবং মডিউলগুলিতে কোডটি ভাঙার জন্য প্রয়োজনীয় Js ব্যবহার করেছি। (প্রয়োজনীয় জেদের বিল্ড সরঞ্জামটি আরও অনুকূল ডাউনলোডগুলি সরবরাহ করতে ব্যবহৃত হয়েছিল))

আমরা qUnit ব্যবহার করে আমাদের পরীক্ষাগুলি লিখেছি এবং একটি jUnit পরীক্ষা ছিল যা প্রতিটি qUnit পরীক্ষা চালাতে htmlunit ব্যবহার করে , তারপরে ফলাফলের জন্য আউটপুট স্ক্র্যাপ করে, এবং QUnit পাস / ব্যর্থ স্থিতির উপর ভিত্তি করে পাস বা ব্যর্থ হয়। এগুলি পিছনের প্রান্তের জন্য আমাদের জুনিট পরীক্ষায় যুক্ত হয়েছিল এবং হাডসন / জেনকিন্স ব্যবহার করে আমাদের সিআই-তে গড়িয়ে পড়ে ।


2

আমি এক্সট্রা জেএস এর শীর্ষে নির্মিত এমন একটি অ্যাপে কাজ করি। অ্যাপটি নিয়মিতভাবে সংগঠিত হয়েছে। অতিরিক্ত মডিউলগুলি স্ব-অন্তর্ভুক্ত উপাদানগুলি হিসাবে প্রয়োগ করা হয় যা এক্সট উপাদান উপাদানসমূহের শ্রেণিবিন্যাস থেকে সরিয়ে ফেলা হলে তারা নিজের পরে পরিষ্কার হয়ে যায়। অন-ডিমান্ড লোডারগুলি প্রয়োজনের ঠিক পূর্বে অতিরিক্ত উপাদানগুলি লোড করে (এক জেএস ফাইল = একটি উপাদান)।

আমি খুঁজে পেয়েছি যে এই পদ্ধতির স্কেল করা খুব কঠিন নয়। আমি যে সত্যিকারের সীমাবদ্ধতা চালিয়েছি তা হ'ল আইই একই সময়ে গাছটিতে অনেকগুলি ডম উপাদান থাকার সাথে সম্পর্কিত। সমাধানটি হ'ল কৌশলগতভাবে অ্যাপ্লিকেশনটির লুকানো অংশগুলি আনলোড করা। সমস্ত ডিওএম ম্যানিপুলেশন অতিরিক্ত উপাদানগুলির শ্রেণিবিন্যাসের মাধ্যমে ঘটে বলে, ডিওএম প্রায় সম্পূর্ণ বিমূর্ত হয়ে যায় এবং বিকাশ সোজা থাকে।


এক্সচেজেএস দেখতে (ধন্যবাদ) সত্যই আকর্ষণীয়, এটি দেখে সেনচা নেটিভ জেএস এবং জিডাব্লুটি লিবস (এক্সট্রাডাব্লুটি) উভয় তৈরি করে। দেখে মনে হচ্ছে তারা বাজি ধরেছে।
ফিল ককফিল্ড

0

ব্যক্তিগতভাবে আমি মনে করি যে jQuery এর মতো ফ্রেমওয়ার্কগুলি কেবলমাত্র বিভিন্ন ব্রাউজারের বিভিন্ন প্রকারের সাথে ডিল করার জন্য নয়, তবে এই পার্থক্যগুলি দূরে সরিয়ে ফেলার জন্য অত্যাবশ্যক যাতে তারা কোডটিতে শব্দ যোগ না করে। জিডব্লিউটি, ওয়েবশ্যাপার এবং অন্যান্যগুলির মতো সরঞ্জামগুলি এটিকে আরও এগিয়ে নিয়ে যায় এবং অবশ্যই একটি জায়গা থাকে তবে আমি ভাবছি এটি বেশিরভাগ ক্ষেত্রে ইন্ডিয়ারেশন মাত্র একটি অতিরিক্ত স্তর।

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

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

আমি মনে করি যে পরবর্তী উদীয়মান প্রবণতাটি ইউনিট পরীক্ষার (এবং কোডটি যা ইউনিট-টেস্টেবল হয়) প্রবর্তন করবে। মাত্র একটি অমিত-ইউনিট পরীক্ষিত জাভাস্ক্রিপ্টের পরিমিত পরিমাণে একটি প্রকল্প শেষ করে আমি আশা করছি এটি শেষ হবে।


এখানে জাভাস্ক্রিপ্ট TDD- এ সম্পর্কে একটা চমৎকার পোষ্টের সুদ হতে পারে এর [ msdn.microsoft.com/en-us/scriptjunkie/ff452703 ]
jamiebarrow
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.