当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《当我也使用RequireJS时,如何使用videojs插件》经验,为你挑选了1个好方法。

我正在开发一个包含一些我无法控制的JS代码的网站.该代码使用RequireJS加载依赖项和所有.

免责声明:我是RequireJS菜鸟.我理解基础知识,但这几乎是......

在我的网站上,我需要使用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插件来管理预卷广告.(https://github.com/dirkjanm/videojs-preroll)

我尝试将插件脚本包含在RequireJS中,包含脚本,但是一旦插件尝试访问videojs对象,我就会收到一个错误,告诉我videojs没有定义.

我的猜测是,当我将VideoJS作为RequireJS模块加载时,它不在全局范围内,而我正在使用的插件正在全局范围内寻找VideoJS,这就是我得到该错误的原因.

有没有什么方法可以使用VideoJS而不将它作为RequireJS模块加载?或者我如何帮助插件找到VideoJS对象?

谢谢你的帮助!



1> Rajab Shakir..:

您应该使用requirejs中的shim并将videojs注入全局范围.我为你的案例编写了一个代码示例.我测试了它并且它有效(你可以看到下面的图像):

装货单:

    "videojs"

    "添加视频-JS-在全局作用域"

    "ads"(此时videojs var已经存在于window对象中)

    "预卷"

Requirejs分析顺序:

    requirejs(["preroll","ads"] - 切入点

    "preroll" - 需要"广告"

    "广告" - 需要"add-video-js-in-global-scope"

    "add-video-js-in-global-scope" - 需要"videojs"并在window对象中添加videojs var.

app.js

requirejs.config({
    paths: {
        "videojs": "./libs/video",
        "ads": "./libs/videojs.ads",
        "preroll": "./libs/videojs-preroll"
    },
    shim:{
        "preroll": {
            deps: ['ads']
        },
        "ads": {
            deps: ["add-video-js-in-global-scope"],
        }
    }
});

define("add-video-js-in-global-scope",["videojs"], function(videojs) {
    window.videojs = videojs;
});

requirejs(["preroll", "ads"], function (preroll,ads) {
    // preroll and ads will be undefined because it's not amd.
    videojs('idOne', {}, function () {
        var player = this;
        player.ads(); // initialize the ad framework
        // your custom ad integration code
    });
});
推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有