聚合物组件不能封装JavaScript



我知道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>

最新更新