জেএসএক্স কেন ভাল, যখন জেএসপি স্ক্রিপ্টলেট খারাপ?


21

React.js উপাদান এবং উপাদানগুলির গাছ তৈরির জন্য একটি এক্সএইচটিএমএলের মতো সিনট্যাক্স হিসাবে জেএসএক্স সরবরাহ করে। জেএসএক্স জাভাস্ক্রিপ্টে সংকলন করে এবং সঠিকভাবে জেএসএক্সে লুপ বা শর্তসাপেক্ষ সরবরাহ করার পরিবর্তে আপনি সরাসরি জাভাস্ক্রিপ্ট ব্যবহার করেন:

<ul>
  {list.map((item) =>
    <li>{item}</li>
  )}
</ul>

আমি এখনও যা ব্যাখ্যা করতে সক্ষম হইনি তা হ'ল, জেএসপিতে অনুমান কনস্ট্রাক্টগুলি খারাপ হিসাবে বিবেচনা করা হয় কেন এটি ভাল বলে বিবেচিত হয়?

জেএসপিতে এরকম কিছু

<ul>
   <% for (item in list) { %>
     <li>${item}</li>
   <% } %>
</ul>

এর মতো ট্যাগগুলির সাথে সমাধানযোগ্য একটি পাঠযোগ্যতা সমস্যা হিসাবে বিবেচিত <c:forEach>। জেএসটিএল ট্যাগগুলির পিছনে যুক্তিগুলিও মনে হয় যে তারা জেএসএক্সের জন্য প্রয়োগ করতে পারে:

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

আমি কেন জেএসএক্সের চেয়ে আলাদা সেগুলি চিন্তা করতে পারি:

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

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

আমি আর কিছু মিস করছি?


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

উত্তর:


11

মূলত, জেএসএক্স তৈরি করা লোকেরা জেএসপিকে অপছন্দকারী ব্যক্তির সাথে দ্বিমত পোষণ করেছে। তাদের আলোচনা এখানে দেখুন: আমরা কেন প্রতিক্রিয়া তৈরি করেছি? পাশাপাশি ডেটা প্রদর্শন করা হয়

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

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

জেএসএক্সের মতো কিছু এবং জেএসপির মতো কিছুতে প্রাথমিক পার্থক্য হ'ল জেএসপি একটি টেম্পলেট ভাষা যা যুক্তির জন্য কিছুটা জাভা অন্তর্ভুক্ত করে। এইচটিএমএল এর টুকরোগুলি তৈরি করা সহজ করার জন্য জেএসএক্স একটি সিনট্যাক্স এক্সটেনশান সহ জাভাস্ক্রিপ্ট। জোর আলাদা। যেহেতু জেএসএক্স এই পদ্ধতিকে আলিঙ্গন করে, এটি জেএসপি বা বন্ধুবান্ধব দ্বারা তৈরি করা একটি সুন্দর, ক্লিনার পদ্ধতির সমাপ্তি ঘটে।

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


আমি renderঅন্য উপাদান যুক্তি হিসাবে একই জায়গায় ফাংশন encapsulate সম্পর্কে অভিযোগ করছি না । আমি অন্যান্য প্রকারের কোডের সাথে উপাদান উত্পন্নকরণের মিশ্রণের পাঠ্যতার সাথে কঠোরভাবে উদ্বিগ্ন।
wrschneider

@Wrschneider, renderআপনার আদর্শ টেম্পলেট ভাষা মিশ্রিত করা কোডের ধরণের ক্ষেত্রে কীভাবে একটি প্রতিক্রিয়া ফাংশন আলাদা হয়?
উইনস্টন ইওয়ার্ট

3

প্রতিক্রিয়াটির বহিরাগত হিসাবে, আমি জেএসএক্সকে ফ্রেমওয়ার্কের দুর্গন্ধযুক্ত খুব ভিড়ের চিড়িয়াখানায় অন্য "ফ্রেমওয়ার্ক গন্ধ" হিসাবে দেখলাম। আমি এখনও নিশ্চিত নই যে এই ঘটনাটি নয়।

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

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


"দরকারী একটি কার্যক্ষম সংজ্ঞা হ'ল ..." এটি দুর্দান্ত পয়েন্ট। এবং হ্যাঁ জেএসএক্স আরও সমস্যাগুলি সমাধান করে তবে আমরা ভাবি। প্রতিক্রিয়া দেখার উপাদানটি জেএসএক্সের সাথে আরও সহজ এবং অভিব্যক্তিপূর্ণ। এটি অগভীর রেন্ডারিংয়ের সাথে একক পরীক্ষামূলক হতে পারে। আপনি যদি বলেন গন্ধ জেএসপির গন্ধ হতে পারে এবং এতে ত্রুটির সম্ভাবনা বেশি থাকে। এবং আমি agnest jsp না।
সাগর

দুঃখিত, তবে আমি দেখতে পাচ্ছি না কিভাবে এটি প্রশ্নের উত্তর দেয়।
sleske

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

1

সংক্ষেপে:

  • ফ্রন্ট-এন্ড বিকাশকারীরা স্ক্রিপ্টিং এবং টেম্প্লেটিং সম্পর্কে জানবেন বলে আশা করা যায়
  • জেএসএক্স এবং জেএসপি উভয়ই উদ্দীপক ভাষা
  • জাভাস্ক্রিপ্ট একটি স্ক্রিপ্টিং ভাষা
  • জাভা কোনও স্ক্রিপ্টিং ভাষা নয়

তথ্যসূত্র


0

আমি আপনার বর্ণনার উপর ভিত্তি করে জেএসএক্স ব্যবহার করি না, জেএসএক্স খণ্ডের কাজটি ডেটা উপস্থাপন করা হয়, এটি এমভিসি পার্লেন্সের একটি ভিউ উপাদান। জেএসএক্স টুকরা সম্ভবত তথ্য জানে বা যত্ন করে না যে কোথা থেকে ডেটা এসেছে যা আপনি চান তা।

একটি সুসংগঠিত জেএসপি পৃষ্ঠাতে আপনার উল্লেখ করার মতো কেবল জেএসটিএল নির্দেশাবলী থাকবে। জেএসটিএল নির্দেশাবলী কেবল আপনার জেএসপিগুলিকে সহজ করুন যাতে তারা স্কোপ থেকে আনা, শূন্যতা পরীক্ষা করা ইত্যাদি নিয়ে বিশৃঙ্খলা না করে It's

ঠিক জেএসএক্স খণ্ডের মতো; জেএসপির একমাত্র কাজটি হ'ল কোথা থেকে এসেছে তা চিন্তা না করে কীভাবে এটি প্রাপ্ত তথ্য উপস্থাপন করবেন তা নির্ধারণ করা।

সংক্ষেপে, আপনার ভিউ জেএসএক্স বা জেএসপি কিনা, আপনি যদি এটি সঠিকভাবে করছেন তবে আপনার দর্শনটি কেবল ডেটা উপস্থাপন করবে।

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


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

নির্দিষ্ট প্রশ্ন হ'ল কেন প্রতিক্রিয়া / জেএসএক্স লুপ / ​​শর্তসাপেক্ষে জাভাস্ক্রিপ্ট সিনট্যাক্স ব্যবহার করা ভাল জিনিস হিসাবে বিবেচনা করে যখন জেএসপি নেটিভ জাভা সিনট্যাক্স (স্ক্রিপ্টলেট) মুছে ফেলে।
wrschneider

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