老实说,这取决于应用程序和目的范围。当您最初知道内容会增长但不知道增长到什么程度时,单页应用程序是一个理想的解决方案。在这种场景下,您可以将内容页面绑定到导航,然后随意添加。
并非没有挑战,但资源管理的一种方案是使用全局变量/对象进行跟踪。这是该概念的一个非常基本的示例。这是用于一些现有应用程序的基础,因此它可以工作。诀窍是跟踪加载的内容和资源,并管理要调用的 onread 方法。通常,我有一个名为“contentOnReady()”的函数,它是在内容加载时调用的初始函数,并充当伪 $(document).OnReady,就像加载内容时一样,该船已经航行。
var resources = {group:{script:'group.js'}};
var includesPath = 'content/';
var currentLoadedContent = 'defaultpage.html';
var callbackAssigned = false;
var callbackMethod;
function initContent(){
callbackAssigned = true; //--set flag for callback
callbackMethod = function(){onGroupLoad('group loaded');} //--set function to run on content load callback
loadContent('group');
}
function loadContent(page){
if(page != currentLoadedContent){
currentLoadedContent = page;
//--retrieve your content
$.get(includesPath + page + '.html', function(data) {
//--based on the page, you can assign specific methods and load any dependencies
switch(page){
case 'group':
$.getScript('scripts/' + resources[page]['script'])
break;
}
/*
alternatley you can simply assign a call back prior to loading the content,
and then run upon load completion (this example has a delay prior to callback execution,
which can be helpful if using any jQuery animation functions to allow them to complete)
*/
if(callbackAssigned){
window.setTimeout("callbackMethod()",500); //--run assigned callback function
callbackAssigned = false;
}
});
}
}
function onGroupLoad(message){
alert(message);
}
同事在使用 .Net 时使用的另一个选项是实际将整个页面与所有必要的逻辑放在一起,然后获取该页面。把它想象成一个自包含的页面,有自己的脚本和资源加载和烘焙。需要注意的是资源的路径(例如脚本)。我认为它变得更难维护,并且路径是一个令人头疼的问题,但它也可以工作。
这都是个人喜好,取决于项目。希望这有助于提供另一种观点。