Avoiding Duplicate Scripts
One way to avoid accidentally including the same script twice is
to implement a script management module in your templating system. The
typical way to include a script is to use the SCRIPT
tag in your HTML page:
<script type="text/javascript" src="menu_1.0.17.js"></script>
An alternative in PHP would be to create a function called
insertScript
:
<?php insertScript("menu.js") ?>
While we're tackling the duplicate script issue, we'll add
functionality to handle dependencies and versioning of scripts. A simple
implementation of insertScript
follows:
<?php function insertScript($jsfile) { if ( alreadyInserted($jsfile) ) { return; } pushInserted($jsfile); if ( hasDependencies($jsfile) ) { $dependencies = getDependencies($jsfile); Foreach ($dependencies as $script) { insertScript($script); } } echo '<script type="text/javascript" src="' . getVersion($jsfile) . '"></script>"; } ?>
The first time a script is inserted, we'll reach pushInserted
. This adds the script to the
alreadyInserted
list for the page. If
that script is accidentally inserted again, the test for alreadyInserted
will not add the script again,
thus solving the duplicate script issue.
If this script has dependencies, those prerequisite scripts are inserted. In this example, menu.js might depend on events.js and utils.js. You can capture these dependency relationships using a hash or database. For simpler sites, dependencies can be maintained manually. For more complex sites, you may choose to automate ...
Get High Performance Web Sites now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.