2016-12-08 5 views
2

Я ищу, чтобы открыть исходную угловую директиву по npm, и я пытаюсь найти наиболее универсальный шаблон для этого. Как это? У меня есть 3 вопроса:UMD-шаблон для угловой директивы

!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.module и angular.directive в моем определении или должны ли это использовать только потребляющие приложения?
  3. Нужны ли в этой среде AMD или module.exports или глобальные?

ответ

1

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

Нет, для приложений, которые используют вашу библиотеку всегда должны импортировать свою собственную версию AngularJS.

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

Да. Приложения должны будут перечислить ваш модуль name в их списке зависимостей, как это:

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) {} 
    } 
    } 
}); 

Нет, вы можете просто поместить директиву на модуле и другие разработчики смогут использовать его.