자바 스 크 립 트 에 대량의 문자열 상수 의 실현 방법 을 삽입 합 니 다.
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([\s\S]*)\s\*\//)[1];
}
alert(RES_CODE);
alert(RES_POEM);
alert(RES_XML);
OK!Chrome 에서 줄 마다 앞 에 있 는 Tab 을 지 웠 습 니 다.코드 만 넣 으 면 문제 가 되 지 않 습 니 다~물론 문자 에 나타 나 지 않 는 다 는 전제 가 있 습 니 다*/주의해 야 할 것 은 코드 를 압축 할 때 주석 을 걸 러 내 고 일부분 을 수 동 으로 제거 해 야 한 다 는 점 이다.