javascript - JSHint এবং jQuery:'$' সংজ্ঞায়িত করা হয় না




(8)

নিম্নলিখিত JS:

(function() {
  "use strict";

  $("#target").click(function(){
    console.log("clicked");
  });

}());

উৎপাদনের:

test.js: line 5, col 3, '$' is not defined.

যখন JSHint 0.5.5 ব্যবহার করে linted। কোন ধারনা?


Answers

আপনি আপনার .jshintrc দুটি লাইন যোগ করতে পারেন

  "globals": {
    "$": false,
    "jQuery": false
  }

এই jshint বলে যে দুটি বৈশ্বিক ভেরিয়েবল আছে।


স্বাভাবিক "JSHint গ্লোবালগুলি বন্ধ করুন" সুপারিশ করার পরিবর্তে, আমি এই সমস্যাটি সমাধানের জন্য মডিউল প্যাটার্ন ব্যবহার করার সুপারিশ করছি। এটি আপনার কোডটিকে "অন্তর্ভূক্ত রাখে" এবং একটি কর্মক্ষমতা বৃদ্ধি দেয় (পল আইরিশের "10 জিনিস যা আমি জ্যাকারি সম্পর্কে শিখেছি" এর উপর ভিত্তি করে)।

আমি এই মত আমার মডিউল নিদর্শন লিখতে ঝোঁক:

(function (window) {
    // Handle dependencies
    var angular = window.angular,
        $ = window.$,
        document = window.document;

    // Your application's code
}(window))

আপনি এই অন্যান্য কর্মক্ষমতা সুবিধা পেতে পারেন (আরো ব্যাখ্যা here ):

  • কোড minifying যখন, পাস window বস্তুর ঘোষণা পাশাপাশি minified পায়। যেমন window.alert() m.alert() হয়ে m.alert()
  • স্ব-এক্সিকিউটিভ বেনামী ফাংশনের ভিতরে কোড শুধুমাত্র window অবজেক্টের 1 টি উদাহরণ ব্যবহার করে।
  • window সম্পত্তি বা পদ্ধতিতে কল করার সময় আপনি চেজটি কাটবেন, সুযোগের চেইনটির ব্যয়বহুল ট্রান্সভারাল যেমন window.alert() (দ্রুত) vs alert() (ধীর) কর্মক্ষমতা রোধ করে।
  • "Namespacing" এবং প্রতিরোধের মাধ্যমে ফাংশন স্থানীয় সুযোগ (globals মন্দ)। যদি আপনি এই কোডটিকে আলাদা স্ক্রিপ্টগুলিতে ভাঙ্গতে চান তবে আপনি সেগুলির প্রতিটি স্ক্রিপ্টগুলির জন্য একটি সাবমিডেল তৈরি করতে পারেন এবং তাদের একটি প্রধান মডিউলে আমদানি করতে পারেন।

যদি আপনি একটি IntelliJ সম্পাদক ব্যবহার করছেন, অধীন

  • পছন্দসমূহ / সেটিংস
    • জাভাস্ক্রিপ্ট
      • কোড কোয়ালিটি সরঞ্জাম
        • JSHint
          • পূর্বনির্ধারিত (নীচে), ক্লিক করুন

আপনি কিছু টাইপ করতে পারেন, উদাহরণস্বরূপ console:false , এবং এটি তালিকায় যোগ করবে (.jshintrc) - পাশাপাশি একটি বিশ্বব্যাপী।


অনলাইন JSHint বাস্তবায়ন ব্যবহার করার সময় এই ত্রুটিটি ঠিক করতে:

  • "কনফিগারেশন" (পৃষ্ঠার মধ্যম কলামের শীর্ষে) ক্লিক করুন
  • "JQuery" সক্ষম করুন (নীচে "ASSUME" বিভাগের অধীনে)

এখানে আপনার .jshintrc রাখা একটি সুখী সামান্য তালিকা
আমি সময় পাস এই তালিকা যোগ করা হবে।

{
  // other settings...
  // ENVIRONMENTS
  // "browser": true, // Is in most configs by default
  "node": true,
  // others (e.g. yui, mootools, rhino, worker, etc.)
  "globals": {
    "$":false,
    "jquery":false,
    "angular":false
    // other explicit global names to exclude
  },
}

আপনি যদি ওয়েব স্টরম, পাইচার, রুবিমাইন, অথবা ইন্টেলিজ আইডিএএএএর মতো একটি ইন্টেলিজিজ এডিটর ব্যবহার করছেন:

ফাইল / সেটিংস / জাভাস্ক্রিপ্ট / কোড কোয়ালিটি সরঞ্জাম / JSHint এর পরিবেশ বিভাগে, jQuery চেকবাক্সটিতে ক্লিক করুন।


আপনি যদি JSHint এর অপেক্ষাকৃত সাম্প্রতিক সংস্করণটি ব্যবহার করেন তবে সাধারণত আপনার পছন্দের পদ্ধতিতে একটি .jshintrc ফাইল তৈরি করা, এবং এতে এই কনফিগার করা উচিত:

{
    "globals": {
        "$": false
    }
}

এই JSHint ঘোষণা করে যে $ একটি বিশ্বব্যাপী পরিবর্তনশীল, এবং মিথ্যা নির্দেশ করে যে এটি overridden করা উচিত নয়।

.Jshintrc ফাইলটি JSHint এর পুরানো সংস্করণগুলিতে সমর্থিত হয়নি (যেমন ২01২ সালে মূল প্রশ্নটি v0.5.5)। যদি আপনি .jshintrc ফাইলটি ব্যবহার করতে না চান বা না করতে চান তবে স্ক্রিপ্ট ফাইলের শীর্ষে এটি যোগ করতে পারেন:

/*globals $:false */

JSHint বিকল্প পৃষ্ঠাতে দেখানো একটি শর্ট্যান্ড "jquery" jshint বিকল্প রয়েছে।


এখানে পোস্ট করা সেরা সমাধানটির জন্য, যদি শেষ সারিতে একটি নিস্তেজ টেবিল থাকে, তবে নতুন সারিটি মূল টেবিলে পরিবর্তে নেস্টেড টেবিলে যোগ করা হবে। একটি দ্রুত সমাধান (টেবিলের সাথে / টেবিল ছাড়া এবং নিস্তেজ টেবিল সহ টেবিল বিবেচনা):

function add_new_row(table, rowcontent) {
    if ($(table).length > 0) {
        if ($(table + ' > tbody').length == 0) $(table).append('<tbody />');
        ($(table + ' > tr').length > 0) ? $(table).children('tbody:last').children('tr:last').append(rowcontent): $(table).children('tbody:last').append(rowcontent);
    }
}

ব্যবহার উদাহরণ:

add_new_row('#myTable','<tr><td>my new row</td></tr>');






javascript jquery jshint