让我们说我们有来自两个文件的以下javascript片段。我们如何用PHP构建all.js?
a.js
var a = 20;
function foo() {
console.warn('bar');
}
foo();
$(document).ready(function() {
$(".someid").on("click", ".class", function() {
do_stuff();
});
});
b.js
var x = ['room', 'admin', 2];
$(document).ready(function() {
$.post("url/", { n: 80}, function(j) {
console.log(j);
}, "json");
});
all.js
var a = 20;
function foo() {
console.warn('bar');
}
foo();
var x = ['room', 'admin', 2];
$(document).ready(function() {
$(".someid").on("click", ".class", function() {
do_stuff();
});
$.post("url/", { n: 80}, function(j) {
console.log(j);
}, "json");
});
答案 0 :(得分:0)
This is what I cooked。它假定遵循一些约定,如果没有则会破坏。但它足以满足我目前的需求。
$js_sources = array('
var a = 20;
function foo() {
console.warn("bar");
}
foo();
$(document).ready(function() {
$(".someid").on("click", ".class", function() {
do_stuff();
});
});','
var x = ["room", "admin", 2];
$(document).ready(function() {
$.post("url/", { n: 80}, function(j) {
console.log(j);
}, "json");
});
');
$outjs = array();
$outready = array();
foreach($js_sources as $js) {
$js = explode('$(document).ready(function() {', $js);
$outjs[] = $js[0];
$js = $js[1];
$mark = strrpos($js , '});');
$outjs[] = substr($js, $mark + 3);
$outready[] = substr($js, 0, $mark);
}
$out = implode(PHP_EOL, $outjs) .
'$(document).ready(function() {' . implode(PHP_EOL, $outready) . '});';