Для нашего приложения 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.
Это лучший способ сделать это?или есть лучший способ?Это только кажется немного грязным ...