一个更优雅的多行 JavaScript 字符串的方法。

42 浏览
0 Comments

一个更优雅的多行 JavaScript 字符串的方法。

我所知道的不使用+=打印长字符串的唯一方法是使用反斜杠\\。太丑陋了!


是否有任何方法可以使长字符串不受影响?PHP有$foo = \'\'\'长多行字符串\'\'\';我想在JavaScript中实现这个功能!

有没有更好的方法在JavaScript中打印长的多行字符串?

admin 更改状态以发布 2023年5月24日
0
0 Comments

如果你有一个大的代码块,可以使用一个带有无效类型的

0
0 Comments

一般来说,答案是:不在语言语法范畴内。尽管正如Ken在他的答案中指出的那样,有很多的解决方法(我个人的方法是通过AJAX加载文件)。在您的具体情况下,我更喜欢创建一个HTML构造函数,这样您就可以使用Javascript对象字面量来定义HTML结构。类似于:

var longString = makeHTML([{
  div : {
    id : "lol",
    children : [{
      div : {
        id : "otherstuff",
        children : [{
            text : "test content. maybe some code"
        }]
    }]
 }]

我发现这样更容易处理。此外,这将允许您在需要避免字符串引用的情况下使用真实的函数文字:

makeHTML([{
  span : {
    onclick : function (event) {/* do something */}
  }
}]);

注意:makeHTML的实现留给读者作为练习


额外的答案:

在我的硬盘上快速扫描后找到了一些旧代码。它与我上面提出的方法有点不同,所以我想分享一下,以说明您可以编写此类函数的许多方法之一。Javascript是一种非常灵活的语言,没有什么强制您以一种或另一种方式编写代码。选择您感觉最自然和舒适的API,然后编写代码来实现它。

这是代码:

function makeElement (tag, spec, children) {
    var el = document.createElement(tag);
    for (var n in spec) {
        if (n == 'style') {
            setStyle(el,spec[n]);
        }
        else {
            el[n] = spec[n];
        }
    }
    if (children && children.length) {
        for (var i=0; i

使用它的方式是:

document.getElementById('foo').appendChild(
  makeElement(div,{id:"lol"},[
    makeElement(div,{id:"otherstuff"},[
      makeText("test content. maybe some code")
    ])
  ])
);
/* implementation of makeText is
 * left as exercise for the reader
 */

0