【发布时间】:2023-03-22 04:00:01
【问题描述】:
我正在 Backbone 中构建一个网站,网站结构类似于 Youtube,因为当您使用页面链接更改页面时,只会重新加载 DOM 的一部分(即非导航组件)整个文档。
因此,当用户使用我网站上的链接访问子页面时,Backbone 将发出 AJAX 调用并接收子页面的 HTML,如下所示:
<section id="SubpageView">...</section>
<script>
// Defines the view that controls #SubpageView.
if(typeof SubpageView !== 'undefined') {
// If this is the first time the page is loaded, create class.
var SubpageView = Backbone.Model.extend({
el: '#SubpageView',
...
});
}
MainView.currentSubpage = new SubpageView();
</script>
多次调用 SubpageView() 有什么缺点(即僵尸视图、内存泄漏等)吗?在我看来,使用 el 而不是 tagName 定义 View 元素似乎是针对您只使用一次的元素。
注意:我知道单页 Web 应用程序通常会将其所有模板烘焙到持久性 DOM 中,并且所有 HTML 都使用客户端模板处理。但是因为我将网站设计为在没有 pushState() 或禁用 Javascript 的情况下降级为传统的服务器端渲染,所以我不想将所有模板烘焙到持久 DOM 中。
【问题讨论】:
-
可以使用jQuery多次注入View。例如,您在标签“elems”处有 div 元素,并在循环中创建了一个 Views 。
$(".elems").append(yourElem);