Javascript中基于类的框架导致浏览器挂起
Class-based frameworks in Javascript cause browser to hang
我早些时候问过这个关于EXT的大型实现使浏览器崩溃的问题。
我现在发现这是主干和three.js的情况。似乎每个基于类的javascript库都有一个内置的可伸缩性约束,因为没有办法限制代码加载。
在这些情况下,挂起浏览器的是类实例化,而不是对象实例化。即使EXT的"延迟加载"也只是延迟对象的实例化,而不是类,浏览器崩溃通常发生在EXT开始对象实例化阶段之前。
Backbone试图通过将代码分离到视图来解决这个问题,但只是试图在每个视图中加载太多代码,然后看着它崩溃。
我不想在这里表现得迟钝。当我问"当你实例化1000个EXT组件时会发生什么",我得到的回答是"不要实例化那么多"时,响应者只是没有抓住要点。
代码是什么并不重要,问题是可伸缩性限制是什么。
在EXT、Backbone和许多其他JS框架中,基于类的实例化是不平衡的。
如何将基于类的框架结构化为不同时实例化所有类?
但在浏览器中,脚本加载时间是有限的资源,大量基于类的系统必须同时编译,这是每个基于类的javascript框架的明显可扩展性问题:EXT.Backbone、Three.js等等。
有人能说明如何使这些框架具有可扩展性吗?
感谢的任何帮助
4000行代码根本不多。浏览器崩溃通常意味着无休止的自我维持循环,这些循环会消耗所有可用内存,因此一般来说,以下是一些可能的原因:
- 非名称空间框架的名称冲突
- 用函数重载原型,并遍历循环对象
- 执行不力
要调试,
- 获取每个框架的开发副本
- 在有罪构造函数中设置一些断点
- 使用javascript探查器来查看到底发生了什么
这不是一个真正的答案,但我认为类/对象的区别在这种情况下并不相关。就JavaScript而言,一切都是一个对象。"类"只是某些框架(如ExtJS)允许您使用的更高级的概念。
即使EXT的"延迟加载"也只是延迟对象的实例化,而不是类
ExtJS4确实能够只在需要的时候加载类(通过发出AJAX请求)。
- Chrome浏览器“;挂起”;同时在循环中执行AJAX请求
- fullcalendar在删除导致浏览器挂起的多个事件时速度较慢
- jQuery.每个都会导致浏览器挂起
- Javascript中基于类的框架导致浏览器挂起
- JQgrid 在渲染时完全挂起浏览器
- 浏览器在 ExtJS 中执行特定行时挂起
- 浏览器在使用Highcharts绘制超过10000个系列时挂起
- 添加要素图层将挂起浏览器
- 为什么HighChart挂起浏览器
- Javascript导致浏览器挂起
- HTML中嵌入的Java applet在发送电子邮件时挂起浏览器
- Internet Explorer浏览器问题:浏览器不提交POST数据与Ajax请求,服务器/客户端挂起
- 使用ajax进行自动刷新会在10-15秒后导致浏览器挂起或崩溃
- 简单的jquery每个循环使浏览器挂起
- 我的scrollTop() jQuery方法一旦滚动就挂起浏览器
- 如何调试挂起浏览器的JavaScript ?
- 我可以使用javascript强制浏览器“刷新”吗?任何挂起的布局更改
- 为什么更新进度条时浏览器挂起
- 使用Javascript基于二维属性数组自动生成多个相同类型的html元素会导致浏览器挂起
- 浏览器挂起/挂起检测