我知道javascript的封装不是Web组件W3C规范的一部分,但是,有哪些策略可以避免使用Polymer污染全局命名空间?
例如,如果我在 Polymer 组件中包含<script src="./jquery.js"></script>
,则$
泄漏到主机页面的窗口对象中。这对我来说是非常有问题的,因为我在铬扩展中使用聚合物。
一种方法可能是制作这样的jquery-api.html
:
<script src="[path.to]jquery.js"></script>
<script>
(function() {
// make local $
var $ = window.$;
// kill globals
$.noConflict(true);
// make $ available via custom-element registry
Polymer({
is: 'jquery-api',
get $() {
return $;
}
});
})();
</script>
然后你可以在任何需要的地方使用它,就像这样:
<link rel="import" href="jquery-api.html">
<script>
(function() {
var $ = document.createElement('jquery-api').$;
Polymer({
is: 'jquery-user'
/* can use $ in here */
});
})();
</script>