在codeigniter中处理大型js文件的最佳方式
问题描述:
我正在为其中一个应用程序构建一个统计包,我想在显示不同信息的页面上显示8个图形。问题是 - 什么是迭代我的数据在js文件中的最佳方式? (或添加BASE_URL()到样式表?在codeigniter中处理大型js文件的最佳方式
我把我的JS在根/脚本
目前,我有8个图表与我的谷歌charts-
function drawtwitterChart() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'x');
data.addColumn('number', 'Twitter');
<?foreach($twitter_results->result_array() as $twitter_result){?>
data.addRow(["<?=$twitter_result['hour']?>", <?=goAssocArrayNumeric($twitter_result,0)?>]);
<?}?>
// Set chart options
var options = {'title':'How Much Pizza I Ate Last Night',
'width':300,
'height':250};
new google.visualization.LineChart(document.getElementById('twitter_chart_div')).
draw(data, {curveType: "function",
width: 400, height: 320,
vAxis: {maxValue: 10}}
);
}
这一切都是在头我的网页,我想删除此,并把它变成js文件?需要仍然可以通过数据 - 迭代想知道别人怎么做呢?
答
有接近这几方面。
最简单的就是为你的动态生成的JS创建一个控制器。调用一个输出JS的观点之前,设置响应头:
$this->output->set_header('Content-type: text/javascript');
如果你有大量的JS文件,你可以通过你所有的JS链接调用这个控制器甚至会更进一步。您可以自定义链接以在一次调用中请求所有JS文件,并且控制器可以将它们组合起来并将它们作为单个文件提供。您可以在请求中包含版本信息,以确保获得正确的版本并防止在需要更新时缓存JS。
更进一步,控制器可以缓存给定版本的组合文件,因此您不必在每次请求时都处理它。如果您的JS文件需要动态内容,则可以对JS进行分层,以便将静态JS文件组合并缓存,然后每次生成动态JS文件,并将其与缓存的静态文件结合使用,然后进行处理。