将 javascript 个脚本标签合并为一个

consolidating javascript script tags into one

我正在尝试使用 wavesurfer.js,目前有以下内容:

   'use strict'
    <!-- wavesurfer.js -->
    <script src="src/wavesurfer.js"></script>
    <script src="src/util.js"></script>
    <script src="src/webaudio.js"></script>
    <script src="src/mediaelement.js"></script>
    <script src="src/drawer.js"></script>
    <script src="src/drawer.canvas.js"></script>
    <script src="./plugin/wavesurfer.regions.js"></script>
    var wavesurfer = Object.create(WaveSurfer);

这很好用。

我需要将所有这些合并为一个,并使用类似的东西:

<script src="myWavesurfer.js"></script>
var wavesurfer = Object.create(WaveSurfer);

我尝试了以下方法:

var jScripts2Call =
[ '/src/wavesurfer.js',
  '/src/util.js',
  '/src/webaudio.js',
  '/src/mediaelement.js',
  '/src/drawer.js',
  '/src/drawer.canvas.js',
  '/plugin/wavesurfer.regions.js'];
// load all the jScripts
for ( var i=0; i < jScripts2Call.length; i++ )  {
    var script    = document.createElement('script');
    script.src    = jScripts2Call[i];
    script.type   = 'text/javascript';
    script.async  = false;
    var scripts = document.getElementsByTagName('script')[0];
    scripts.parentNode.insertBefore(script, scripts);
};
var wavesurfer = Object.create(WaveSurfer);

但这些脚本不会在我调用 Object.create(WaveSurfer) 之前 "execute",只有在调用之后。我试过使用 jquery:

$( document ).ready( function() {
  var wavesurfer = Object.create(WaveSurfer);
})

我也尝试了 jQuery(dot)getScript() ,它似乎只加载了第一个脚本。我使用 jQuery(dot)ajax() 时运气好一点,但我还是无法在 Object.create(WaveSurfer) 调用之前加载和执行脚本。

看起来 gulp-concat 可能是可行的方法,但我希望有更简单的方法。

一如既往,我们非常感谢您的帮助。想法?

您需要使用加载事件而不是就绪事件。当所有 html 标签本身完成加载时,而不是其他文件完成时,就绪触发。使用 jquery,你可以这样做:

$( window ).load( function() {
  var wavesurfer = Object.create(WaveSurfer);
})

或者使用常规 js(因为你并不真的需要 jquery):

window.onload = function() {
  var wavesurfer = Object.create(WaveSurfer);
}