인용부호에 세션과 내용 추가

4467 단어 html-minifier

묘사

내부 인용부호를 삭제하지 말라고 말할 수 있는지 알고 싶습니다.예:
"use strict";

console.log(require('.').minify(`
  <div id="list {{name}}-list">
    {{name}}
  </div>
`, {
  ignoreCustomFragments: [/{{.*?}}/],
  collapseWhitespace: true,
  trimCustomFragments: true,
}));
이로 인해 클래스 속성이 손상됩니다.
<div class="list{{name}}-list">{{name}}</div>
trimCustomFragmentstrimCustomFragments로 설정한 경우 클래스는 올바르지만 태그 컨텐트에 공백이 있습니다(필요하지 않은 텍스트 노드를 만들 수 있음).
<div class="list {{name}}-list"> {{name}} </div>
또한 false를 포함ignoreCustomFragments에 있는 따옴표로 설정하려고 했지만 이로 인해 따옴표 문제가 발생했습니다(올바르게 잘라낼 때).
<div class=""list {{name}}-list"">{{name}}</div>
[/".*?{{.*?}}.*?"/]저는 지금

토론 #1

이후에 이 대체품을 사용하여 이 문제를 해결하고 있습니다.
> " {{a}} <a> {{b}} </a> {{c}} ".replace(/(>|^|}}) ({{|<|$)/g, "$1$2")
'{{a}}<a>{{b}}</a>{{c}}'
.minify

토론 #2

의 응용은 속성 값이나 텍스트 노드에 있는지 여부에 대한 의미 지식이 없기 때문에 최소한 확장은 중량화와 관련이 있을 것이다.
그럼에도 불구하고 위의 예를 통해 trimCustomFragmentsignoreCustomFragments로 설정된 [/[^"']*?{{.*?}}[^"']*(?=["'])/]와 함께 일할 수 있습니다. 일반적인 상황에서 즐거움과 이윤을 얻기 위해

토론 #셋

를 사용해야 할 수도 있습니다.[^<>"']

trimCustomFragments is applied without any semantic knowledge, i.e. whether it's within an attribute value or a text node, so at least extending that would involve some heavylifting.


이러한 지식을

토론 #4

에 추가하는 것은 적합한 해결 방안으로 들린다.나는 trimCustomFragments 이미 이렇게 일하고 있다고 생각한다. (예를 들어 속성 값에 편집 가능한 공백이 있는지 알고 있다.)collapseWhitespace 사용자 정의 세션과 관련된 모든 내용은 유효한 HTML과 교차한다. 이를 하나의 프로세서로 간주하고 후속 최적화를 위해 유효한 HTML을 생성한 다음에 마지막에 조각을 복원할 수 있다.

토론 #5

참고로 당신의 정규 표현식은 의외의 일치가 있는 것 같습니다.😉
https://regex101.com/r/COQsIr/1

토론 #6

Your regex seems to have a few unintended matches.


이상할 게 없다. 잠재적인 해결 방안을 보여주는 해커다. 유령:
그러나 위의 댓글은 나로 하여금 당신의 입력이 처음에는 무효한 HTML이 아니었는데, 왜 사용자 정의 세션을 사용해야 하는지 생각나게 했다.
require('.').minify(`
  <div id="list {{name}}-list">
    {{name}}
  </div>
`, {
  collapseWhitespace: true
});
제공:
<div id="list {{name}}-list">{{name}}</div>

토론 #7

는 이 예에서 확실히 필요하지 않지만, 나는 this one와 같은 문제를 방지하기 위해 그것을 가지고 있다. 이것은 일종의 가능성이다(단인용부호를 사용하면 피할 수 있다고 생각한다).

토론 #8

문제가 해결되지 않을 경우 언제든지 문제를 닫으십시오.저는 솔루션에 만족합니다.)

토론 #9

그렇다면 다음과 같습니다.
require('.').minify(`
  <div id="list {{name}}-list {{#is type "music"}}music{{else}}film{{/is}}">
    {{name}}
  </div>
`, {
  ignoreCustomFragments: [/{{.*?["'].*?}}/],
  collapseWhitespace: true
})
다음과 같은 이점을 제공합니다.
괜찮아 보여요. 더 테스트해 볼게요.
하나의 조정:

토론 #10

따라서 그것도

토론 #11

와 더 많은 곱슬곱슬한 쌍에 일치합니다.{{2,}.*?["'].*?}{2,} 저는 당신이 이곳에서 겨냥한 특정한 수요에 대해 간단한 해결 방안이 없다는 것에 동의합니다. 그러나 이것은 작은 문제 같습니다(상하문을 보존하는 동시에 사용자 정의 부분을 무시합니다).
따라서 만약에 제가 제시한 해결 방안이 당신의 문제를 해결할 수 있다면 저는 이것을 계속 닫을 것입니다. - 다음 맞춤형 세션의 대수리에서 이 점을 명심하겠습니다. wink: {{{triple}}}가 다시 조정을 했기 때문에 여러 줄의 세션과도 일치합니다.

토론 #12

:
<div id="list {{name}}-list {{#is type "music"}}music{{else}}film{{/is}}">{{name}}</div>
현재 나는 이 부분의 공백을 수동으로 잘라야 하지만, 이것은 예상했던 것이다.

토론 #13

/{{2,}[\s\S]*?["'][\s\S]*?}{2,}/ 당신의 용례를 알게 해 주셔서 감사합니다.클릭을 유지하는 것이 항상 좋다. 특히 내가 사용할 수 없는 기능 주변에서는.

좋은 웹페이지 즐겨찾기