2016-12-08 2 views
2

Je cherche à ouvrir une directive angulaire sur le npm et j'essaie de trouver le modèle le plus universel pour le faire. Comment c'est? J'ai 3 questions:Modèle UMD pour la directive angulaire

!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. est-require('angular') nécessaire ou est-il sûr de supposer que la variable existe angulaire?
  2. Est-il nécessaire d'appeler angular.module et angular.directive dans ma définition ou est-ce que seules les applications consommatrices le font?
  3. Est-ce que les environnements AMD en ont besoin ou est-ce que le module.exports ou le global suffit?

Répondre

1

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

No. Les applications qui utilisent votre bibliothèque doit toujours importer leur propre version de AngularJS.

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

Oui. Les demandes doivent lister votre module name dans leur liste de dépendances comme ceci:

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

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

Non, vous pouvez simplement mettre la directive sur le module et d'autres développeurs seront en mesure pour l'utiliser.