如何在JavaScript中嵌入大量字符串常量

发布时间:2021-01-02编辑:脚本学堂
本文介绍下在javascript中嵌入大量字符串常量的方法,有需要的朋友,可以参考下。

我们见过这样的嵌入庐江:
 

var html =
    '<div>' +
        '<p>Hello</p>' +
        '<p>World'</p>' +
    '</div>';

要是字符串里有不少双引号单引号,那就麻烦了,各种转义字符看的眼花缭乱。

大家总认为字符串必须在"..."或'...'里面,这点没错。
但还有一个地方的字符串也能当非代码语义保存下来,那就是一个function的toString,把整个函数的代码当字符串输出——其中的注释部分当然也是保留的!

写个空函数,里面就一个/**/注释,其中就是我们想要的常量内容。
toString后加一个正则就可以提取我们想要的!

我们看下同这个例子。
 

复制代码 代码示例:

var RES_CODE = _TEXT(function(){/*
    #include <iostream>

    int main()
    {
        std::cout << "Hello world" << std::endl;
        return 0;
    }
*/});

var RES_POEM = _TEXT(function(){/*
  更吹落,星如雨。
  宝马雕车香满路。
  凤箫声动,玉壶光转,一夜鱼龙舞。
  蛾儿雪柳黄金缕,
  笑语盈盈暗香去。
  众里寻他千百度
  蓦然回首,那人却在灯火阑珊处。
*/});

var RES_XML = _TEXT(function(){/*
    <projectDescription>
        <name>Hello</name>
        <comment></comment>
        <projects>
        </projects>
        <buildSpec>
            <buildCommand>
                <name>com.adobe.flexbuilder.project.flexbuilder</name>
                <arguments>
                </arguments>
            </buildCommand>
            <buildCommand>
                <name>com.adobe.flexbuilder.project.apollobuilder</name>
                <arguments>
                </arguments>
            </buildCommand>
        </buildSpec>
    </projectDescription>
*/});

function _TEXT(wrap) {
    return wrap.toString().match(//*s([sS]*)s*//)[1];
}

alert(RES_CODE);
alert(RES_POEM);
alert(RES_XML);

在Chrome里把注释每行前面的Tab去掉了,如果仅仅是放代码的话问题也不大。
当然有个前提是字符里不能出现*/

注意:压缩代码的时会过滤注释,需要手动排除一部分。

未结束的字符串常量怎么解决
js未结束的字符串常量异常解决方法
未结束的字符串常量和转义符用法
JS报未结束字符串常量错误怎么解决
替换js字符串常量为变量
js 未结束的字符串常量错误怎么解决
js 未结束的字符串常量解决方法