Javascript 当我同时使用RequireJS时,如何使用videojs插件

Javascript 当我同时使用RequireJS时,如何使用videojs插件,javascript,requirejs,video.js,Javascript,Requirejs,Video.js,我在一个网站上工作,其中包含一些我无法控制的JS代码。该代码使用RequireJS加载依赖项和所有 免责声明:我是RequireJS noob。我了解基本情况,但基本上就是这样 在我的网站上,我需要使用VideoJS。VideoJS可以使用或不使用RequireJS,但据我所知,如果页面中的某个地方使用了RequireJS,没有它我就无法使用VideoJS 因此,我正在加载带RequireJS的VideoJS,如下所示: var MyRequire = requirejs.config({

我在一个网站上工作,其中包含一些我无法控制的JS代码。该代码使用RequireJS加载依赖项和所有

免责声明:我是RequireJS noob。我了解基本情况,但基本上就是这样

在我的网站上,我需要使用VideoJS。VideoJS可以使用或不使用RequireJS,但据我所知,如果页面中的某个地方使用了RequireJS,没有它我就无法使用VideoJS

因此,我正在加载带RequireJS的VideoJS,如下所示:

var MyRequire = requirejs.config({
    baseUrl: '/_/js',
    paths: {
        videojs: 'http://vjs.zencdn.net/5.3.0/video'
    }
});
MyRequire(["videojs"], function(videojs) {
    videojs('myPlayer', {}, function(){
        console.log('...');
    });
});
它正在工作

但我想使用VideoJS插件来管理预售广告

我试图在RequireJS中包含插件脚本,该脚本已包含在内,但一旦插件尝试访问videojs对象,我就会收到一个错误,告诉我videojs未定义

我的猜测是,当我将VideoJS作为RequireJS模块加载时,它不在全局范围内,我使用的插件正在全局范围内查找VideoJS,这就是为什么我会出现这个错误

有没有办法不用把VideoJS作为RequireJS模块加载就可以使用它?或者我如何帮助插件找到VideoJS对象

谢谢你的帮助

您应该使用from requirejs并将videojs注入到全局范围中。 我为你的案例做了一个代码示例。我对它进行了测试,效果良好(您可以看到下面的图片):

装货顺序:

  • “videojs”
  • “在全局范围内添加视频js”
  • “ads”(此时videojs变量已在窗口对象中)
  • “预滚”
  • Requirejs分析顺序:

  • requirejs([“预滚”,“广告”]-入口点
  • “预滚”-需要“广告”
  • “ads”-需要“在全局范围内添加视频js”
  • “在全局范围内添加视频js”-需要“videojs”并在窗口对象中添加videojs变量
  • app.js
    requirejs.config({
    路径:{
    “videojs”:“/libs/video”,
    “ads”:“/libs/videojs.ads”,
    “预滚”:“/libs/videojs预滚”
    },
    垫片:{
    “预滚”:{
    副部长:['ads']
    },
    “广告”:{
    deps:[“在全局范围内添加视频js”],
    }
    }
    });
    定义(“在全局范围内添加视频js”,[“视频js”],函数(视频js){
    window.videojs=videojs;
    });
    requirejs([“预滚”,“广告”],功能(预滚,广告){
    //预售和广告将是未定义的,因为它不是amd。
    videojs('idOne',{},函数(){
    var player=这个;
    player.ads();//初始化ad框架
    //您的自定义广告集成代码
    });
    });