我知道这个问题已被问了好几次,但我似乎无法找到一个适当的解决方案,我的问题。如何处理在MVC网站查看特定的Javascript
我使用CodeIgniter,一个遵循MVC(模型 - 视图 - 控制器)原理的PHP框架。
我有很多javascript文件,如jQuery和其他通用库,我需要为每个页面包含在头标记中。我也有查看特定的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一个单独的文件,并在头标签加载它,但我觉得这太过分了创建一个单独的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的定义,有将其加载到其相应的视图的方式。事情是,我不能在我的视图中有一个脚本块来“加载”模块,所以......我无能为力。
你有没有试过像commonjs/amd模块系统? – Ven 2013-03-18 14:46:38
您不必在脚本中嵌入PHP。您可以将这些信息放入HTML元素的“数据”属性中,或者类似的东西。 – Pointy 2013-03-18 14:47:36
将javascript添加到页面底部而不是页眉是不好的做法。 – Derfder 2013-03-18 14:53:42