如何最大限度地减少CDN的展示位置?

时间:2015-10-05 03:02:09

标签: html requirejs cdn

我正在为我的网络应用程序使用bootstrap和jQuery CDN,我只是想知道有没有办法不必去我的文件堆并粘贴CDN链接和脚本而只是把它全部放在一个放置?

假设我无法在本地保存bootstrap或jQuery,或者将Web应用程序设为单页Web应用程序。

我相信Require.js可以做到这一点,但我不确定是否有其他JavaScript库可以做到这一点?

2 个答案:

答案 0 :(得分:0)

首先让我说明一点,大多数CDN已经包含了缩小版本......但是有几个选项可以自己完成。 See here for others

我使用过这个,JShrink

以下是使用CDN列表的示例:

要包含您的脚本..

$scripts = array(
    "https://code.jquery.com/jquery-2.1.4.js",
    "https://code.jquery.com/ui/1.11.4/jquery-ui.js"
);

foreach($scripts as $script) 
    echo "<script src='minifier.php?url=".urlencode($script)."'></script>\n";

然后minifier.php看起来像这样..

<?php
include('vendor/autoload.php');
$minifiedCode = \JShrink\Minifier::minify(file_get_contents($_GET['script']));
header("Content-Type: application/javascript");
echo $minifiedCode;

答案 1 :(得分:0)

您可以在应用的javascript文件中使用以下Javascript在页面标题中插入任何CDN。但是你至少需要在这个脚本的所有页面中链接相同的javascript文件。

function loadjscss(filename, filetype){
    if (filetype=="js"){ //if filename is a external JavaScript file
        var fileref=document.createElement('script')
        fileref.setAttribute("type","text/javascript")
        fileref.setAttribute("src", filename)
    }
    else if (filetype=="css"){ //if filename is an external CSS file
        var fileref=document.createElement("link")
        fileref.setAttribute("rel", "stylesheet")
        fileref.setAttribute("type", "text/css")
        fileref.setAttribute("href", filename)
    }
    if (typeof fileref!="undefined"){
        document.getElementsByTagName("head")[0].appendChild(fileref)
    }
}

loadjscss("https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js", "js");

loadjscss("https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css", "css");