情况
我正在为几个页面的Web应用程序进行原型设计,其中一些页面具有严重的JavaScript负载.我有一个(不是非常原始的)将页面布局加载一次的想法,并且只用ajax请求更改内容.这可以做到,它工作得很好,但我有一些担忧.
该站点检查它获得的每个请求,如果它是一个AJAX请求,它只返回内容(作为MVC 4局部视图,但这不完全是重点,这可以在任何地方完成.)否则,它会加载整个页面,布局和一切.我的想法是为我正在下载的每个javascript包提供类似状态标记的内容.布局将有一个初始化js文件,包含页面的基本显示逻辑,如何获取内容等.
所有内容页面都会检查,如果加载了相关的脚本,如果没有,则启动下载,并在成功事件中设置正确的标志.当ajax调用由于某种原因失败时,需要一些额外的错误处理.
问题
现在我担心的是,在一些"子页面"上有相当多的JS.因为我必须能够在移动浏览器上工作(尽管最重要的东西只是桌面,但让我们忘记了一分钟),如果我有几个MB-s的脚本加载,它将如何影响性能内存,并"永远"卸载它们(因为页面没有重新加载).此外,如果我通过jQuery.getScript(...)函数获取脚本,是否会缓存脚本?或者我应该以另一种方式加载脚本?
同样的内容问题.如果我从正文中删除DOM元素,用其他元素替换它们,然后重新加载原始子页面,在长时间使用期间,内存使用和性能会怎样?
在我用一个无用的概念验证原型让自己看起来完全愚蠢之前,我真的希望有一个在这个领域有经验的人给我一些关于我的担忧的见解.
提前致谢!
编辑:将标题更改为正确的表达
编辑2:分开问题是什么,背景是什么
我目前正在尝试创建一个小项目来演示使用 RxJS 进行响应式编程。目标是向我的同事展示这个东西就在那里,值得研究。我对框架没有经验,所以这让事情变得复杂。
我正在尝试扩展我的另一个演示以使用 RxJS。不是一个很复杂的demo,基本上我可以添加任意数量的小表格,得到一个小公式计算出来的数字,还有一个按钮,可以汇总所有表格的值。
在表格中计算公式很容易,但我想我可以走得更远。
我想通过合并的 observable 自动完成求和运算。我想出的唯一解决方案是:
//dummy observables
var s1 = Rx.Observable.Interval(100);
var s2 = Rx.Observable.Interval(200);
//Combine the observables
var m = s1.combineLatest(s2, function(x,y){return x+y});
//Subscribe to the combined observable
var sub = m.subscribe(function(x){console.log(x)});
//A new observable is created
var s3 = Rx.Observable.Interval(300);
//Now I need to update all my subscriptions, wich is a pain.
m = m.combine(s3, function(x,y){return x+y});
sub.dispose();
sub=m.subscribe(function(x){console.log(x)});
Run Code Online (Sandbox Code Playgroud)
我想我可以得到另一个 observable 来通知我的订阅者自我更新 - 因为知道我的所有订阅者的工作方式会使整个架构变得毫无用处,但这对于这样的任务来说听起来有点矫枉过正,我不仅仅是指演示,我真的无法想象有一个“每天”真实世界的例子,这样的架构比仅仅观察任何变化和从我的表单“主动”获取计算值更能让事情变得更干净。
我可能会在处理表单的模块内主动获取和汇总值,并让外部世界订阅“m”可观察对象,将我的值从模块内部推入其中。
这是一个正确的方法吗?我认为是的,因为它们归我的模块所有,我应该完全控制发生在它们身上的事情,但我真的很感兴趣更有经验的人对此的看法。