如何在JavaScript中不使用输入类型文件的情况下读取包含html的文本文件?

时间:2019-05-15 13:50:28

标签: javascript json angular

我在资产文件夹中有一个文本文件,其中包含一些要在特定组件的div中呈现的html。

有没有一种方法可以读取该文件并将其内容分配给字符串变量,而无需用户与ngOnInit中的视图(具有输入文件类型)进行交互。

我的发现 如果我将html内容放入json对象,我们将不得不从中删除所有换行符。这意味着它将是一个没有换行符的字符串。

{
  "html": "<h1 class=\"user\">Name</h1><p>Ahsan</p>"
}

这对设计人员是有限制的,他们会将html转换为多行字符串,并且我们还将删除转义序列。

如何使用文本文件来实现。

原因

我想这样做是因为,我想避免为某些内容更改而重建和发布整个角度应用程序。即使是某些内容更改,我也必须重新构建并重新发布该应用程序。

2 个答案:

答案 0 :(得分:0)

问题非常模糊,所以我只列出一些可供研究的选项:

1)首先,如果这是浏览器页面,则可以在服务器上提供html页面并向客户端请求。

2)或者,您可以执行一个构建步骤,用HTML文件的内容替换一些变量值。这样可以避免解决方案(1)的HTTP请求。

3)另一方面,如果这是一个节点(或电子)应用程序,则除了解决方案(2)之外,您还可以使用节点的fs访问HTML文件。

4)最后,也许是最简单但最不可行的解决方案,是将HTML放入JS对象。与JSON不同,JS对象可以支持换行。例如

let x = {
    str: `line 1
          line 2`
};

尽管即使您要使用JSON文件,也可以在字符串中包含转义的新留置权\n

答案 1 :(得分:-1)

您正在执行的示例或某些现有代码将有所帮助,但是,如果我正确理解了您的问题,则可以将html括在单引号中,然后将其作为字符串读取(即使其中包含双引号)。例如:

如果您的html是这样读取的:

> <button onclick="describeRob()">Tell Me about Bob!</button>
> 
> <script> function describeRob() {
>     document.getElementById("myHeader").innerHTML = "Bob constantly shows up late and doesn't understand basic programming."; } </script>

您可以简单地将其读取为一个字符串,以后可以通过javascript将其附加到div的html上,如下所示:

> String inputFromFile = ' <button onclick="describeRob()">Tell Me about Bob!</button>
> 
> <script> function describeRob() {
>     document.getElementById("myHeader").innerHTML = "Bob constantly shows up late and doesn't understand basic programming."; } </script> ';

然后可以将该字符串分配给所需的div,它将呈现为真实的HTML

如果要插入换行符,只需在html中手动放置一个换行符即可:

<br>