聚合物组件不封装javascript

时间:2016-02-06 00:16:17

标签: namespaces polymer global encapsulation polymer-1.0

我知道javascript的封装不是Web组件W3C规范的一部分,但是,使用Polymer避免全局命名空间污染的一些策略是什么?

例如,如果我在Polymer组件中包含<script src="./jquery.js"></script>,则$会泄漏到主机页面的窗口对象中。这对我来说非常有问题,因为我在chrome扩展中使用Polymer。

1 个答案:

答案 0 :(得分:3)

一种方法可能是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>
相关问题