IT story

Jade / Pug로 인라인 JavaScript를 어떻게 렌더링 할 수 있습니까?

hot-time 2020. 4. 29. 08:10
반응형

Jade / Pug로 인라인 JavaScript를 어떻게 렌더링 할 수 있습니까?


Jade (http://jade-lang.com/)를 사용하여 페이지에서 JavaScript를 렌더링하려고합니다.

내 프로젝트는 Express와 함께 NodeJS에 있으며 헤드에 인라인 JavaScript를 작성하고 싶을 때까지 eveything이 올바르게 작동합니다. Jade 문서에서 예제를 보더라도 누락 된 것을 작동시킬 수 없습니까?

옥 템플릿

!!! 5
html(lang="en")
  head
    title "Test"
    script(type='text/javascript')
      if (10 == 10) {
        alert("working")
      }
  body

브라우저에서 결과 렌더링 된 HTML

<!DOCTYPE html>
<html lang="en">
<head>
  <title>"Test"</title>
  <script type="text/javascript">
    <if>(10 == 10) {<alert working></alert></if>}
  </script>
</head>
<body>
</body>
</html>

어떤 아이디어가 분명히 놓칠 수 있습니까?


점 뒤에 'script'태그를 사용하면됩니다.

script.
  var users = !{JSON.stringify(users).replace(/<\//g, "<\\/")}

https://github.com/pugjs/pug/blob/master/examples/dynamicscript.pug


:javascript필터에서 제거 7.0

문서는 말한다 당신이 사용해야 scripta로 이어 지금 태그, .문자없이 앞의 공간을.

예:

script.
  if (usingJade)
    console.log('you are awesome')
  else
    console.log('use jade')

에 컴파일됩니다

<script>
  if (usingJade)
    console.log('you are awesome')
  else
    console.log('use jade')
</script>

지정된 유형의 스크립트 태그를 사용하십시오. 점 앞에 포함하십시오.

script(type="text/javascript").
  if (10 == 10) {
    alert("working");
  }

이것은 다음과 같이 컴파일됩니다.

<script type="text/javascript">
  if (10 == 10) {
    alert("working");
  }
</script>

스크립트 태그 만 사용하지 마십시오.

솔루션 |:

script
  | if (10 == 10) {
  |   alert("working")
  | }

또는 .:

script.
  if (10 == 10) {
    alert("working")
  }

답변의 세 번째 버전 :

다음은 인라인 Jade Javascript의 여러 줄 예입니다. 나는 당신이 그것을 사용하지 않고 그것을 쓸 수 있다고 생각하지 않습니다 -. 이것은 내가 부분적으로 사용하는 플래시 메시지 예입니다. 도움이 되었기를 바랍니다!

-if(typeof(info) !== 'undefined')
  -if (info)
    - if(info.length){
      ul
        -info.forEach(function(info){
          li= info
      -})
  -}

질문에서 코드를 컴파일하려고하는 코드입니까?

그렇다면 두 가지가 필요하지 않습니다. 먼저 자바 스크립트 / 스크립트라고 선언 할 필요가 없습니다 -. 입력 후 코딩을 시작할 수 있습니다 . 당신이 입력 한 후 두 번째, -if당신은 입력 할 필요가 없습니다 {또는 }중 하나. 그것이 Jade를 매우 달콤하게 만드는 것입니다.

--------------ORIGINAL ANSWER BELOW ---------------

Try prepending if with -:

-if(10 == 10)
  //do whatever you want here as long as it's indented two spaces from
   the `-` above

There are also tons of Jade examples at:

https://github.com/visionmedia/jade/blob/master/examples/


For multi-line content jade normally uses a "|", however:

Tags that accept only text such as script, style, and textarea do not need the leading | character

This said, i cannot reproduce the problem you are having. When i paste that code in a jade template, it produces the right output and prompts me with an alert on page-load.


I would check your white spaces.

Also you can bring your JS file in as an include. I know its not an answer to what is going wrong but you will find it easier to Debug your JS since any errors end up referring to a line number in a file that is real.


Use the :javascript filter. This will generate a script tag and escape the script contents as CDATA:

!!! 5
html(lang="en")
  head
    title "Test"
    :javascript
      if (10 == 10) {
        alert("working")
      }
  body

script(nonce="some-nonce").
  console.log("test");

//- Workaround
<script nonce="some-nonce">console.log("test");</script>

참고URL : https://stackoverflow.com/questions/5858218/how-can-i-render-inline-javascript-with-jade-pug

반응형