javascript - 动态加载/卸载 Javascript

标签 javascript web-applications dynamic

我们正在创建一个动态 Web 应用程序,其中只有网页的某些部分会通过 JQuery AJAX 加载/卸载/重新加载。

但是我们担心如果用户长时间(几个小时)运行我们的应用程序而没有完全刷新网页会发生什么。

例如,我们有一个带有 map 、商店、战斗模块的游戏。该页面还有一些在开始时加载的模块(例如带有统计信息和聊天的标题)。但所有导航和更改大部分都使用 AJAX 在中心进行。假设用户执行以下操作:

前往 map 前往商店 去战斗 前往商店 前往 map ...

由于 map 、商店、战斗都有自己单独的 Javascript 文件,这些文件会在每个请求上加载(我猜,主要来自浏览器缓存),内存使用情况会发生什么情况?当用户“离开”Map 时,我们是否需要清理 Map 变量和事件处理程序?用户第二次导航到 map 时,是否会与旧 map 脚本发生冲突?如果我们不在卸载时进行一些清理,浏览器是否会开始使用越来越多的 RAM,最终用户将被迫重新加载页面?

有没有可靠的技术来处理这种情况?

最佳答案

如果将所有函数绑定(bind)到某个对象,您可以随时释放该对象以及所有函数。例如:

function badFunction(a,b,c) {
   alert("Bad example of function. Can't cleanup this.";
}

var gameObject = new Object();
gameObject.goodFunction = function (a,b,c) {
   alert("Good example of a function");
}

//Here the whole gameObject 'module' will be allowed to be garbage collected (hopefully).
gameObject = null;

关于javascript - 动态加载/卸载 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6693395/

相关文章:

web-applications - 基于 Web 的应用程序的 3d 图形

php - 以动态方式为函数提供参数

arrays - 按字符串相等性排序,然后按 Swift 3 中的数字排序

javascript - 如何禁用 uglify-js 优化以删除对象文字周围的引号?

java - 如何在 eclipse 中配置 java web 应用程序以反射(reflect)在 tomcat 上部署后后端 jar 中的更改

javascript - MUI 中的 <Div>、<StyledDiv> 和 <Box sx={...}> 之间有什么区别?

php - 将 php 用于模块化目的的另一种方法

asp.net - 如何在回发时获取动态添加的datagridview列的值

javascript - 迭代对象的属性 Knockoutjs

javascript - 使用 Highcharts.js 绘制动态添加的数组元素