【问题标题】:Is Browserify compatible with Polymer and/or AngularJSBrowserify 是否与 Polymer 和/或 AngularJS 兼容
【发布时间】:2025-11-30 03:20:17
【问题描述】:

我想在我的 Polymer/AngularJS 应用程序中使用 NodeJS 库。为此,我的目标是在我希望使用的 NodeJS 模块上运行 Browserify,然后在 Polymer Web 组件和 AngularJS 控制器中引用它。据我所知,Browserify 只是将require() 添加到全局命名空间中,因此不应该有任何命名冲突。

我有什么遗漏吗?或者这些技术会协同工作吗?

【问题讨论】:

  • Angular 与 browserify 配合得很好,从 angular 1.3.15 开始。

标签: javascript angularjs node.js polymer browserify


【解决方案1】:

Browserify 可以很好地与 Polymer 配合使用。我通常使用 browserify 的 --standalone 标志公开模块,然后集成为 Polymer 元素 behavior

【讨论】:

  • 在此处创建示例:github.com/jrmerz/polymer-browserify-example。请注意,有不止一种方法可以做到这一点。我的简单示例使用了一个全局命名空间,它不适合创建可再发行组件。
【解决方案2】:

我找到了一种将 Polymer 与 webpack 一起使用的方法 polymer-ext

如果你想用聚合物浏览器化,也许你应该尝试同样的方法。

【讨论】:

    【解决方案3】:

    作为另一种不使用独立或行为但可能更灵活的不那么复杂的方法,我已经定义了一个全局变量APP。然后定义一个返回全局所需模块之一的get 函数。

    例如

    // in main index.html file before elements.html imported define global namespace
    <script>
    var APP = {};
    </script>
    

    制作一个测试模块

    // services/test.js
    module.exports = {
      test: function(){
        console.log('imt the test function');
      }
    }
    

    然后在主js文件中。

    // main js file
    (function(APP) {
    
     var globalModules = {
        test: require('./services/test')
     } 
    
     APP.get = function(moduleName){
        return globalModules[moduleName];
     }
    
    })(APP);
    

    然后这可以在需要时在 Polymer 元素中使用,例如

    APP.get('test').test();
    

    不确定这是否是“正确”的做法,但它适用于我试图实现的目标,并且可能对某人有所帮助。

    【讨论】:

      最近更新 更多