Вопрос о статической конфигурации URL-адреса javascript / css?

#javascript #css #html #dojo

#javascript #css #HTML #dojo

Вопрос:

У меня есть одностраничное веб-приложение, которое использует DOJO (1.9.x). Обычно он загружает библиотеку DOJO из CDN Google, и мое приложение функционирует, как и ожидалось. Но некоторые клиенты предлагают ограниченное подключение к Интернету, которое исключает большую часть Интернета по соображениям безопасности (!?). Итак, я должен разместить библиотеку DOJO локально на сервере.

Чтобы это сработало, я должен указать URL-адрес на локальную копию dojo.js и соответствующие CSS-файлы. Поскольку изменяется только префикс URL-адреса, мне любопытно, есть ли способ добиться этого с помощью какого-либо внешнего файла CSS, чтобы URL-адрес в HTML получал свой префикс из этого небольшого CSS. Просто отредактировав / изменив этот небольшой файл CSS, один сайт загрузит DOJO из Google CDN, а другой загрузит локально размещенный DOJO.

Возможно ли это со статическим файлом CSS?

Комментарии:

1. Да? Вы хотите изменить часть URL-адреса с помощью CSS? Вы знаете, что означает CSS?

2. @Dimitri: Я не хочу редактировать HTML. JS является целью для загрузки. В качестве опции оставлен только CSS. Поскольку CSS настолько сложен, я подумал, что есть способ. Существуют такие хаки, как css.dzone.com/articles/executing-javascript-inside

Ответ №1:

Это невозможно с помощью CSS.

Несколько альтернатив в порядке предпочтения:

  1. САМЫЙ БЕЗОПАСНЫЙ — распространять две версии страницы / приложения, с локальным и удаленным dojo.
  2. Если у вас есть какой-либо рендеринг на стороне сервера, настройте его для обновления URL-адреса dojo.
  3. Всегда распространяйте загрузчик dojo вместе с вашим приложением. После этого загрузите модули dojo из CDN или локально в соответствии с вашей конфигурацией. Это может стать сложным.

Более подробная информация о варианте 3:

dojoConfig.js

 //var dojoRoot = ".."; // For LOCAL builds - relative to dojo.js
var dojoRoot = "//ajax.googleapis.com/ajax/libs/dojo/1.9.3"; // For CDN builds

var dojoConfig = {
    packages: [
        // Depending on your project structure, you may need to 
        // insert entries here for your local packages.

        // Here, we override the location for dojo packages
        {
            name: "dojo",
            location: dojoRoot   "/dojo"
        },
        {
            name: "dojox",
            location: dojoRoot   "/dojox"
        },
        {
            name: "dijit",
            location: dojoRoot   "/dijit"
        }
    ]
};
  

Фрагмент HTML для его использования

 <script src="dojoConfig.js"></script>
<script src="dojo/dojo.js"></script>
<script>
    require(["dojo/_base/config", "dojo/json"], function(config, JSON) {
        console.log(JSON.stringify(config.packages, null, "t"));
    });
</script>