2

我希望在 npm 上开源一个 angular 指令,并且我正在尝试提出最通用的模式。这个怎么样?我有3个问题:

!function(name, make) {
  make = make()

  // 1. Is this line needed?
  var angular = require('angular')

  // 2. Is this line needed?
  angular.module(name, []).directive(name, make)

  if (typeof module != 'undefined') module.exports = make
  else this[name] = make

  // 3. Is this line needed?
  if (typeof define == 'function') define(function() { return make })
}('exampleDirective', function() {
  return function() {
    return {
      link: function (scope, label, atts) {}
    }
  }
});
  1. 是否require('angular')需要或假设存在角度变量是否安全?
  2. 是否有必要在我的定义中调用angular.moduleandangular.directive或者应该只有消费应用程序这样做?
  3. AMD 环境需要这个module.exports还是全局就足够了?
4

1 回答 1

1

1

  // 1. Is this line needed?
  var angular = require('angular')

不可以。使用您的库的应用程序必须始终导入他们自己的 AngularJS 版本。

2

  // 2. Is this line needed?
  angular.module(name, []).directive(name, make)

是的。应用程序需要name在其依赖项列表中列出您的模块,如下所示:

var myApp = angular.module('myApp',[name]);

3

  // 3. Is this line needed?
  if (typeof define == 'function') define(function() { return make })
}('exampleDirective', function() {
  return function() {
    return {
      link: function (scope, label, atts) {}
    }
  }
});

不可以。您只需将指令放在模块上,其他开发人员就可以使用它。

于 2016-12-09T02:56:03.907 回答