2012-10-03 8 views
5

में jquery और jquery-plugin को कैसे जोड़ सकता हूं, जो मैं करने की कोशिश कर रहा हूं वह मेरे jQuery-प्लगइन को jQuery के साथ काम करने के लिए अनुकूलित करता है।

जो मैं समझता हूं उससे, कॉमनजेएस के सबसे बुनियादी रूप में एक पुस्तकालय को बंद करने के लिए एक पुस्तकालय की आवश्यकता होती है, और यह बंद 'निर्यात' पैरामीटर के पैरामीटर के रूप में उपलब्ध कराया जाना चाहिए। इस तरह, कोड अपने नामस्थान (नामित चर के माध्यम से) में अच्छी तरह से निहित है और वैश्विक नामस्थान को प्रदूषित नहीं करता है।

jQuery स्वयं को '$' नामस्थान के अंतर्गत आना चाहिए।

अला:

var $ = require(jquery); 

लेकिन मेरे प्लगइन भी '$' नाम स्थान के तहत फिट चाहिए।

प्लगइन कोड:

(function($) { 
    // plugin code goes here 
})(jquery); 

exports.jquery = jquery // will this work? 

पूर्व:

var $ = require(jquery); 
$ = require(jquery-csv.js); // will this work? 

ब्राउज़र में काम करने के लिए, सब कुछ सेटअप '$' नाम स्थान भले ही मेरी मॉड्यूल हैं से प्रतिदेय हो रहा है '$' (यानी '$ .csv') के उप-नामस्थान के रूप में सेटअप करें।

क्या एक एकल नामस्थान पर एकाधिक आवश्यकताएं करने का एक मानक तरीका है? यदि नहीं, तो एक व्यवहार्य विकल्प (प्लगइन कोड पर एक उथली प्रतिलिपि कर रहे हैं)?

नोट: अनाम फ़ंक्शन रैपर standard jquery guidelines का पालन करता है।

नोट: यह फ़िक्स jquery-csv प्लगइन पर लागू होगा।

var $ = require("jquery"); 
require("jquery-csv")($); 

भी इसका मतलब है कि तुम सिर्फ कुछ इस तरह कर सकते हैं::

module.exports = exports = function (jquery) { 
    //You modify the jquery object here. 
}; 

का संशोधन

उत्तर

2

आप अपने प्लगइन के अंदर jQuery की आवश्यकता होती है चाहिए:

var $ = require("jquery"); 

यह भी UMD (Universal Module Definition) में तकनीक, दोनों CommonJS और एएमडी के लिए एक मानक है।

इसके अलावा example for a jQuery plugin with UMD

+1

और यदि jquery वास्तव में उपयोग नहीं किया जाता है? मैं दोनों उपयोग मामलों को कवर करने की कोशिश कर रहा हूं, इसलिए यह वास्तव में मौजूद है या नहीं, यह $ $ से जुड़ा होगा। –

2

सबसे आसान तरीका मैं कुछ इस तरह कर रही है के बारे में सोच सकते हैं निम्नलिखित की तरह कुछ कर रहे होते $ ऑब्जेक्ट jQuery प्लगइन अनुशंसाओं के अनुसार किया जाना चाहिए। मेरा मानना ​​है कि आपने जो कहा है उसके लिए आप पहले ही उनसे अवगत हैं।

मुझे यकीन है कि कोई एक स्मार्ट तरीके से आएगा :) लेकिन यह अभी के लिए काम करना चाहिए। आप एक संशोधित jquery ऑब्जेक्ट को भी वापस कर सकते हैं और फिर उसे उस ऑब्जेक्ट पर $ ऑब्जेक्ट को असाइन कर सकते हैं जिसमें आपने मूल रूप से मॉड्यूल शामिल किया था।

+0

मैं बस अपना नोड env को सेट करना समाप्त देख सकते हैं और समाधान उससे भी आसान था। आपको प्लगइन में एक निर्यात कॉल जोड़ने की आवश्यकता नहीं है क्योंकि यह मौजूदा नामस्थान को बदल रहा है। एक असाइनमेंट के बिना कॉलिंग की आवश्यकता के अनुसार, यह