管理javascript包含文件

管理javascript包含文件,javascript,iframe,Javascript,Iframe,目前,我们有一个广泛的基于web的office应用程序,用PHP和javascript编写,用于管理各种流程(计费、订购、用户管理、报告、订阅管理、文章管理、仓储等) 应用程序使用iFrame加载在主应用程序界面中执行各种功能的页面。从主页面创建选项卡,以便您可以在需要时访问所有打开的页面。每个页面都有自己的javascript,包括文件、css等,用于执行复杂任务。所有iframed页面(大约600个)都位于同一域/主机上 由于许多人将使用iframe描述为“邪恶”,我正在研究如何将应用程序转

目前,我们有一个广泛的基于web的office应用程序,用PHP和javascript编写,用于管理各种流程(计费、订购、用户管理、报告、订阅管理、文章管理、仓储等)

应用程序使用iFrame加载在主应用程序界面中执行各种功能的页面。从主页面创建选项卡,以便您可以在需要时访问所有打开的页面。每个页面都有自己的javascript,包括文件、css等,用于执行复杂任务。所有iframed页面(大约600个)都位于同一域/主机上

由于许多人将使用iframe描述为“邪恶”,我正在研究如何将应用程序转换为只使用div

我的问题是:

1) 在不再有iFrame的情况下,是否需要在主起始页上包含所有使用过的javascript文件?或者可以根据您访问的页面将javascript文件动态加载到内存中吗?(包括新函数声明等)

2) 当有人关闭页面时,这些包含文件是否可以完全从内存中删除?(在本案中为div)。这是为了避免不同文件的函数名和变量之间可能存在的冲突,也不会增加浏览器的内存使用

3) 或者也许iFrame毕竟不是那么“邪恶”,这是使用iFrame的正确方法

谢谢你的建议

奶酪
帕特里克

你有没有试过密码或者只是问一下

您可以使用jquery()


只要javascript是模块化的,就可以随时卸载它

如果您不知道,Javascript中的函数是对象。对于对象,您可以执行以下操作:

var a = {b:10, c:20, d:30}; //Some memory is allocated for object a
a = null; //Object a will be deleted, and no longer need any memory
如何使用它来处理函数?下面是最简单的解释:

var myFunction = function(a,b,c) {
    alert(a+b+c);
}; //Here we have a function stored in memory
myFunction = null; //And now we don't
您可以通过这种方式创建整个函数库,然后通过一次操作将其删除。例如:

var MyMath = {};
MyMath.abs = function(a) {
    return (a<0)?-a:a;
};
MyMath.min = function(a,b) {
    return a>b?b:a;
}; //MyMath uses some memory.
alert(MyMath.min(5,10));
MyMath = null; //Now it does not
2) 当您不再需要该库时,只需执行
MyMathLibrary=null
。在这一点上,您也可以从DOM中删除它,它不会造成任何伤害,正如我所说的,在这一点上它只不过是不可见的div


但老实说,你确定这值得这么麻烦吗?如今,人们纯粹用Javascript编写,计算机的内存为4-16GB。此外,通常的做法是先制定一个有效的程序,只有当它滞后时才进行优化。否则,您可能会花一个月的时间来完成一些用户永远不会注意到的事情。

我知道如何将JS代码附加到DOM中,以便它执行。我担心的是JS代码会留在内存中。如果应用程序中有600个页面,那么内存中的JS代码量将会累积,并且可能会发生冲突。哦,顺便说一句,我们使用的是纯javascript,没有jquery:)谢谢!我想这就是办法。但这仍然意味着我必须将所有js文件合并成一个大文件?因为如果我动态地将js文件(objects*vars等)加载到内存中(通过将js脚本附加到DOM中),然后在关闭它时将其设置为null;如果我再次访问页面,对象将被重新设置?难道你们不想只设置一次函数和对象吗?在我的回答中增加了回答。
var MyMath = {};
MyMath.abs = function(a) {
    return (a<0)?-a:a;
};
MyMath.min = function(a,b) {
    return a>b?b:a;
}; //MyMath uses some memory.
alert(MyMath.min(5,10));
MyMath = null; //Now it does not
if (MyMathLibrary == null || MyMathLibrary == undefined) {
    createScriptElementForMathLibrary();
}

alert(MyMathLibrary.calculateEnthropyOfTheUniverse());