আমার কি জেএসলিন্ট বা জেএসহিন্ট জাভাস্ক্রিপ্ট বৈধতা ব্যবহার করা উচিত? [বন্ধ]


454

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

আমি এখন জুড়ে আসতে JSHint , এর একটি কাঁটাচামচ JSLint
সুতরাং আমি ওয়েব অ্যাপ্লিকেশনগুলির জন্য ভাবছি, যা খুব বেশি জাভাস্ক্রিপ্ট চালিত হয়েছিল, যা এর বিরুদ্ধে কাজ করার জন্য সবচেয়ে ভাল বা সর্বাধিক প্রযোজ্য বৈধতা সরঞ্জাম:

  • জেএসলিন্ট নাকি জেএসহিন্ট?

আমি এখনই কোনও বৈধতা প্রক্রিয়া এবং এগিয়ে চলার বিষয়ে সিদ্ধান্ত নিতে চাই, এটি ক্লায়েন্টের পক্ষের বৈধতার জন্য ব্যবহার করুন।

এবং jshint এবং jslint মধ্যে পার্থক্য? দয়া করে একক জাভাস্ক্রিপ্ট উদাহরণে ব্যাখ্যা করুন।

লিঙ্ক:

  1. jshint - http://www.jshint.com/

  2. jslint - http://jslint.com/


4
কীভাবে ইএসলিন্ট ? যদিও এটি অসম্পূর্ণ: Combine this with the previous 'var' statement-> Do not mix 'require' and other declarations, প্যারাডক্স।
nyuszika7h



জেএস বিকাশকারী নয়। তবে আমি আমাদের কোড পর্যালোচনা প্রক্রিয়া চলাকালীন জেএসহিন্টকে খুব দরকারী বলে মনে করেছি। আমি এটি সুপারিশ।
চেতন বশীষ্ঠে

উত্তর:


156

[সম্পাদনা]
এই উত্তরটি সম্পাদনা করা হয়েছে। আমি নীচের মূল উত্তরটি প্রসঙ্গের জন্য রেখে দিচ্ছি (অন্যথায় মন্তব্যগুলি বোঝা যাবে না)।

এই প্রশ্নটি যখন প্রাথমিকভাবে জিজ্ঞাসা করা হয়েছিল, তখন জেএসলিন্ট জাভাস্ক্রিপ্টের প্রধান আবরণ সরঞ্জাম ছিল। জেএসিন্ট হ'ল জেএসলিন্টের নতুন কাঁটাচামচ, তবে এখনও মূল থেকে খুব বেশি দূরে সরে যায় নি।

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

আমার আসল উত্তরে আমি বলেছিলাম যে আপনার নিজের জেএসলিন্টের বিধিগুলিকে আঁকড়ে ধরতে বাধ্য করা উচিত নয়; আপনি যতক্ষণ বুঝতে পেরেছিলেন কেন এটি সতর্কতা ছুঁড়েছে, আপনি সতর্কতার সমাধান করার জন্য কোডটি পরিবর্তন করবেন কিনা সে সম্পর্কে আপনি নিজেরাই সিদ্ধান্ত নিতে পারেন।

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

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


[মূল উত্তর অনুসরণ করুন]

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

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

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


3
JsHint এর সেরা অংশটি হ'ল এতে jQuery গ্রহণ করার জন্য পতাকা রয়েছে এবং বিরক্তিকর / jslint হিসাবে কঠোর নয়। উদাহরণস্বরূপ: ঠিক আছে যেখানে for (i = 0; i < dontEnumsLength; i++)নিক্ষেপ Unexpected '++'। ইত্যাদি
রাফেলডিডিএল

2
দয়া করে, নিয়মগুলি উপেক্ষা করবেন না, এটি লিন্টার দিয়ে আপনি করতে পারেন এটি সবচেয়ে খারাপ। এটি সেটআপ করুন, বা আপনি এটি না করতে পারলে পরিবর্তন করুন। জেএসহিন্ট এবং জেএসসিএসের সমন্বয় চমত্কার
লেখকপ্রক্সি

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

1
এতক্ষণে দেখে মনে হচ্ছে ইএসলিন্টটি এয়ারবিএনবির মতো জনপ্রিয় কনফিগারেশনের পাশাপাশি ইন্ডাস্ট্রিকে পুরো দিকে এগিয়ে চলছে direction
জিঙ্গলেস্তুলা

369

টিএল; ডাঃ টেকওয়ে :

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

দীর্ঘ সংস্করণ :

কাঁটাচামচের পেছনের যুক্তি জাসিহিন্টের উপস্থিতি খুব ভালভাবে ব্যাখ্যা করেছে:

http://badassjs.com/post/3364925033/jshint-an-commune-driven-fork-of-jslint http://anton.kovalyov.net/2011/02/20/why-i-forked-jslint-to -jshint /

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

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

ক) বাক্সের বাইরে জেএসহিন্ট পাস করেছে - জেএসলিন্টকে ব্যর্থ করে

(function() {
  "use strict";
  var x=0, y=2;
  function add(val1, val2){
    return val1 + val2;
  }
  var z;
  for (var i=0; i<2; i++){
    z = add(y, x+i);
  }
})();

খ) জেএসহিন্ট এবং জেএসলিন্ট উভয় পাশ করে

(function () {
    "use strict";
    var x = 0, y = 2, i, z;
    function add(val1, val2) {
       return val1 + val2;
    }
    for (i = 0; i < 2; i += 1) {
        z = add(y, x + i);
    }
}());

ব্যক্তিগতভাবে আমি জেএসলিন্ট কোডটি দেখতে খুব সুন্দর দেখতে পেয়েছি এবং এর একমাত্র শক্ত বৈশিষ্ট্য যা আমি একমত না তা হ'ল একটি ফাংশন এবং লুপ var i = 0ঘোষণার জন্য একাধিক বর্ণের ঘৃণা এবং ফাংশন ঘোষণার জন্য কিছু হোয়াইটস্পেস বাস্তবায়ন are ।

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

অনেকগুলি ভাল গ্রন্থাগার লিন্টেবল নয়, যা আমার কাছে প্রমাণ করে যে জেএসলিন্টের কিছু কিছু "গুড কোড" এর 1 সংস্করণ (যা প্রকৃতপক্ষে ভাল কোড) কেবলমাত্র ধাক্কা দেওয়ার বিষয়ে the এই ধারণার সত্যতা রয়েছে। তবে তারপরে আবার একই লাইব্রেরিগুলি (বা অন্যান্য ভাল) সম্ভবত ইঙ্গিতযোগ্য নয়, তাই, স্পর্শ করুন é


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

67
@ লাইকোওলকোভস্কি জেএসলিন্টকে নিরুৎসাহিত করার for (var i = 0; ...; i++)কারণ এটি লুপটিকে নিজের মধ্যে অন্তর্ভুক্ত করে না । এর পরিধিটি iহ'ল ফাংশন। সিনট্যাক্সটি দেখে মনে হচ্ছে এটি একটি ব্লক স্কোপ তৈরি করছে, তবে এটি এমনটি নয় এবং এটি কম অভিজ্ঞ জাভাস্ক্রিপ্ট প্রোগ্রামার এবং একাধিক ভাষায় লেখার লোককে একটি ভেরিয়েবলের সুযোগকে ভুল বোঝার দিকে পরিচালিত করে এবং এর ফলে সূক্ষ্ম বাগগুলি হতে পারে। আমাদের মধ্যে অনেকগুলি (আমার অন্তর্ভুক্ত) এটি কীভাবে সমস্ত ঘোষণাকে শীর্ষে রাখার মতো দেখাচ্ছে তা পছন্দ করতে পারে না তবে এটি একটি ভাল অনুস্মারক যে জাভাস্ক্রিপ্টের ব্লক সুযোগ নেই।
মার্ক ইভান্স

25
@ মারকএভানস এই দৃষ্টিভঙ্গি থেকে নিজেকে অন্তর্ভুক্ত করেছে যে আপনি যদি কেবল লুপটিকে অন্য কোনও কার্যক্রমে স্থানান্তরিত করেন তবে iদুর্ঘটনাক্রমে বৈশ্বিক হয়ে উঠবেন না। iফাংশনটি স্কোপড ব্লক স্কোপড নয় এমন ঘটনাটি শীর্ষে ভেরিয়েবলগুলি ঘোষণার পক্ষে যথেষ্ট কারণ নয়, ভেরিয়েবলগুলি সর্বদা যেখানে সম্ভবত তারা ব্যবহার করা হয় তার কাছাকাছি হিসাবে ঘোষিত হওয়া উচিত ( প্রোগ্রামার্স.স্ট্যাকেক্সেঞ্জঞ্জ / প্রশ্নগুলি / 6565৫৫৫ / / )।
লি কোয়ালকভস্কি

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

11
একটি লুপের বাইরে একটি আইট্রেটর ভেরিয়েবল ব্যবহার করা জিনিসটি একটি লিন্টারের জন্য পরীক্ষা করা উচিত।
লি কোয়ালকভস্কি

61

জাভাস্ক্রিপ্ট লিটিং ফ্রন্টে আরও একটি পরিপক্ক এবং সক্রিয়ভাবে বিকশিত "প্লেয়ার" রয়েছে - ESLint:

ESLint হ'ল ECMAScript / জাভাস্ক্রিপ্ট কোডে পাওয়া নিদর্শনগুলি সনাক্তকরণ এবং প্রতিবেদন করার জন্য একটি সরঞ্জাম। বিভিন্ন উপায়ে, এটি কিছু ব্যতিক্রম সহ জেএসলিন্ট এবং জেএসহিন্টের অনুরূপ:

  • ইএসলিন্ট জাভাস্ক্রিপ্ট পার্সিংয়ের জন্য এসক্রিমা ব্যবহার করে।
  • ESLint কোডে নিদর্শনগুলি মূল্যায়নের জন্য একটি এএসটি ব্যবহার করে।
  • ইএসলিন্ট সম্পূর্ণ প্লাগযোগ্য, প্রতিটি একক নিয়ম একটি প্লাগইন এবং আপনি রানটাইমে আরও যোগ করতে পারেন।

এখানে আসলে কী তা গুরুত্বপূর্ণ তা হ'ল এটি কাস্টম প্লাগিনগুলি / বিধিগুলির মাধ্যমে প্রসারিত । বিভিন্ন উদ্দেশ্যে ইতিমধ্যে একাধিক প্লাগইন লেখা রয়েছে। অন্যদের মধ্যে রয়েছে :

এবং অবশ্যই, আপনি চালনার জন্য আপনার পছন্দসই বিল্ড সরঞ্জামটি ব্যবহার করতে পারেন ESLint:


1
আপনার টাইপ করার সাথে সাথে আপনার সম্পাদকটিতে চলমান একটি লাইনার থাকার মানটি ছোট করা যাবে না। ইএসলিন্ট এইভাবে ব্যাপকভাবে ব্যবহৃত হয়। আমি কখনও জেএসলিন্ট বা জেএসহিন্ট সম্পাদক সমর্থন (1 উপাখ্যানক ডেটা পয়েন্ট) এর কথা শুনিনি।
জিঙ্গলেস্টুলা

17

কয়েক সপ্তাহ আগে আমার একই প্রশ্ন ছিল এবং জেএসলিন্ট এবং জেএসহিন্ট উভয়কেই মূল্যায়ন করছিলাম।

এই প্রশ্নের উত্তরের বিপরীতে, আমার উপসংহারটি ছিল না:

যে কোনও উপায়ে জেএসলিন্ট ব্যবহার করুন।

বা:

আপনি যদি নিজের বা দলের জন্য খুব উচ্চমানের সন্ধান করছেন, জেএসলিন্ট।

আপনি জেএসএলিন্টের মতো জেএসহিন্টে প্রায় একই নিয়মগুলি কনফিগার করতে পারেন । সুতরাং আমি যুক্তি দিয়ে বলব যে যে নিয়মগুলি আপনি অর্জন করতে পারেন তার মধ্যে খুব বেশি পার্থক্য নেই।

সুতরাং একে অপরকে বেছে নেওয়ার কারণগুলি প্রযুক্তিগতের চেয়ে রাজনৈতিক।

নিম্নলিখিত কারণে আমরা শেষ পর্যন্ত জেএসহিন্টের সাথে যাওয়ার সিদ্ধান্ত নিয়েছি:

  • আরও কনফিগারযোগ্য মনে হয় যে জেএসলিন্ট।
  • ওয়ান-ম্যান শোয়ের চেয়ে অবশ্যই আরও বেশি সম্প্রদায় চালিত দেখায় ( দ্য ম্যান যতই শীতল হোক )।
  • জেএসিন্ট আমাদের কোড শৈলীর সাথে ওওটিবির সাথে আরও ভাল মিলছে যে জেএসলিন্ট।

1
একটি সংক্ষিপ্ত এবং সংক্ষিপ্ত উত্তরের জন্য ধন্যবাদ। এটি সমস্যাটি সম্পর্কে আমার ফাঁকা সমাধান করেছে।
akauppi

13

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

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


4
ক্লোরার সংকলকটি কীভাবে বাছাই করে না যে লণ্টারটি দেয় না?
জেমস ম্যাকমাহন

4
আমি এই সরঞ্জামটি দ্বারা উত্পাদিত একটি সতর্কতা দেখতে পাচ্ছি না, যখন এটি অবশ্যই হওয়া উচিত। জেএসলিন্ট এবং জেএসহিন্ট একই ইনপুটটির জন্য এতগুলি সতর্কতা উত্পন্ন করে যে তারা উভয়ই "খুব বেশি ত্রুটি" দেয়।
wallyk

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

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

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

13

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

আমি এখানে কিছুটা দূরে নিয়ে এসেছি

কোড ইঙ্গিত

যদিও জেএসলিন্ট এবং জেএসহিন্ট ব্যবহার করার জন্য ভাল সরঞ্জাম, কয়েক বছর ধরে আমি আমার বন্ধু @ugly_syntax যা বলেছি তা উপলব্ধি করতে এসেছি :

ছোট নকশা স্থান

এটি একটি সাধারণ নীতি, অনেকটা "জেন সন্ন্যাসী" এর মতো, নিজের পছন্দ অনুযায়ী করা পছন্দগুলি সীমাবদ্ধ করে, কেউ আরও উত্পাদনশীল এবং সৃজনশীল হতে পারে।

অতএব আমার বর্তমান প্রিয় শূন্য-কনফিগার জেএস কোড শৈলী:

স্ট্যান্ডার্ডজেএস

আপডেট :

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

কুইকস্টার্ট / টিএল; ডিআর

standardআপনার প্রকল্পের নির্ভরতা হিসাবে যুক্ত করুন

npm install --save standard

তারপরে package.json, নিম্নলিখিত পরীক্ষার স্ক্রিপ্ট যুক্ত করুন:

"scripts": {
    "test": "node_modules/.bin/standard && echo put further tests here"
},

বিকাশের সময় স্নাজ়িয়ার আউটপুট জন্য npm install --global snazzyএবং এটির পরিবর্তে চালান npm test

দ্রষ্টব্য: হিউরিস্টিক বনাম চেকিং টাইপ করুন

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

কেন? জাতীয় পাতার মর্মর, যা ভাষার বিশেষ শ্রেণীর, যা হতে হবে দ্বারা অনুপ্রাণিত আসলে untyped । যেমন এলম বা ভাষা Purescript হয় টাইপ করা কার্মিক প্রোগ্রামিং ভাষা।

আপনি যখন ভাষা বা আপনার নিজের প্রোগ্রামের বিধি লঙ্ঘন করেন তখন সংকলক আপনাকে যাচাই করতে ও গাইড করতে সক্ষম হওয়ার জন্য টাইপ করুন আপনার স্বাধীনতাকে সীমাবদ্ধ; আপনার প্রোগ্রামের আকার (এলওসি) নির্বিশেষে

আমাদের সম্প্রতি এক জুনিয়র সহকর্মী দুবার একটি প্রতিক্রিয়াশীল ইন্টারফেস প্রয়োগ করেছেন: একবার এলমে, একবার প্রতিক্রিয়াতে; আমি কী সম্পর্কে বলছি সে সম্পর্কে কিছু ধারণা পাওয়ার জন্য একবার দেখুন।

তুলনা Main.elm(টাইপ করা) ⇔ index.js(টাইপযুক্ত, পরীক্ষা নেই)

(প্রিয়। নোট করুন যে প্রতিক্রিয়া কোডটি ইডিয়ম্যাটিক নয় এবং উন্নত হতে পারে)

একটি চূড়ান্ত মন্তব্য,

বাস্তবতা জাতীয় হল হয় untyped। আপনাকে টাইপড প্রোগ্রামিংয়ের পরামর্শ দেওয়ার জন্য আমি কে ?

দেখুন, জেএসের সাথে আমরা একটি অন্য ডোমেনে আছি: প্রকার থেকে মুক্তি পেয়ে আমরা সহজেই এমন জিনিস প্রকাশ করতে পারি যা সঠিক টাইপ দেওয়া শক্ত বা অসম্ভব (যা অবশ্যই কোনও সুবিধা হতে পারে)।

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

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

শান্তি বর্ষিত হোক।


ডাউনটা কেন? আমি অবশ্যই কিছু মনে করি না, তবে যেহেতু ওপি লিখেছেন "এটি আমাকে আরও ভাল জাভাস্ক্রিপ্ট লিখতে সহায়তা করছে" আমি মনে করি এটি একটি দরকারী উত্তর? আপনি কি মনে করেন?
পুতুল

1
ডাউনভোটগুলির সাথে সম্পর্কিত নয়, তবে আপনার মেইন.েলম এবং সূচি.জেএস উভয় লিঙ্কই 404
এস

1
প্রশ্নটি স্পষ্টভাবে jslint বা jshint, বিকল্প জিজ্ঞাসা না করে ছিল।
jzacharuk

1
জিআইএফ একটি উত্সাহের দাবিদার।
sr9yar

8

ঠিক আছে, ম্যানুয়াল লিঙ্ক সেটিংস না করে আমরা আমাদের জেএস ফাইলের শীর্ষে সমস্ত লিঙ্ক সেটিংস অন্তর্ভুক্ত করতে পারি eg

এই ফাইলটিতে সমস্ত গ্লোবাল ভেরিয়া ঘোষণা করুন:

/*global require,dojo,dojoConfig,alert */

সমস্ত লিঙ্ক সেটিংস যেমন ঘোষণা করুন:

/*jslint browser:true,sloppy:true,nomen:true,unparam:true,plusplus:true,indent:4 */

আশা করি এটা তোমাকে সাহায্য করবে :)


1

আরও একটি সক্রিয়ভাবে বিকশিত বিকল্প রয়েছে - জেএসসিএস - জাভাস্ক্রিপ্ট কোড স্টাইল :

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

এটি একাধিক প্রিসেটের সাথে আসে যা আপনি কেবল কনফিগারেশন ফাইলের presetমধ্যে নির্দিষ্ট করে এবং এটি .jscsrcকাস্টমাইজ করে চয়ন করতে পারেন - ওভাররাইড, সক্ষম বা যে কোনও নিয়ম অক্ষম করুন:

{
    "preset": "jquery",
    "requireCurlyBraces": null
}

এছাড়াও জনপ্রিয় সম্পাদকদের জন্য নির্মিত প্লাগইন এবং এক্সটেনশন রয়েছে।

আরও দেখুন:

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