একক পৃষ্ঠার ওয়েব অ্যাপ্লিকেশন তৈরির সুবিধা এবং অসুবিধা [বন্ধ]


52

আমি যে পার্শ্ব প্রকল্পে কাজ করছি তার জন্য ধারণা পর্বের একটি প্রোটোটাইপিং / প্রমাণের সমাপ্তির কাছাকাছি এসেছি এবং আরও কিছু বৃহত্তর স্কেল অ্যাপ্লিকেশন ডিজাইনের সিদ্ধান্ত নেওয়ার চেষ্টা করছি trying অ্যাপ্লিকেশনটি একটি প্রজেক্ট ম্যানেজমেন্ট সিস্টেম যা চতুর বিকাশ প্রক্রিয়াটির দিকে আরও উপযুক্ত করে তোলে। আমার যে সিদ্ধান্ত নিতে হবে তার মধ্যে একটি হ'ল .তিহ্যবাহী মাল্টি-পেজ অ্যাপ্লিকেশন বা একক পৃষ্ঠার অ্যাপ্লিকেশন নিয়ে যাওয়া বা না করা।

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

সুবিধাদি

  • সমস্ত ডেটা কিছু প্রকারের API এর মাধ্যমে উপলব্ধ থাকতে হবে - এটি আমার ব্যবহারের ক্ষেত্রে একটি বড় সুবিধা কারণ আমি যেভাবেই আমার অ্যাপ্লিকেশনটিতে একটি API রাখতে চাই। এখনই আমার প্রায় 60-70% ডেটা পেতে / আপডেট করার কলগুলি একটি REST এপিআই এর মাধ্যমে করা হয়। একক পৃষ্ঠার অ্যাপ্লিকেশনটি করা আমাকে আমার আরএসটি এপিআই আরও ভালভাবে পরীক্ষা করার অনুমতি দেবে কারণ অ্যাপ্লিকেশন নিজেই এটি ব্যবহার করবে। এর অর্থ হ'ল অ্যাপ্লিকেশনটি বাড়ার সাথে সাথে এপিআই নিজেই বাড়বে যেহেতু অ্যাপ্লিকেশন এটি ব্যবহার করে; অ্যাপ্লিকেশনটিতে অ্যাড-অন হিসাবে API বজায় রাখার দরকার নেই।

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

অসুবিধেও

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

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

একক পৃষ্ঠার ওয়েব অ্যাপ্লিকেশনগুলির কিছু সুবিধা এবং অসুবিধাগুলি কী যা আমার প্রকল্পের জন্য কোন পথে যেতে হবে তা সিদ্ধান্ত নেওয়ার সময় আমার মনে রাখা উচিত?


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

: আপনি Chrome এর গাদা পরিদর্শক সঙ্গে মেমরি তথ্য ফাঁসের জানতে পারেন gent.ilcore.com/2011/08/finding-memory-leaks.html
Joeri Sebrechts

বাধ্যতামূলক xkcd.com/1309
পিটার বি

উত্তর:


17

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

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

আপনি নকআউট.জেএসও দেখতে চাইতে পারেন। এটি ব্যাকবোন থেকে ভাল কিনা তা আমি বলতে পারি না তবে এটি আপনার প্রকল্পের চেয়ে আরও ভাল ফিট করতে পারে।


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

7

অসুবিধাগুলি আমি প্রায়শই একক পৃষ্ঠা ওয়েব অ্যাপ্লিকেশনগুলির সাথে দেখতে পাই:

  • সাইটের নির্দিষ্ট অংশের সাথে লিঙ্ক করতে অক্ষমতা, প্রায়শই কেবল 1 টি প্রবেশ পয়েন্ট থাকে।
  • পিছনে এবং ফরোয়ার্ড বোতামগুলি নিষ্ক্রিয়
  • ট্যাবগুলির ব্যবহার সীমিত বা অ-অরক্ষিত।

(বিশেষত মোবাইল :)

  • লোড করতে খুব দীর্ঘ সময় নিন।
  • কিছুতেই কাজ করবেন না।
  • কোনও পৃষ্ঠা পুনরায় লোড করা যায় না, হঠাৎ নেটওয়ার্কের ক্ষতি হ'ল আপনাকে সাইটের শুরুতে ফিরিয়ে নিয়ে যায়।

এগুলির সবগুলিই চারপাশে কাজ করা যায় তবে আমি যা দেখেছি তা থেকে বেশিরভাগ সাইট বিল্ডাররা তা করেন না।


9
1,2 এবং 6 মূলত একই সমস্যার সিম্ফোমস। যেটি নির্মাতা ইতিহাসের API / হ্যাশ লিঙ্ক ব্যবহার করে না।
মার্টিন হ্যানসেন

11
এই উত্তরটি পুরানো, বেশিরভাগ একক পৃষ্ঠার অ্যাপ্লিকেশন ফ্রেমওয়ার্কগুলির উপরের সমস্যাগুলি মোকাবেলা করার উপায় রয়েছে
লুই

@ লুইস প্রযুক্তি থাকাকালীন, প্রায়শই এটি ব্যবহার করা হয় না।
পিটার বি

5

একটি অতি-গুরুত্বপূর্ণ ক্লায়েন্ট রয়েছে যা কখনই জাভাস্ক্রিপ্ট চালায় না: গুগল ক্রলার (2012 হিসাবে) । (বিং এর জেএসও চালায় না, আমি মনে করি।)

আপনাকে প্রতিটি পৃষ্ঠার যুক্তিসঙ্গত অ-আজেএক্স সংস্করণ সরবরাহ করতে হবে যা সূচীকরণ করা প্রয়োজন, বা এমন পৃষ্ঠার লিঙ্ক যা সূচীকরণ করা প্রয়োজন।

আপনার সাইটটি যদি ছোট হয়, তবে আপনি কেবলমাত্র বোটকে ইনডেক্স করার জন্য কয়েকটি পৃষ্ঠার খুব প্রাথমিক সংস্করণ সরবরাহ করতে পারেন।

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

এর মধ্যে যদি না হয় তবে আপনি সম্ভবত একাধিক পৃষ্ঠার সাইট শুরু থেকে উন্নত করে কেবল এজেএক্স আপডেট প্রদান করবেন যেখানে এটি পৃষ্ঠার 'সাধারণ উদ্দেশ্য' পরিবর্তন করে না।


4
গুগলবোট এখন কিছু জাভাস্ক্রিপ্ট পড়ে এবং চালিত করে। দেখুন googlewebmastercentral.blogspot.com/2011/11/...
jfrankcarr

2
এই নির্দিষ্ট প্রশ্নের জন্য, এটি একটি প্রকল্প পরিচালনা অ্যাপ্লিকেশন। সম্ভবত কোনও এসইও-যোগ্য সাইট নয়।
জর্দান

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


3

কোডের সদৃশ - উদাহরণস্বরূপ, মডেল কোড। আমি সার্ভার সাইডে (ক্ষেত্রে পিএইচপি) এবং জাভাস্ক্রিপ্টে সার্ভার সাইডে দুটি মডেল তৈরি করতে যাচ্ছি।

আপনি পিএইচপি বিশ্বে রয়েছেন তবে জাভাস্ক্রিপ্ট ডাব্লুসিএফ প্রক্সিগুলি স্বয়ংক্রিয়ভাবে তৈরি করার জন্য .NET বিশ্বে কোড প্রজন্মের কৌশল রয়েছে। এখানে দেখুন

আমি জানি না যে কোনও পিএইচপি অ্যাপ্লিকেশনটিতে জাভাস্ক্রিপ্টে আপনার দূরবর্তী বস্তুগুলি নিজেকে তৈরি করতে না পারার জন্য কী বিকল্পগুলি পাওয়া যেতে পারে তবে এটি নেট বিকল্পের মধ্যে একক পৃষ্ঠাগুলি লেখার জন্য একটি বিকল্প।


0

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

সংক্ষেপে:

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

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