如何定义" main"的类型RequireJS中的脚本

时间:2015-08-31 12:26:50

标签: javascript requirejs mime-types

我在 index.html

上有以下script标记
<script src="scripts/lib/require.js" data-main="scripts/main" type="application/javascript"></script>

这将加载 scripts / 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"作为其余脚本?

1 个答案:

答案 0 :(得分:0)

所以要做到这一点我做的就像你做的那样,但是将config.js移动到一个单独的文件中。在这种情况下,您需要自己为config配置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