根据我对Angular2概念的理解——它将TypeScript文件转换为。js文件。原则上,应该可以编译、打包,然后从AWS S3桶、GitHub或任何静态源将Angular2应用程序作为静态应用程序运行。
如果我在节点服务器上运行Angular2应用程序(使用angular-cli "ng serve"命令),它会在服务器上占用500 MB的内存——这是"嘿,常见的!"-真的应该是那样吗?例如,相对于只需要浏览器的React,这个框架有什么好处呢?
我似乎找不到任何有用的Angular2应用程序作为静态编译的HTML+JS。
也许你能帮我理解这个,并解决?
非常感谢!
马里斯
运行BUILD命令到BUNDLE/BUILD
ng构建
或用于生产构建/包
ng build——prod
它会把你的应用构建/捆绑成一个可分发的应用。
当它完成后,在你的应用程序根目录中寻找一个dist
文件夹,它将包含你的应用程序需要在节点服务器之外运行的所有内容,比如tomcat实例。
感谢@Maris的评论,请确保您的文件路径相对于当前目录而不是相对于根目录。
只需运行这个命令来改变index.html中的base href元素。
ng build——prod——base-href ./
这是导出应用程序的好方法,只需要做一点更改打开index . html并更改
<base href="/">
<base href="./">
这个适合我:
$ ng build --prod --base-href ./
我认为在现代浏览器中出现错误是不可能的:
Uncaught (in promise): SecurityError: Failed to execute 'replaceState' on 'History:…
很遗憾
帮助我的是,
- 在app route目录下运行
ng build --prod --base-href ./
,生成dist/
文件 -
在
dist/
目录中,编辑index.html
使type="module"
和nomodule defer
属性从script
s中远程化。,
<script src="runtime-es2015.1eba213af0b233498d9d.js" type="module"></script> <script src="runtime-es5.1eba213af0b233498d9d.js" nomodule defer></script>
应改为,
<script src="runtime-es2015.1eba213af0b233498d9d.js"></script> <script src="runtime-es5.1eba213af0b233498d9d.js"></script>
如何为Angular 2的dist文件夹index.html提供服务
如果对每个人来说都不是显而易见的,对我来说也不是。如果您想在构建并修复它的base ref之后在本地运行dist文件夹,请使用http-server之类的东西并将其指向dist文件夹,而不是指向任何特定的文件。从项目文件夹
的cmd窗口c:usermyProject> http-server ./dist
链接