SlimFramework 整合輸出 CSS, JS


太早起來.再作點小記錄.
因為某些需求和權限不夠的情況下,
需要處理大量的 JS 和 CSS 輸出.
不過由於一行一行輸出會影響到加載速度等問題.
就只好用這種奇技淫巧的方式來整合檔案.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
if (defined("IN_APPS") === false) exit("Access Dead");

$app->hook('app.asset.cache', function() use ($app) {
$app->etag(Util::to_etag($app->config('asset_version')));
$app->expires('+1 week');
});

$app->get('/asset/application.css', function() use ($app) {
$css_content = "";
$css_files = array('bootstrap.css', 'default.css', 'bootstrap.responsive.css');
foreach($css_files as $css_file) {
$css_content .= file_get_contents(WWW_ROOT.'/public/stylesheets/'.$css_file);
}

$app->applyHook('app.asset.cache');
$app->contentType('text/css');
$app->response()->body($css_content);
});

$app->get('/asset/application.js', function() use ($app) {
$js_content = "";
$js_files = array(
'jquery.js', 'jquery.timeago.js', 'jquery.simply.countable.js', 'jquery.countup.js',
'bootstrap.js',
'default.js'
);
foreach($js_files as $js_file) {
$js_content []= file_get_contents(WWW_ROOT.'/public/javascripts/'.$js_file);
}

$app->applyHook('app.asset.cache');
$app->contentType('application/javascript');
$app->response()->body(implode("\n\n", $js_content));
});
?>