我目前正在声明要通过v2教程学习CanJS。
的 索引.html 由以下行组成
<!-- CanJS application root -->
<div id="can-main"></div>
<script src="libs/jquery-3.1.1.js"></script>
<script src="libs/can.jquery.dev.js"></script>
<script src="libs/can.map.define.js"></script>
<script src="libs/can.stache.js"></script>
<script src="libs/can.fixture.js"></script>
<script src="app.js"></script>
<script src="components/tut-form/base.js"></script>
app.js
没有什么特别的. 组件 JavaScript 文件 (base.js
) 看起来像这样
can.Component.extend({
tag: 'tutorial-form',
template: can.view('components/tut-form/base.stache'),
viewModel: {
hello: 'Hello Input Component'
}
});
我添加了标签<tutorial-form></tutorial-form>
作为索引<body>
的最后一行.html。
现在至少FF给出了以下错误
XML 分析错误:文档元素之后的垃圾 位置: file:///path/to/tutorial/components/tut-form/base.stache 第 2 行,第 1 列:
虽然这个文件看起来像这样
<h3>Hello</h3>
<h3>{{hello}}</h3>
好吧,我想,我只是缺少一个CanJS组件(我使用的是CanJS.zip中的文件,因为自定义下载页面已损坏或看起来根本不像教程中描述的那样),例如can.Component
或can.view
。浏览器可以加载 .stache 文件,但我不确定幕后会发生什么。
有人暗示我在这里做错了什么吗?
静态文件服务器是我解决这个问题的方法。不要file://
加载所有文件,这可能在 FF 中也不起作用(在 Chrome 中,您会收到不允许本地文件类消息的跨域请求)。
我刚刚配置了一个 NGINX 以便为这个小项目提供文件,现在它运行良好。
旁注:在这种情况下,将自定义标记(如<tutorial-form/>
)添加到索引.html不起作用。相反,您需要附加此元素(一个可以。组件)到正文,如下所示:
$( 'body' ).append( can.stache( '<tutorial-form />' )() );