将Angular单页应用程序导出到静态HTML / CSS / JS

时间:2020-05-17 02:17:54

标签: javascript angular

我正在寻找将单页Angular Application转换为旧样式的html-css-javascript静态文件的方法,这些文件可以在我的计算机上运行,​​而无需进行任何复杂的A media file bunny.webm is generated in the same directory. 或任何node.js的设置< / p>

我一直在寻找并来到npm的地方是,我一直在寻找具有轻量级AngularBootstrap-sidebar的{​​{1}},但我能找到的所有例子都很大,因为Javascript文件很大,所以我看到Angular有一些新颖的Sidebar实现。

我想将Angular边栏(Angular应用程序)转换为旧样式cssjsHTML文件,以便我可以在没有任何复杂节点服务器的情况下运行它们。

有什么方法可以将javascript,css和html移出Angular应用程序。我听说过css,但没有尝试过,因此任何建议都将不胜感激。

如果上述过程可以在js中完成,建议我提出一种可靠的方法。

编辑:我想要的是,我想以WebPack的身份访问文件,我不想使用HTTP(React

3 个答案:

答案 0 :(得分:12)

注意

当编译一个角度项目时,结果已经是一个普通的html / css / js网站。您不需要nodejs来运行angular,但是,像任何网站一样,您应该使用http服务器。因此,您的问题在于,如果没有Web服务器,就无法从文件打开有角度的网站。

说明

您的问题很可能是从浏览器打开结果index.html时控制台中出现错误。它们来自浏览器实现的改进的安全标准(CORS,严格的mime类型,对本地文件的访问等)。由于除了声明您只有空白页之外,您根本没有提供任何错误详细信息,因此这是一个基本解决方案

解决方案

尝试在构建时将基本href设置为.

ng build --prod --base-href=.

该网站应该可以正常运行,而无需在Firefox上进行进一步操作。

在Chrome上,您可能会遇到以下错误之一

CORS策略已阻止从来源“ null”访问“ file://XXXXXXscripts.js”中的脚本:协议方案仅支持跨来源请求:http,数据,chrome,chrome扩展名,https。

无法加载模块脚本:服务器以非JavaScript MIME类型“”响应。根据HTML规范对模块脚本强制执行严格的MIME类型检查

一种可能的解决方案是,如果使用角度8+,则从type="module"底部的所有script标签中删除index.html属性。

还有其他一些方法可以解决本地文件上与CORS相关的问题,但这涉及禁用chrome上的安全性,这不是一个好主意。

答案 1 :(得分:1)

这真的很简单 您可以运行npm run build / ng build命令。 构建过程会将所有代码转换为等效的js代码,您可以在根项目目录的“ dist”文件夹中找到此已转换的代码。 您可以在此处使用index.html,这将是您的基本html页面,其他js文件或媒体文件是javascript文件。 您可以在dist文件夹中使用此内容来托管您的网站,该网站将完全基于html css和js。您可以使用nginx或任何其他服务器托管它。

答案 2 :(得分:0)

在Angular中,您可以使用ng build来构建角度应用程序。这将生成与您编写的.ts代码等效的纯js。