对于我们的 Code Igniter 应用程序,我们在结束 body 标记之前加载所有 javascript。
所以在我们的控制器中我们有
$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>
tags.
这些包括
现在这很有效,直到您考虑仅在特定页面上使用的 JS,或内联 JS。
您不能将 JavaScript 转储到页面中的任何位置,因为它通常会使用您在底部加载的部分内容。
所以我现在要做的是
I have /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);
}
然后在我的脚视图中,在所有其他文件(在产品环境中合并到一个文件然后缩小)之后,我有
foreach($js as $jsOut) echo $jsOut;
它只是吐出所有的 javascript。
这是最好的方法吗?或者,还有更好的方法?
这看起来有点混乱......