我知道这个问题已经被问过好几次了,但我似乎找不到合适的解决方案来解决我的问题。
我正在使用 CodeIgniter,这是一个遵循 MVC(模型-视图-控制器)原则的 PHP 框架。
我有许多 javascript 文件,如 jQuery 和其他通用库,我需要包含在head标记中的每个页面。我还查看了直接嵌入在脚本块中的视图中的特定 javascript。
视图customerInfo.php的示例:
<script type="text/javascript">
// some javascript here for customerInfo view
// I MUST be able to use PHP variables in this script block ex:
var customerName = "<?php echo $customerName; ?>";
</script>
<p class="someClass">Hello <?=$customerName?>, may the lord provide you with bananas</p>
我的网站布局如下:
<html>
<head>
<script src="http://coolStorybro.com/jquery.js" type="text/javascript"></script>
<script src="http://coolStorybro.com/commonStuff.js" type="text/javascript"></script>
</head>
<body>
<div class="header">some header stuff</div>
<div class="pageContent">
<?php echo $view; ?> // In this case, $view will hold the view customerInfo
</div>
</body>
</html>
我的目标是将我所有的 javascript 放在同一个地方,这样我就可以缩小它并最终将它放在我的页面底部以进行加载优化。
我知道我可以将视图特定的 javascript 存储在一个名为customerInfo.js的单独文件中并将其加载到head标记中,但我觉得为每个视图创建一个单独的 javascript 文件太多了,我将无法在其中使用PHP,这是我必须的。
所以我问你们,有没有解决我的问题的方法,还是我注定要让我的页面到处都是脚本块?
感谢您的时间。
编辑:
有没有办法将视图特定的javascript(所有视图)放在一个文件中,并以某种方式将其分隔在模块中,并且只加载所需视图的特定模块?
假设viewsJS.js包含所有特定于视图的javascript:
module ("customerInfo",
$(".someClass").html("Bla bla bla");
);
module ("invoiceInfo",
// Some code to be executed when the invoiceInfo module is loaded
);
一旦定义了每个模块(视图)的 javascript,就会有一种方法可以将它们加载到相应的视图中。问题是,我的视图中不能有一个脚本块来“加载”模块,所以..我一无所知。