лучший способ обработки больших файлов js в codeigniter

я создаю пакет статистики для одного из приложений, которые я создал, и я хотел бы иметь 8 графиков на странице, показывающих различную информацию. проблема в том, как лучше всего перебрать мои данные в файле js? (или добавить base_url() в таблицы стилей?

я держу свои js в корне/скриптах

в настоящее время у меня есть 8 графиков для моих диаграмм Google-

 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? нужно все еще перебирать данные - интересно, как это делают другие?


person Chris Mccabe    schedule 25.11.2011    source источник


Ответы (1)


Есть несколько подходов к этому.

Самым простым было бы создать контроллер для вашего динамически сгенерированного JS. Перед вызовом представления, которое выводит JS, установите заголовок ответа:

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

Если у вас много JS-файлов, вы можете пойти еще дальше, заставив все ваши JS-ссылки вызывать этот контроллер. Вы можете настроить ссылки для запроса всех ваших JS-файлов в одном вызове, а контроллер может объединять их и обслуживать как один файл. Вы можете включить информацию о версии в запрос, чтобы убедиться, что вы получаете правильную версию, и предотвратить кеширование JS, когда вам нужно его обновить.

Более того, контроллер может кэшировать объединенные файлы для данной версии, поэтому вам не нужно обрабатывать их каждый раз, когда они запрашиваются. Если у вас есть JS-файлы, которым нужен динамический контент, вы можете распределить JS-файлы таким образом, чтобы статические JS-файлы объединялись и кэшировались, а динамические JS-файлы каждый раз генерировались, объединялись с кэшированными статическими данными и затем обслуживались.

person minboost    schedule 25.11.2011