Загрузка JavaScript в Code Igniter - PullRequest
       11

Загрузка JavaScript в Code Igniter

2 голосов
/ 23 августа 2011

Для нашего приложения Code Igniter мы загружаем весь наш javascript непосредственно перед закрывающим тегом body.

, поэтому в наших контроллерах у нас есть

$this->load->view('head', $this->head);
$this->load->view('main_view_for_controller', $data);
$this->load->view('foot', $this->foot);

И в представлении ноги мы имеемкуча <script src="master.js"></script> тегов.

К ним относятся

  • jQuery
  • jQuery-ui
  • shared-functions

Теперь это прекрасно работает, пока вы не подумаете о JS, используемом только на определенных страницах, или о встроенных js.
Вы не можете просто выгрузить свой javascript где-нибудь на странице, так как он обычно будет использовать биты и кусочки частей, которые вынагрузка внизу.

Итак, что я сейчас делаю,
У меня есть /application/views/js/, где у меня будет что-то вроде login.php

login.php может содержать, например,

<script>
$(function(){

    var user_id = <?php echo $this->user->get('id'); ?>;
    var return = '<?php echo $return_url; ?>';

    $('#login form').submit(function(){[...]});

    $('#login .facebook').click(function(){[...]});
});
</script>    

так что в моем контроллере я бы назвал
$this->foot['js'][] = javascript('login', array('return_url' => '/users'));

//source of function javascript() from inside a helper
function javascript($file, $config = array()){
    return $this->load->view('js/'.$file, $config, true);
}

, затем в моем представлении ноги после того, как все другие файлы (которые в env продукта объединены в одинфайл, а затем уменьшен) У меня есть

foreach($js as $jsOut) echo $jsOut;

, который просто выплевывает весь JavaScript.

Это лучший способ сделать это?или есть лучший способ?Это только кажется немного грязным ...

1 Ответ

0 голосов
/ 24 августа 2011

Хорошей идеей может быть использование сегментов страницы, чтобы определить, какие сценарии включить.Вместо того, чтобы постоянно заполнять массив, вы можете определить свои сценарии и к каким страницам они также принадлежат, а затем просто проверить сегменты страницы, чтобы определить, какие сценарии JS следует включить.Прочитайте документацию по классу URI здесь .

Так что в вашем включении вы сделаете что-то вроде этого.

<?php if ( $this->$this->uri->rsegment(2) == 'login' ): ?>
// Your login page specific scripts here
<?php endif; ?>

<?php if ( $this->$this->uri->rsegment(2) == 'home' ): ?>
// Your homepage specific scripts here
<?php endif; ?>

Замените числа 2 на те, к которым относится сегментна страницу, на которой вы находитесь.

...