2016-04-09 2 views
2

Я хотел бы использовать библиотеку в моем угловом проекте, который предоставляет слайдеры, написанные в javascript/jQuery. Поэтому я бы написал директиву внутри моего проекта с определенным интерфейсом, чтобы использовать библиотечную функциональность. Я бы загрузил исходный файл библиотеки в свой индекс html. Это сделает библиотеку доступной в глобальном масштабе.Модуль AnguarJS для обертывания библиотек javascript

Я бы использовал эту библиотеку и в других моих угловых проектах, поэтому хотел бы создать уральский модуль (собственный проект) с директивой, чтобы я мог вводить его в каждый проект в качестве модульной зависимости. К сожалению, я не знаю, где загрузить библиотеку и как должна строиться структура этого Углового модуля. Нужно ли загружать библиотеку внутри шаблона директив?

template.html:

<script src="libraries/jquery-slider.js></script> 
<my-slider></my-slider> 

Или я должен загрузить/впрыскивать JQuery-библиотеки по-другому, чтобы получить доступ к его функциональности?

+1

Вы должны просто зафиксировать факт, что ваш модуль зависит от jQuery и от сторонней библиотеки, и пусть конечный пользователь вашего модуля (вас) включает jQuery и библиотеку на своей главной странице. –

ответ

2

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

<script src="js/main.js></script> 

Затем добавьте еще один модуль, который является поставщиком интерфейса/привязок для библиотеки:

<script src="js/library-binding.js></script> 
<script src="js/main.js></script> 

И здесь возникает вопрос, что вам нужно включить сама библиотека где-то. Здесь есть два основных варианта:

Lazy loading, или метод, когда вы хотите загрузить библиотеку прямо в тот момент, когда она будет использована. Вам нужно будет сделать это внутри своей директивной реализации и вызвать некоторые проблемы, потому что вам придется задерживать рендеринг элементов до загрузки библиотеки. Кроме того, у вас будет другая проблема, если на странице будет несколько элементов: вы будете загружать библиотеку несколько раз, и это может быть источником конфликтов, и вам как-то нужно будет позаботиться об этом, например. установите некоторую глобальную переменную, в которую загружена библиотека, и вам больше не нужно ее загружать (плюс она должна быть введена в разделе <head> в этом случае).

Загрузить библиотеку всегда вместе с интерфейсным модулем, что является более понятным и простым способом; однако он загружается always независимо от того, используется он или нет.

Мое личное предпочтение - это второй способ, но вы должны действительно посмотреть, что лучше всего подходит для вашего конкретного проекта.

Таким образом, в этом случае index.html структура должна выглядеть

<script src="js/library.js></script> 
<script src="js/library-binding.js></script> 
<script src="js/main.js></script> 

или, что может быть лучше

<script src="js/library-and-library-binding.js></script> 
<script src="js/main.js></script> 

В этом случае все зависимости самодостаточны в файле модуля.

+1

Спасибо, вот что я искал. – marcel

 Смежные вопросы

  • Нет связанных вопросов^_^