में पॉलिमर 1.0 लोड करने में समस्याएं मैं कुछ समय के लिए पॉलिमर का उपयोग कर क्रोम एक्सटेंशन विकसित कर रहा हूं और मुझे इसके वर्तमान स्थिति में इसे रिलीज़ करने के बारे में कुछ चिंताएं हैं। मैं निम्नलिखित समस्याओं को रोकने के लिए कुछ रणनीतियों के बारे में सुनना चाहता हूं:क्रोम एक्सटेंशन
1) पृष्ठ में पॉलिमर लोड हो रहा है वैश्विक नामस्थान में लीक हो गया। पॉलिमर जेएस फाइलों में बंडल नहीं हुआ है बल्कि, यह एक HTML पृष्ठ के रूप में आता है और उपयोगकर्ता को पृष्ठ में लोड करने के लिए HTML आयात का उपयोग करने की आवश्यकता होती है। AFAIK, सामग्री स्क्रिप्ट केवल सीएसएस और जेएस के लिए अनुमति देते हैं लेकिन HTML नहीं। इस समस्या को हल करने के लिए, मैं गतिशील रूप से एक लिंक तत्व पैदा करने और पेज में इस तरह के रूप में डालकर उसे शामिल कर रहा हूँ:
function loadUrl(url) {
return new Promise(
function(resolve, reject) {
var link = document.createElement('link');
link.setAttribute('rel', 'import');
link.setAttribute('href', url);
link.onload = function() {
resolve(url);
};
document.head.appendChild(link);
});
}
loadUrl(chrome.extension.getURL("polymer/polymer.html")).
then(loadUrl(chrome.extension.getURL("my/component.html")))
एक बार मेजबान पेज में लोड है, यह सामग्री स्क्रिप्ट और कर सकते हैं की तरह अलग-थलग नहीं चलता कारण नेमस्पेस विवाद यदि पृष्ठ में पहले से ही पॉलिमर लोड है।
2) पॉलिमर आपको लोड नहीं होने पर और उपयोग करने के लिए तैयार होने पर नहीं बताता है। पॉलिमर (वर्तमान में) लोड होने पर एक ईवेंट को आग नहीं करता है और नतीजतन, मेरे घटकों को कभी-कभी पॉलिमर करने से पहले लोड होता है और टूट जाता है।
var ev = new CustomEvent('polymer-loaded');
document.dispatchEvent(ev);
3) Polybuild उपकरण एक के लिए उचित कोड उत्पन्न नहीं करता है:
इस कम करने के लिए, मैं एक कस्टम (जहाँ पॉलिमर) इस तरह के रूप में परिभाषित किया polymer-micro.html
के अंत में घटना को ट्रिगर कर रहा हूँ क्रोम एक्सटेंशन। जितना उपयोगी है, यह के के बाहर एक अलग जावास्क्रिप्ट फ़ाइल उत्पन्न करता है जो वैश्विक विंडो ऑब्जेक्ट में नामस्थान leak
नाम का कारण बनता है। उदाहरण के लिए, यदि मेरे मॉड्यूल में jQuery आयात कर रहा था, तो पॉलीबिल्ड एक जेएस फाइल जेनरेट करेगा जो डीओएम मॉड्यूल के बाहर jQuery को होस्ट करेगा क्योंकि इसे होस्ट विंडो ऑब्जेक्ट से जोड़ा जा सकता है - क्रोम एक्सटेंशन में एक बड़ा नो-नो।
प्रतिक्रिया के लिए धन्यवाद।
इस लिखने के समय, मैं ग्लोबल नेम स्पेस में पेज लीक में पॉलिमर 1.2.3
मैंने वास्तव में वास्तव में प्रश्न (2) ठीक से उत्तर दिया, इसलिए मुझे अपने उत्तर को स्वीकार करने की उम्मीद नहीं है, लेकिन मैं पॉलिमर आधारित क्रोम एक्सटेंशन और ईएस 6 मॉड्यूल और आयात के साथ अधिक प्रयोग करने के बाद इसे कोशिश और अपडेट करूँगा, तब तक मैं उम्मीद है कि यह आपको कम से कम थोड़ा सा मदद करता है। –