Порядок загрузки jQuery UI и Oracle MapViewer в RequireJS

Я хотел использовать jQuery UI Accordion в своем модуле, но я всегда получал, что div.accordion не является функцией, если я включаю библиотеку Oracle MapViewer. Эта библиотека еще не поддерживает AMD, поэтому я определил ее зависимость в shim. Все библиотеки загружаются в следующем порядке: пользовательский интерфейс jQuery, jQuery (Oracle MapViewer). Я думал, что jQuery должен быть загружен в первую очередь, но этот порядок работает, кроме случаев, когда я загружаю Oracle MapViewer.

Мой HTML

<!--in head-->
<script src="lib/require.min.js" data-main="app"></script>

<!--in body-->
<div id="accordion">
  <h3>Section 1</h3>
  <div>Vestibulum a velit eu ante scelerisque vulputate.</div>
  <h3>Section 2</h3>
  <div>Vivamus non quam. In suscipit faucibus urna.</div>
</div>

Мой app.js

require.config({
    paths: {
        "jquery": "lib/jquery-1.12.3",
        "jquery-ui": "lib/jquery-ui",
        "oraclemaps": "lib/oraclemapsv2"
    },
    shim: {
        "oraclemaps": ['jquery']
    }
});

require(['oraclemaps', 'jquery-ui'], function ()
{
    $("#accordion").accordion();
});

Любая идея, как использовать библиотеку Oracle MapViewer в RequireJS? Я использую jQuery 1.12.3 и jQuery UI 1.11.4 (все компоненты).

2 ответа

Решение

oraclemaps включает в себя jQuery, поэтому мы можем использовать их версию. Конфигурация будет выглядеть так:

require.config({
    paths: {
        "jquery-ui": "lib/jquery-ui.min",
        "oraclemaps": "lib/oraclemapsv2"
    },
    shim: {
        "jquery-ui": ["oraclemaps"]
    }
});

require(["jquery-ui"], function ()
{
    $("#accordion").accordion();
});

Попытайтесь изменить секцию шим первого примера следующим образом:

shim: {
    "jquery-ui": {
        export:"$" ,
        deps: ['jquery']
    }
}

Или обновите до последней версии jQuery-ui, которая наконец поддерживает загрузку AMD.

Другие вопросы по тегам