2015-04-28 7 views
16

Meteor docs से:api.imply क्या करता है?

एक और पैकेज या संकुल का एक संग्रह (स्ट्रिंग packagename में पास करके) के लिए इस पैकेज के लिए उपयोग की उन दें (तार की एक सरणी में पास करके [packagename1, packagename2])।

मुझे नहीं पता कि इसका क्या अर्थ है।
this question से मुझे पता है कि implyuse के साथ नियोजित किया जा सकता है।

api.imply क्या करता है?
api.use और api.imply के बीच वास्तव में क्या अंतर है?

उत्तर

16

api.use अन्य संकुल निर्यात प्रतीकों के लिए एक पैकेज पहुँच देता है; आप imply का उपयोग आप बाहर अपने package:dependant

अगर यह स्पष्ट है मैं नहीं जानता कि package:name से कुछ उपयोग करना चाहते हैं की जरूरत है।

उदाहरण के लिए आप api.use("random") (see how it's done in the accounts-base package) आप एक पैकेज कोड (see how the randompackage.js is api.exporting Random) में Random प्रतीक उपयोग करना चाहते हैं की जरूरत है।

हालांकि, meteor add आईएन accounts-base आपके पूरे एप्लिकेशन को अपने उपयोग किए गए पैकेज (random इस मामले में) तक पहुंच नहीं देगा। यदि आपके ऐप को random की आवश्यकता है, तो आपको अभी भी meteor add की आवश्यकता होगी।


दूसरी ओर api.imply, कि पैकेज निर्यात प्रतीकों के लिए पूरे आवेदन पहुँच देता है।

उदाहरण के लिए, see how accounts-google is api.implying accounts-base

accounts-base is responsible for exporting the Accounts symbol, जब आप meteor add accounts-google, न केवल accounts-base भी अपने आवेदन निर्भरता में जोड़ा जाता है करता है, लेकिन accounts-base प्रतीकों भी अपने अनुप्रयोग में उपलब्ध कराया जाता है, विशेष रूप से, क्योंकि यह निहित था।


accounts-base दोनों का अपना कोड (api.use) में Accounts का उपयोग कर और पूरे एप्लिकेशन (api.imply) के लिए अपनी निर्भरता प्रतीकों के निर्यात है।

api.imply का उपयोग "छाया पैकेज" बनाने के लिए किया जा सकता है जो कि कुछ अन्य पैकेजों में खींच रहे हैं।

उदाहरण के लिए, कुछ बिंदु पर एमडीजी showdown पैकेज markdown नाम दिया, वे तो बस meteor remove showdown && meteor add markdown बताई जा सकता था, लेकिन यह अंत उपयोगकर्ताओं पर कुछ कार्रवाई के लिए आवश्यक होता है।

इसके बजाय उन्होंने showdown पैकेज और make it implying the new markdown package को रखते हुए क्या किया है।

+4

मैंने माना कि 'api.export' हमेशा पूर्ण प्रोजेक्ट में निर्यात किया गया है! असल में, इसका उपयोग ऑब्जेक्ट्स को निर्यात करने के लिए किया जाता है जिसे कई तरीकों से आयात किया जा सकता है: पूरे प्रोजेक्ट ('उल्का एड') को, पैकेज ('api.use') या दोनों (' api.imply') के दायरे में। अंतर्दृष्टि के लिए धन्यवाद! –

+0

यह अवधारणा मूल रूप से एनपीएम पैकेजों में पुन: निर्यात करने जैसा ही है, उदाहरण के लिए, ईएस 6 में: 'अन्य पैकेज' से 'निर्यात {Foo} या कॉमनजेएस में: 'export.Foo = आवश्यकता (' अन्य-पैकेज ') .Foo'। उल्का 1.3 अब एनपीएम मॉड्यूल का समर्थन करता है, बस आपके एनपी की रूट निर्देशिका में 'एनपीएम इंस्टॉल' का समर्थन करता है, फिर आपको अपने ऐप कोड में जो भी चाहिए ('') (' '' '' '' की आवश्यकता होती है (या फिर से निर्यात करने वाले पैकेज लिखें चीजें, और वैकल्पिक रूप से उन्हें वायुमंडल के बजाय एनपीएम पर प्रकाशित करें)। – trusktr

+0

शायद मैं इसे गलत समझ रहा हूं लेकिन मुझे वास्तव में एक पैकेज जोड़ने वाले उल्का के बीच का अंतर नहीं समझता है, जो इसे स्पष्ट रूप से सूचीबद्ध/परिभाषित करता है, और api.imply'ing। ऐसा लगता है जैसे वे अनिवार्य रूप से वही काम करते हैं, लेकिन यह api.imply का मतलब है कि अब आपके पास संभावित रूप से संकुल का एक समूह उपलब्ध है जो खोजने/बनाए रखने में मुश्किल है क्योंकि वे पैकेज परिभाषाओं के वर्गीकरण में भरे हुए हैं। क्या मैं इसके बारे में सही हूं, और यदि हां, तो उल्का में क्या ताकत है? – dudewad

0

आप अपने एप्लिकेशन में कुछ ऐसा है जो package:name से एपीआई की खपत है और आप को स्थापित सिर्फ package:dependant जो एक package:name एक निर्भरता के रूप में है पैकेज, लेकिन आप यहां imply उपयोग नहीं करते हैं, package:name से अपने एपीआई अनुप्रयोग में काम नहीं करेगा। यह केवल package:dependant पैकेज में काम करेगा।)

+0

मुझे अभी भी यह नहीं मिला है। मुझे पूरे ऐप में काम करने वाले पहले पैकेज का एपीआई रखने के लिए 'imply' का उपयोग करना होगा? और अगर मैं 'imply' का उपयोग करता हूं तो यह हर जगह इस एपीआई को निर्यात करेगा? –

+0

यह 'पैकेज: नाम' स्थापित करेगा और आप इसे ऐप में हर जगह उपयोग करने में सक्षम होंगे। जैसे ही आप 'उल्का जोड़ें पैकेज चलाते हैं: नाम' – juliancwirko

संबंधित मुद्दे