熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

在JavaScript裡嵌入大量字符串常量的實現方法

2013-11-15 11:54:22  來源: JSP教程 
在JavaScript文件裡嵌入大量字符串常量是經常遇到的事有時為了省事就把一些界面的HTML和CSS直接寫在JS文件裡  

  數量少還好多的話就密密麻麻的一坨文字講究美觀的文藝青年們會用大量的字符連接符號甚至加上縮進強制換成好幾行例如

復制代碼 代碼如下:
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 ;
    }
*/});

  var RES_POEM = _TEXT(function(){/*
更吹落星如雨
寶馬雕車香滿路
鳳箫聲動玉壺光轉一夜魚龍舞
蛾兒雪柳黃金縷
笑語盈盈暗香去
眾裡尋他千百度
蓦然回首那人卻在燈火闌珊處
*/});

  var RES_XML = _TEXT(function(){/*
    <projectDescription>
        <name>Hello</name>
        <comment></comment>
        <projects>
        </projects>
        <buildSpec>
            <buildCommand>
                <name>comadobeflexbuilderprojectflexbuilder</name>
                <arguments>
                </arguments>
            </buildCommand>
            <buildCommand>
                <name>comadobeflexbuilderprojectapollobuilder</name>
                <arguments>
                </arguments>
            </buildCommand>
        </buildSpec>
    </projectDescription>
*/});

  function _TEXT(wrap) {
    return wraptoString()match(//*s([sS]*)s*//)[];
}
alert(RES_CODE);
alert(RES_POEM);
alert(RES_XML);

  OK!就是Chrome裡把注釋每行前面的Tab去掉了如果僅僅是放代碼的話問題也不大~ 當然有個前提是字符裡不能出現*/

  值得注意的是壓縮代碼的時會過濾注釋需要手動排除一部分


From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19864.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.