Angular 2 QuickStart <script>失败

时间:2016-04-04 14:28:29

标签: javascript html angular

我按照网络说明手动创建了Angular 2的 5 Min快速入门 。&#xA;该应用程序与QuickStart教程几乎完全相同。但是我导入了这样的.js文件:

&#xA;&#xA;
 &lt; script src =“node_modules / es6-shim / es6-shim.min.js”/&gt ;&#xA;&lt; script src =“node_modules / systemjs / dist / system-polyfills.js”/&gt;&#xA;&lt; script src =“node_modules / angular2 / es6 / dev / src / testing / shims_for_IE。 js“/&gt;&#xA;&lt; script src =”node_modules / angular2 / bundles / angular2-polyfills.js“/&gt;&#xA;&lt; script src =”node_modules / systemjs / dist / system.src。 js“/&gt;&#xA;&lt; script src =”node_modules / rxjs / bundles / Rx.js“/&gt;&#xA;&lt; script src =”node_modules / angular2 / bundles / angular2.dev.js“ /&gt;&#xA;  
&#xA;&#xA;

如下所示更改它们,使应用程序正常工作:

&#xA;&#xA; < pre> &lt; script src =“node_modules / es6-shim / es6-shim.min.js”&gt;&lt; / script&gt;&#xA;&lt; script src =“node_modules / systemjs / dist / system- polyfills.js“&gt;&lt; / script&gt;&#xA;&lt; script src =”node_modules / angular2 / es6 / dev / src / testing / shims_for_IE.js&gt;&lt; / script&gt;&#xA;&lt; script src =“node_modules / angular2 /捆绑/ angular2 - 对olyfills.js“&gt;&lt; / script&gt;&#xA;&lt; script src =”node_modules / systemjs / dist / system.src.js“&gt;&lt; / script&gt;&#xA;&lt; script src =” node_modules / rxjs / bundles / Rx.js“&gt;&lt; / script&gt;&#xA;&lt; script src =”node_modules / angular2 / bundles / angular2.dev.js“&gt;&lt; / script&gt;&#xA; &#xA;&#xA;

有人可以解释这个奇怪的(至少对我来说)行为吗?

&#xA;

2 个答案:

答案 0 :(得分:5)

在HTML中,script元素具有必需的开始标记和强制结束标记。您不能省略结束标记。这就是HTML的设计方式。

如果你想要一些历史背景:

通常在HTML元素的开头:

  • 包含的内容并具有强制性的开始和结束标记
  • 包含内容,但只允许选择有限的子元素,因此结束标记是可选的,因为它可以通过存在不允许作为子元素的元素来推断。 (例如<p>
  • 如上所述,但只能在非常有限的地方使用,因此 start 标记也是可选的(例如<body>
  • 无法包含内容(例如<img>),因此禁止使用
  • 的结束标记
此时引入了{p> <script>。它可以包含内容(内联脚本),因此需要开始和结束标记。

然后是XHTML。在XHTML中<foo /><foo></foo>意味着完全相同的事情。除了你需要一个XML解析器,并且浏览器没有使用它们来解析HTML(因为HTML不是XML所以它会出错)。您可以将文档作为application/xhtml+xml提供,这将触发XML解析器...除非它在浏览器没有的情况下会中断...如果您确实有一个黄色的死亡屏幕一个但作者提出了一个很小的良好错误。

所以几乎每个人都放弃了XHTML。

然后是HTML 5,它被设计为向后兼容和向前兼容。

在HTML 5中<foo />表示与<foo>相同,以便最终上瘾的XML可以继续在图片开始标记的末尾添加/

在HTML 5中有许多新元素,但是旧浏览器并不了解它们,所以当它们被引入时,所有这些元素的开始和结束标记都是强制性的,以便浏览器不会出现这种情况。识别它们(因此无法推断结束标记应该去的位置)不会扼杀DOM。

答案 1 :(得分:3)

根据各种W3C标准的规定,脚本标签不能自动关闭。

C.3. Element Minimization and Empty Element Content

  

给定内容模型不是EMPTY的元素的空实例(例如,空标题或段落)不使用最小化形式(例如,使用<p> </p>而不是<p />)。< / p>

A.1.1. XHTML-1.0-Strict

    <!ENTITY % Script "CDATA">
        <!-- script expression -->