【问题标题】:Export an angular module as a commonjs module将 Angular 模块导出为 commonjs 模块
【发布时间】:2016-02-12 17:53:03
【问题描述】:

我正在编写一个 Angular 模块,我想让它与 requirejs 一起工作, 这是一个例子:

(function (){
    'use strict';

    var myModule = angular.module('myModule', [])

    .directive('myDirective', [function () {
        return {
            restrict: 'AE',
            scope: {
                item:    '=',
            },
            template: '<span>Item: {{ item }}</span>'
        };
    }]);

  if (typeof module !== 'undefined') {
    module.exports = myModule;
  }

})();

这是一个好方法吗,如果不是,我应该如何导出它以使其正常工作?

【问题讨论】:

  • 使用 requirejs 或通用模块(即 browserify)?
  • commonjs @elclanrs 很抱歉没有这么清楚。

标签: javascript angularjs requirejs


【解决方案1】:

注册一个角度模块是一个副作用。您可以做的是导出名称:

var name = 'myModule';

angular.module(name, [])

.directive('myDirective', [function () {
  return {
    restrict: 'AE',
    scope: {
      item:    '=',
    },
    template: '<span>Item: {{ item }}</span>'
  };
}]);

module.exports = name;

然后你可以在另一个模块中 require 它,例如:

angular.module('app', [
  require('./path/to/myModule') // runs side-effect (registers the module)
])

【讨论】:

  • 如果您在非 CommonJS 环境中使用该指令,您将如何避免出现 Uncaught ReferenceError: module is not defined 警告?
  • @ChristianGill:Browserify 有一个选项 --standalone 可以将你的模块转换为 UMD。
猜你喜欢
  • 2017-06-21
  • 2016-06-23
  • 1970-01-01
  • 2018-04-13
  • 2022-01-20
  • 2016-12-24
  • 1970-01-01
  • 1970-01-01
  • 2016-05-05
相关资源
最近更新 更多