在codeigniter中处理大型js文件的最佳方法

时间:2011-11-25 17:01:06

标签: codeigniter codeigniter-2

我正在为我建立的其中一个应用程序构建一个stats包,我想在页面上显示8个图表,显示不同的信息。问题是 - 在js文件中迭代我的数据的最佳方法是什么? (或将base_url()添加到样式表中?

我将我的js保存在root / scripts

目前我的谷歌排行榜有8张图表 -

 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文件?需要仍然遍历数据 - 想知道别人如何做到这一点?

1 个答案:

答案 0 :(得分:0)

有几种方法可以解决这个问题。

最简单的方法是为动态生成的JS创建一个控制器。在调用输出JS的视图之前,设置响应头:

$this->output->set_header('Content-type: text/javascript');

如果你有很多JS文件,你可以通过让所有的JS链接调用这个控制器来进一步发展它。您可以在一次调用中自定义链接以请求所有JS文件,控制器可以将它们组合在一起并作为单个文件提供。您可以在请求中包含版本信息,以确保获得正确的版本,并防止在需要更新时缓存JS。

更进一步,控制器可以缓存给定版本的组合文件,因此您不必在每次请求时对其进行处理。如果你有需要动态内容的JS文件,你可以对你的JS进行分层,以便将静态JS文件组合和缓存,然后每次生成动态JS文件,结合缓存的静态,然后提供。