我有一个用RequireJS开发的Backbone/Marionette应用程序,我正在努力将它转换为Webpack。Webpack很好地打包了我的代码,但是当我试图加载打包的JS时,它遇到了一个错误,布局的DOM无法找到其中一个核心区域。错误消息是"An "el“#内容必须存在于DOM中”。
下面是我的源码的一个存根版本:
HTML:
<!DOCTYPE HTML>
<html lang="en">
<head>
<script type="text/javascript" src="/public/app/bundle.js"></script>
</head>
<body>
<div id="content" class="content"></div>
</body>
</html>JS:
var RootLayout = Marionette.View.extend({
el: 'body',
regions: {
content: '#content'
}
});
new RootLayout().getRegion('content').show(someView);我目前正在使用Marionette v3.0.0-pre.3,但在切换到Webpack之前没有任何问题-这可能是相关的,也可能是无关的。关于我如何解决这个问题的想法?
谢谢
发布于 2016-08-01 00:16:01
事实证明,我对init.js文件所做的一个更改以某种方式导致了这个问题。我使用嵌套的要求以正确的顺序加载和依赖项,并且我改变了它的工作方式来改变块的输出。恢复该更改解决了问题。
编辑:我已经在转换我的应用程序的道路上走得更远了-因为它是在节点服务器上运行的,我决定将我所有的RequireJS模块定义转换成CommonJS,这个问题再次出现了它丑陋的头。在用头撞墙几个小时后,我意识到问题是我的视图在它所在的HTML元素实际加载之前就被附加到了DOM上。在我的初始化代码周围使用一个简单的$(document).ready包装器才是真正的解决方案(实际上我只是将我的webpack捆绑包的脚本标记移到了HTML的底部)。
dr- RequireJS让你不必在开始摆弄DOM之前确保它已经准备好了,而CommonJS却没有。
https://stackoverflow.com/questions/38680745
复制相似问题