একক পৃষ্ঠাগুলির অ্যাপ্লিকেশন তৈরি করতে জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ক [বন্ধ]


101

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


আমার প্রয়োজনীয়তা অনুসরণ করা হয়:

  • বিশ্রামের উপাত্তের স্তর (এমবার-ডেটার মতো)
  • এমভি * -structure
  • গতিশীল রুট
  • টেস্টিং-সমর্থন
  • কনভেনশন দ্বারা কোডিং
  • এসইও-সমর্থন
  • ব্রাউজার ইতিহাস-সাপোর্ট
  • ভাল (এপিআই-) ডকুমেন্টেশন
  • উত্পাদনের-প্রস্তুত
  • বাস সম্প্রদায়

মেরুদন্ড

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

জ্বলন্ত অঙ্গার

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

কৌণিক

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

ব্যাটম্যান এবং উল্কা

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

নকআউট , ক্যানজেএস এবং মেরুদণ্ড

আমি এই তিন প্রার্থীর আরও গভীরে যাইনি। সম্ভবত এটি আমার পরবর্তী পদক্ষেপ হবে।


এখন আমার প্রশ্নগুলি:

  • আমি কি কোনও ভাল এসপিএ-ফ্রেমওয়ার্ক মিস করছি?
  • আপনি কোন কাঠামোর পরামর্শ / প্রস্তাব করবেন?
  • আপনি কি উল্লিখিত ফ্রেমওয়ার্কগুলি এড়াতে পারবেন?
  • বড় এসপি অ্যাপ্লিকেশনগুলিতে আপনার অভিজ্ঞতা কী?

পিএস: আমি স্টিভেন অ্যান্ডারসনের (নকআউট.জেএস-এর মূল বিকাশকারী) "জেএসসের সিংহাসন"-কনফারেন্স (২০১২ থেকে) এবং সাধারণভাবে জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ক সম্পর্কে একটি দুর্দান্ত ব্লগপোস্ট সুপারিশ করতে চাই ।

পিএস: হ্যাঁ, আমি জানি এসও নিয়ে ইতিমধ্যে কিছু প্রশ্ন রয়েছে। তবে যেহেতু এসপিএগুলির বিকাশ এত দ্রুত এবং দ্রুত, তাদের বেশিরভাগ ইতিমধ্যে পুরানো।


নকআউট-ভিত্তিক এসপিএ ফ্রেমওয়ার্কটি চেকআউট করুন আমি স্রেফ ওপেন-সোর্সড: নকআউট-স্পা github.com/onlyurei/knockout-spa
কেবলমাত্র

উত্তর:


81

আমাকে সম্প্রতি একটি প্রকল্পের একটি জাভাস্ক্রিপ্ট এসপিএ কাঠামোর বিষয়ে সিদ্ধান্ত নিতে হয়েছিল।

  • জ্বলন্ত অঙ্গার

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

  • মেরুদন্ড

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

  • নকআউট

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

  • কৌণিক

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

  • ব্যাটম্যান , উল্কা , ক্যানজেএস , মেরুদণ্ড

    এগুলির কোনওটিতে খুব ঘনিষ্ঠভাবে তাকাননি। যদিও আমি জানি স্পাইন স্পষ্ট কন্ট্রোলার অবজেক্টগুলির সাথে ব্যাকবোনগুলির অনুরূপ কাঠামো এবং কফি স্ক্রিপ্টে এটি লিখিত।

  • উত্তরভাষ

    যেমনটি আমি উল্লেখ করেছি, আমরা নকআউটটি ব্যবহার করে শেষ করেছি কারণ আমাদের প্রকল্পের জন্য ভিউ বাইন্ডিংয়ের উপর দৃষ্টি নিবদ্ধ করা আরও গুরুত্বপূর্ণ ছিল। আমরা ব্যবহার শেষ পর্যন্ত RequireJS modularization জন্য সংযোগস্থলে এবং Hasher রাউটিং এবং ইতিহাস হ্যান্ডেলের জন্য জুঁই পরীক্ষা সেইসাথে জন্য JQuery , টুইটার বুটস্ট্র্যাপ , এবং Underscore.js (এবং সম্ভবত আরো লাইব্রেরি আমি মুহূর্তে বিস্মরণ করছি)।

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


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

ক্রিস্টোফার উইল ধন্যবাদ! 1.) অনেকটা ব্যাকবোন যেমন আপনার কাছে বাইন্ডিং দেখার জন্য তা ছেড়ে দেয় তেমনই নকআউট আপনার কাছে রেস্ট-> মডেল বাইন্ডিংয়ের জন্য ছেড়ে দেয়। সেখানে ডকুমেন্টেশনে কিছু উদাহরণ - knockoutjs.com/documentation/json-data.html অথবা আপনি দাঁড়া এর REST-> মডেল জনসংখ্যা একত্রিত করতে KnockBack ব্যবহার করতে পারেন।
নট

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

3.) RequireJS হ'ল যা আপনাকে এটি করতে দেয়।
নট

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

8

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

আপনি পছন্দ করবেন এমন প্রধান বৈশিষ্ট্য:

  1. শিক্ষিত সম্প্রদায় এবং একটি দল যা একটি নিখুঁত নকশার ধরণ নিয়ে আসে। দুর্দান্ত কনভেনশন এবং মডুলার / অবজেক্ট-ভিত্তিক আর্কিটেকচার। ক্রসব্রোজার প্রোগ্রামিং মনোভাব সহ :)
  2. এমভি * কাঠামো। বাহ্যিক .htm টেম্পলেটগুলির সাথে এবং উত্পাদনের জন্য ইউআই উইজেটগুলি তৈরি করুন, আপনার সমস্ত জাভাস্ক্রিপ্ট এবং টেমপ্লেটগুলি একক, ক্ষুদ্র ও ছোট .js তে তৈরি করুন
  3. উত্তরাধিকার সহ ক্লাস নির্মাণ। সম্পত্তি সেটার, ফাংশন সরঞ্জাম অনেক।
  4. পাব / সাব মেকানিজম (ডোজের নামযুক্ত বিষয়)
  5. বৈধতা ফর্ম নিয়ন্ত্রণ, ডায়ালগগুলি / সরঞ্জামদণ্ডগুলি থেকে ভারী বৈশিষ্ট্যযুক্ত, অত্যন্ত স্বনির্ধারিত (তবে লাইটওয়েট) চার্ট এবং ডেটা-গ্রিড সমাধান পর্যন্ত প্রচুর ইউআই নিয়ন্ত্রণ।
  6. ডিওএইচ নামে একটি ভাল ইউনিট পরীক্ষা ব্যবস্থা। মাউস / কীবোর্ড ক্রিয়াকে পুনরুত্পাদন করার জন্য এটিতে একটি রোবট রয়েছে।
  7. অনুসন্ধানের একটি সরঞ্জাম (JQuery এর মতো) সমস্ত jquery বৈশিষ্ট্য এবং এমনকি এটির অনেকগুলি প্লাগইন সহ নোডলিস্টের নামকরণ করেছে।
  8. এবং ভাল কিন্তু সম্পূর্ণ অংশ না। এটি আপনার আরএসটি পরিষেবাগুলির সাথে ব্যবহার করার জন্য একটি জসনরেস্ট মডিউল রয়েছে। এটি একটি সহজ সরঞ্জাম তবে এতে অনেকগুলি বৈশিষ্ট্যের অভাব রয়েছে।

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

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


হ্যালো! আপনি কি এখন ডোজো ব্যবহার করেন? আপনি কি ডোজো সম্পর্কে ব্লগ আছে?
ডুনাভস্কি ম্যাক্সিম

ওহে! হ্যাঁ আমরা এখনও এটি একই পণ্যের জন্য ব্যবহার করি এবং আমরা এটি বজায় রাখি। আভ্যন্তরীণ কাঠামোটি ডোজোর উপরে লেখা থাকে, এবং আমরা প্রতিদিন এটি যুক্ত করছি .. নাহ এর জন্য আমার কোনও ব্লগ নেই। আপনি যদি এটি দিয়ে শুরু করতে চলেছেন তবে এটি আজকাল একটি পুরানো সরঞ্জাম হিসাবে বিবেচিত। তারা এখনও ডোজো 2.0 তে কাজ করছে তবে আপাতত অন্য বিকল্পগুলি ব্যবহার করা আরও ভাল। আমরা তালিকার শীর্ষে প্রতিক্রিয়া / কৌণিক আছে।
ইউনিকর্নিস্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.