জাভাস্ক্রিপ্টে ইউআই 100% করা এবং কোনও API এর মাধ্যমে ডেটা সরবরাহ করা কি ভাল ধারণা?


19

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

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

সমস্যাটি হ'ল আমি এর আগে কখনও এটি করিনি এবং আমি কখনও কাউকে এটি করতে দেখিনি, তাই সমস্যাগুলি কী হবে তা আমি জানি না। বিশেষত, আমি উদ্বিগ্ন:

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

সর্বোপরি, এটি কি আমাদের সমস্যাগুলি সমাধান করবে, বা আরও খারাপ করবে? কেউ কি কখনও এই চেষ্টা করেছে, এবং ফলাফলগুলি কি হয়েছিল? এই ধরণের প্রচেষ্টা (jQuery এবং নৈতিক সমতুল্য একপাশে) সাহায্য করতে পারে এমন কোনও ফ্রেমওয়ার্ক রয়েছে?


So on the server side we would still have a basic layout simliar to our current ASPX markup, but that then would get sent to the client only once, and the Javascript part would take care of all the subsequent UI updates.আপনি এএসপি.এনইটি ঠিক কী তা বর্ণনা করছেন যা আমাকে বলে যে আপনি সম্ভবত এটি সঠিকভাবে ব্যবহার করছেন না। :) আপনার এএসপি.এনইটি অ্যাপ্লিকেশনগুলিতে যদি আপনি আপডেট প্যানেলের মধ্যে উপাদানগুলি রাখেন তবে এএসপি.নেট জাভাস্ক্রিপ্ট লাইব্রেরি সার্ভারের পক্ষ থেকে অ্যাসিনক্রোনাস পোস্টব্যাকগুলি সম্পাদন করবে এবং কেবলমাত্র আপনার নির্দিষ্ট করা উপাদানগুলি পুনরায় রেন্ডার করবে।
maple_shaft

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

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

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

1
@ ভিলাক্স- সি # /। নেট (কোনও কিছুই উইন্ডো ছাড়াও / খরচ) এর সাথে কিছুই নেই। এএসপি.এনইটি ওয়েবফোর্ম ফ্রেমওয়ার্কগুলি এটির শীর্ষে রাখছে যে ফোলা নিয়ে বড় সমস্যা রয়েছে। যেমন উল্লিখিত হিসাবে ন্যান্সি আপনি চেষ্টা করুন। নেট। তবে এটি পুরোপুরি বিষয়বস্তু নয়, এটি কেবলমাত্র একটি মন্তব্য ছিল যে আপনি যদি ওয়েবফর্ম ব্যবহার বন্ধ করে দেন তবে আপনি আরও ভাল ব্যবহার করবেন
রায়নস

উত্তর:


10

লিংকডিন তাদের মোবাইল সাইটের জন্য এটি করুন (দেখুন http://engineering.linkedin.com/nodejs/blazing-fast-nodejs-10-performance-tips-linkedin- মোবাইল অংশ 4) এবং এটি সম্ভবত তাদের জন্য খুব উপকারী হয়েছে একটি থেকে কর্মক্ষমতা অবস্থান

যাইহোক, আমি আপনাকে বিভিন্ন কারণে একই কাজটি করা এড়াতে পরামর্শ দেব।

প্রথমটি রক্ষণাবেক্ষণযোগ্যতা: সি # / এএসপিএনটি কারণ এটি একটি সার্ভার-সাইড ফ্রেমওয়ার্ক, ক্লায়েন্ট-স্বতন্ত্র, যদিও জাভাস্ক্রিপ্টটি নেই (এমনকি jQuery এর মতো ফ্রেমওয়ার্ক সহ আপনি 100% ক্রস-ব্রাউজারের সামঞ্জস্যতা পাচ্ছেন না) , ভবিষ্যত-প্রমাণীকরণ নয়)। আমি বলব গতিশীলের চেয়ে স্ট্যাটিক্যালি টাইপযুক্ত অ্যাপ্লিকেশনটির কার্যকারিতা যাচাই করা আরও সহজ, যা আপনি বড় আকারের সাইটগুলি তৈরি করছেন কিনা তা অবশ্যই আপনাকে অবশ্যই বিবেচনা করা উচিত।

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

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

আপনার বুলেটযুক্ত উদ্বেগ হিসাবে:

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

  • বিকাশের স্বাচ্ছন্দতা সত্যিই খুব একটা উদ্বেগের বিষয় নয়, আমার মতে, জেএস বিকাশের জন্য খুব ভাল সরঞ্জাম উপলব্ধ রয়েছে, কেবল নিজেকে ভিজুয়ালস্টুডিওতে বাক্স করবেন না কারণ আপনি এতে অভ্যস্ত! (উদাহরণস্বরূপ জেটব্রেইনস ওয়েবস্টর্ম চেষ্টা করুন)।

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

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

লোড টেস্ট এবং প্রোফাইলিং সরঞ্জামটি ব্যবহার করে অ্যাপ্লিকেশনটির একটি পারফরম্যান্স প্রোফাইল করার চেষ্টা করুন এবং দেখুন যে আপনি আরও বেশি মৌলিক সমাধানের জন্য প্রচুর সময় এবং প্রচেষ্টা ডুবানোর আগে আপনার বাধা কোথায় রয়েছে, আপনি সম্ভবত যা খুঁজে পেয়েছেন তাতে অবাক হবেন আপনার আস্তে দোষী!


না, যেমন আমি ডার্কনাইটস এর উত্তরে ইতিমধ্যে মন্তব্য করেছি, এটি একটি অভ্যন্তরীণ অ্যাপ্লিকেশন, এতে কোনও (ভাল, সামান্য) জনসমক্ষে অংশ নেই, তাই জাভাস্ক্রিপ্ট-নির্ভরতা ঠিক আছে। এবং আমি প্রোফাইলিং করেছি। সার্ভারের দিকটি ভাল। এটি ক্লায়েন্টের পক্ষ যা ভারী উত্পন্ন HTML এর অধীনে ঝাঁকিয়ে পড়েছে (যেমন আমি বলেছি, ASP.NET এর উত্পন্ন মার্কআপ বিরক্তিকর) এবং ডেভপ্রেস জাভাস্ক্রিপ্ট।
ভিলেক্স-

1
@ এডওডকক এএসপি.নেট ওয়েবসাইটগুলি তাদের প্রকৃতির জাভাস্ক্রিপ্ট দ্বারা চালিত। এটি কীভাবে ভিউস্টেট এবং পৃষ্ঠা উপাদান রেন্ডারিংয়ের অ্যাসিনক্রোনাস যোগাযোগ পরিচালনা করে।
maple_shaft

@ ভিলাক্স- এটি শক হিসাবে আসতে পারে তবে ডেটা গ্রিডের মতো নিয়ন্ত্রণগুলি অত্যন্ত জটিল। সম্ভবত আপনার একক পৃষ্ঠায় অনেকগুলি উপাদান রয়েছে?
maple_shaft

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

1
@ ম্যাপেল_শ্যাফ্ট - বা আরও সুনির্দিষ্টভাবে ফ্লেক্স, যা (যেমন আমি এটি বুঝতে পারি) ঠিক ঠিক একই উদ্দেশ্যে ফ্ল্যাশের শীর্ষে নির্মিত। এটি অন্য একটি ধারণা যা আমি কিছু সময়ের জন্য চেষ্টা করছি। তবে ... আমি যত তাড়াতাড়ি অন্যের কাছে এটি উল্লেখ করার চেষ্টা করেছি, আমি কেবল নেতিবাচক প্রতিক্রিয়া পেয়েছি, তাই আমি এটিকে টানতে ভাবতে পারি না। এটি আমাদের সকলেরও সম্পূর্ণ নতুন কিছু শিখতে হবে।
ভিলেক্স-

8

আপনি যদি সেই পথে যেতে চান তবে এক্সটجےএস ব্যবহার করুন , চাকাটি পুনরায় উদ্ভাবন করবেন না। তবে প্রস্তুত থাকুন, এর অর্থ একটি সম্পূর্ণ দৃষ্টান্তের পরিবর্তন। আপনার এইচটিএমএল দক্ষতা প্রায় অচল। AJAX সর্বত্র, সার্ভারটি বেশিরভাগই একটি AJAX API সরবরাহ করে। আপনি আগের চেয়ে অনেক বেশি জাভাস্ক্রিপ্ট লিখবেন, সুতরাং জাভাস্ক্রিপ্টের সাথে আপনি সত্যিই ফিট আছেন তা নিশ্চিত হয়ে নিন।


1
আমি জাভাস্ক্রিপ্ট সঙ্গে খুব আরামদায়ক। আমি জানি অন্য কিছু লোক যদিও তা নয়।
ভিলেক্স-

2
আমি আগের কাজটিতে বেশ কয়েক বছর ধরে এটি করেছি। ExtJS খুব সুন্দর এবং আপনি এটি দিয়ে একটি বিশাল পরিমাণে করতে পারেন।
জাচারি কে

@ জাচার্য - এটি কীভাবে জটিল আকারগুলিতে সম্পাদন করবে? আমি যেমন লিখেছি সেখানে বেশ কয়েকটি গ্রিডভিউ, ট্যাবপ্যানেলস ইত্যাদি রয়েছে?
ভিলেক্স-

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

@ জাচার্য - নিজেকে পুনরাবৃত্তি করতে খুব অলস। এড উডককের উত্তর সম্পর্কে আমার মন্তব্য পড়ুন। আমি এটিকে সহজ করে তুলতে পারি না। :(
ভিলেক্স-

8

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

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

  • কর্মক্ষমতা

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

  • উন্নয়নের স্বাচ্ছন্দ্য

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

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

  • নিরাপত্তা

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


আমি আশা করি আপনার প্রকৃত অভিজ্ঞতার কারণে আমি +1 এর চেয়েও বেশি কিছু করতে পারলাম!
ভিলক্স-

4

যদি আপনি স্ক্রিপ্টবিহীন ব্যবহারকারীদের সমর্থন না করার সামর্থ্য রাখেন এবং অনুসন্ধান ইঞ্জিনগুলি আপনাকে উদ্বেগ না করে, তবে হ্যাঁ, এটি একটি নিখুঁতভাবে কার্যকর approach এখানে উপকার ও বিপরীতে একটি সংক্ষিপ্ত রান্ডাউন রয়েছে:

পেশাদাররা:

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

কনস:

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

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


1

হ্যাঁ আপনি পারবেন কিন্তু ..

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

এইভাবে আমি বেশিরভাগ অ্যাপ্লিকেশন "হাইজ্যাক্স" শৈলী তৈরি করি।


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

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

3
@ আরখ আপনি একজন প্রোগ্রামার হিসাবে ভাবছেন যা ব্যবহারকারী নয়, আমরা বিশাল গ্রন্থে ছোট সংখ্যালঘু হয়ে থাকি। এটিকে "জেএস ​​বা জেএসে নয়" রূপান্তরিত করা যাক? কারণ এটি এই অংশগুলির চারপাশে মৃত্যুর জন্য করা হয়েছিল :)
ডার্কনাইট

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

1
ম্যাপেল_শ্যাফ্ট আমি আপনাকে পছন্দ করি, তাই আমি এটিকে সুন্দরভাবে বলব, সেই পথটি চালিয়ে দেওয়া যাক :) ধন্যবাদ!
অন্ধকার রাত

1

আমার সাইটটি এখনও শৈশবকালে রয়েছে তবে আমার জন্য এখনও 100% js ইউআই ঠিক আছে। সামনের প্রান্তে উপস্থিত একমাত্র সার্ভার যুক্তি হ'ল মডেল ম্যাপিং এবং এজাক্স ইউআরএল। সার্ভারের ইউআই সম্পর্কে মোটেই কোনও জ্ঞান নেই, যা আমার কাছে বজায় রাখা খুব সহজ। আপনি যদি আগ্রহী হন তবে আপনি আমার সাইটটি চেকআউট করতে পারেন যা এক্সটজেএস http://coffeedig.com / কফি / এ লেখা আছে । আমার সাইটে সত্যিকারের কোনও সুরক্ষা সমস্যা নেই তবে ক্লায়েন্ট সাধারণ ব্যবহারকারীকে সাধারণ বৈধকরণ দ্বারা সহায়তা করে। আমি জানি যে কোনও দূষিত ব্যবহারকারী সত্যই যে কোনও এজাক্স সার্ভারে প্রেরণ করতে পারে তাই সার্ভারে সমস্ত "সুরক্ষা" যুক্তি সম্পন্ন হয়।

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

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