Javascript 使用require.js加载非amd模块

Javascript 使用require.js加载非amd模块,javascript,requirejs,Javascript,Requirejs,目前,我正在使用require.js进行一个有趣的项目,除了一个名为prism.js的代码语法插件外,一切都很好。我可以看到这个插件是通过chrome中的网络标签拉出来的,但是插件没有初始化 我不确定这是一个需要解决的问题,还是插件的问题,我想知道是否有人可以提供帮助 下面是我的main.js: require.config({ // 3rd party script alias names paths: { // Core Libraries modernizr: "l

目前,我正在使用require.js进行一个有趣的项目,除了一个名为prism.js的代码语法插件外,一切都很好。我可以看到这个插件是通过chrome中的网络标签拉出来的,但是插件没有初始化

我不确定这是一个需要解决的问题,还是插件的问题,我想知道是否有人可以提供帮助

下面是我的main.js:

require.config({
  // 3rd party script alias names
  paths: {
    // Core Libraries
    modernizr: "libs/modernizr",
    jquery: "libs/jquery",
    underscore: "libs/lodash",
    backbone: "libs/backbone",
    handlebars: "libs/handlebars",

    text: "libs/text",
    prism: "plugins/prism",

    templates: "../templates"
  },
  // Sets the configuration for your third party scripts that are not AMD compatible
  shim: {
    "backbone": {
      "deps": ["underscore", "jquery", "handlebars"],
      "exports": "Backbone"  //attaches "Backbone" to the window object
    }
  }
});

// Include Specific JavaScript
require(['prism', 'modernizr', 'jquery', 'backbone', 'routers/router', 'views/AppVIew' ],
  function(Prism, Modernizr, $, Backbone, Router, App) {
    this.router = new Router();
    this.App = new App();
  }
);

棱镜也应添加到
垫片中。正如主干网一样,它不符合AMD,因此必须以相同的方式声明。

更改垫片部分以包括prism,并确保它导出“prism”:


把手和棱镜与AMD(异步模块定义)不兼容,因此您需要垫片如下所示

requirejs.config({
    shim: {
        'backbone': {
            "deps": ["underscore", "jquery", "handlebars"],
            "exports": "Backbone"  //attaches "Backbone" to the window object
        },
        'handlebars': {
            "exports": 'Handlebars'
        },
        'prism': {
            "exports": "Prism"
        }
    }
});
您可能希望查看require.js shim文档站点;


希望这将有助于

即使插件没有依赖项?是的,我的错,我认为称它为“插件”意味着一个
jquery
插件,它依赖于jquery。一旦它被“填充”,我如何使用它?就像任何其他模块一样:
require('prism')
或将其作为依赖项包含在
define
的参数中。我使用的是three.js和OrbitControls.js,而OrbitControls是非AMD。我尝试按照此处建议的设置进行操作,但无法使其正常工作。OrbitControls中是否存在需要不同设置的内容?OrbitControls在内部使用three.js,但我只知道这些。我收到的错误消息是“UncaughtTypeError:THREE.OrbitControls不是构造函数”。感谢您提供的帮助。
requirejs.config({
    shim: {
        'backbone': {
            "deps": ["underscore", "jquery", "handlebars"],
            "exports": "Backbone"  //attaches "Backbone" to the window object
        },
        'handlebars': {
            "exports": 'Handlebars'
        },
        'prism': {
            "exports": "Prism"
        }
    }
});