2015-08-31 1 views
1

У меня есть следующий script тег на index.html:Как определить тип для "основного" сценария в RequireJS

<script src="scripts/lib/require.js" data-main="scripts/main" type="application/javascript"></script> 

Это загрузит скрипты/main.js:

require.config({ 
    baseUrl: 'scripts', 
    shim: { 
     'lib/angular': { exports: 'angular' }, 
     'app': ['lib/angular'] 
    } 
    scriptType: 'application/javascript' 
}); 

require(['app'], function() { 
    // Some code 
}); 

Как вы можете видеть, я определяю scriptType: 'application/javascript.

Это работает для загруженных зависимостей, но не работает для main.js.

Это мой генерируется HTML:

<script src="scripts/lib/require.js" data-main="scripts/main" type="application/javascript"></script> 
<script type="text/javascript" charset="utf-8" async-data-requirecontext="_" data-requiremodule="main" src="scripts/main.js"></script> 
<script type="application/javascript" charset="utf-8" async-data-requirecontext="_" data-requiremodule="lib/angular" src="scripts/lib/angular.js"></script> 
<script type="application/javascript" charset="utf-8" async-data-requirecontext="_" data-requiremodule="app" src="scripts/app.js"></script> 

Как вы можете заметить, scripts/main.js загружается с type="text/javascript".

Как я могу загрузить его с type="application/javascript" в качестве остальных скриптов?

+0

вы можете определить конфигурации в файле 'index.html' вместо https://github.com/jrburke/requirejs/issues/354 – llamerr

+0

@llamerr Как не было, что никогда не приходила мне в голову? Я предпочел бы иметь отдельный файл JS, но если этого не может быть достигнуто, то это решение достаточно справедливо. Разум публикует это как ответ? –

+0

уверенный факт, кажется, что также можно сохранить конфигурацию в отдельном файле js вместо html. единственное требование - включить его перед запуском requirejs. собираюсь проверить это точно и скоро опубликует ответ – llamerr

ответ

0

Чтобы сделать это, я делаю то же самое, что и вы, но перемещая config.js в отдельный файл. В этом случае вам нужно указать type для конфигурации самостоятельно (если вам нужно иметь тот же тип для конфигурации). Хитрость заключается в том, что вам нужно выполнить require() после вашей конфигурации готов

https://github.com/jrburke/requirejs/issues/354#issuecomment-6631063 (второй вариант, но я использовал yo requirejs для теста)

индекс

<script src="bower_components/requirejs/require.js"></script> 
    <script src="app/config.js"></script> 
    <script> 
    // same as data-main 
    require(['app/main'], function(){ }); 
    </script> 

конфигурации является

require.config({ 
    // make components more sensible 
    // expose jquery 
    paths: { 
    "components": "../bower_components", 
    "jquery": "./bower_components/jquery/dist/jquery" 
    }, 
    scriptType: 'application/javascript' 
}); 

и главный файл:

define(["jquery"], function($) { 
    $('body').append('jQuery ' + $.fn.jquery + ' loaded!'); 
}); 

enter image description here

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

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