मैं रोलअप और डी 3 संस्करण 4 के साथ शुरू कर रहा हूं, जो ES2015 मॉड्यूल में लिखा गया है। मैंने पारंपरिक डी 3 नेमस्पेस "डी 3" का उपयोग करके कुछ कोड लिखा है। अब मैं रोलअप का उपयोग कर कस्टम बंडल बनाना चाहता हूं। मैं पेड़-हिलाने का उपयोग करना चाहता हूं, क्योंकि शायद मैं केवल डी 3 में लगभग आधे कार्यों का उपयोग कर रहा हूं, और मैं चीजों को यथासंभव प्रकाश रखना चाहता हूं।ES2015 मॉड्यूल का चयन चुनिंदा रूप से कैसे करें, लेकिन नेमस्पेसिंग के साथ?
मैं स्पष्ट कर दिया कि मैं कार्यों चुनिंदा आयात कर सकते हैं, उदा .: हूँ
import {scaleLinear} from "d3-scale";
import {
event,
select,
selectAll
} from "d3-selection";
उसी वर्बोज़ बहुत तेजी से प्राप्त करने के लिए, क्योंकि d3 के आधे कार्यों का एक बहुत कुछ है जा रहा है। में इसके साथ जी सकता हूँ। बड़ी समस्या यह है कि इसे नामस्थान के बिना मेरे सभी फ़ंक्शन पहचानकर्ताओं को पूरी तरह से फिर से लिखना होगा। मुझे इसकी परवाह नहीं है, क्योंकि मैं लाइब्रेरी कोड नामस्थान पसंद करना पसंद करता हूं।
मैं समझता हूँ कि मैं सभी मॉड्यूल के आयात कर सकते हैं:
import * as d3 from "d3";
जो d3 वस्तु नाम स्थान है, जो मेरी कोड संगठन के लिए अच्छा है बरकरार रखता है। लेकिन फिर रोलअप बंडल से अप्रयुक्त कार्यों को पेड़-शेक नहीं कर सकता है।
import {
event,
select,
selectAll
} as d3 from "d3-selection";
लेकिन सुविधा की इस प्रकार की/वाक्य रचना कल्पना में मौजूद नहीं लगता है:
क्या मैं सपना देख रहा हूँ की तरह कुछ है। मैं दोनों मॉड्यूल के अलग-अलग हिस्सों को चुनिंदा रूप से लक्षित कैसे कर सकता हूं, और आयात के दौरान नेमस्पेसिंग को सुरक्षित रख सकता हूं?
आप '*' आयात का उपयोग कर सकते हैं, और रोलअप उन्हें तब तक हिला देगा जब तक कि आप नामस्थान का उपयोग नहीं करते हैं (उदा। इसे किसी फ़ंक्शन में पास करना)। लेकिन पेड़-हिलना सही नहीं है (जावास्क्रिप्ट की प्रकृति के कारण) इसलिए सीधे 'डी 3' से आयात करने में अप्रयुक्त कोड शामिल होगा (हम इसे बेहतर बनाने पर काम कर रहे हैं), इसलिए आपको आवश्यक मॉड्यूल से चुनिंदा आयात करना हमेशा आपको देगा सबसे उच्च अनुकूलित बंडल। व्यक्तिगत रूप से मैं उन कार्यों को स्पष्ट रूप से आयात करने का पक्ष करता हूं जो मैं वास्तव में उपयोग कर रहा हूं, लेकिन अगर आप ऐसा नहीं करना चाहते हैं तो @estus का सही विचार है। –
@RichHarris चुनिंदा आयात कैसे करता है (मुझे लगता है कि आप आयात नाम का मतलब है) नामस्थान ऑब्जेक्ट का उपयोग करके चुनिंदा रूप से अलग-अलग पेड़-हिलाने का कारण बनता है? – Bergi
@ बर्गि क्योंकि तब आप अधिक आसानी से आयात कर सकते हैं उदा। 'd3-select',' d3-scale' et al, 'd3' –