아랄라랄라
R 스토리
아랄라랄라
전체 방문자
오늘
어제
  • All (199)
    • Web (145)
      • Markup | WEB (9)
      • Styles (45)
      • javascript (32)
      • jquery (28)
      • vue (16)
      • react (10)
      • more (5)
    • IT (32)
      • CS (3)
      • git hub (5)
      • UI | UX (18)
      • more (6)
    • ETC (22)
      • 이슈노트 (12)
      • 스터디 (10)
      • 아랄라 ☞☜ (0)
      • JOB🛠 (0)

인기 글

반응형
hELLO · Designed By 정상우.
아랄라랄라

R 스토리

Web/more

[nunjucks] config.js의 변수를 macro에서 렌더링 되게하기

2023. 7. 12. 13:19

 

 

nunjucksRender가 Gulp의 스트림에서 각 파일을 처리할 때마다 data 옵션으로 전달된 객체를 템플릿의 컨텍스트로 사용하게 된다. 즉, 각 템플릿에서는 data 옵션에 정의된 변수를 직접 참조할 수 있어야 한다.

 


그러나 여기서 문제가 발생하는 부분은 Nunjucks의 macro가 별도의 scope를 가지고 있어서 macro 밖에서 정의된 변수를 직접 참조하지 못하는 것이다. 이를 해결하기 위해 변수를 macro에 인자로 전달해야 한다.

 

 

 

//config.js

const config = {
    local_name: "이름",
};

module.exports = config;

 

 

//gulpfile.js

const config = require("./config.js");

function nunjucks() {
    return src(`${paths.src.html}/page/**/*`)
        .pipe(
            nunjucksRender({
                path: [`${paths.src.html}/layout`, `${paths.src.html}/partial`],
                data: config,
            })
        )
        .pipe(dest(paths.build.html))
        .pipe(connect.reload());
}

 

 

// macro

{% macro pageTitle(local_name) %}
    <section class="title">
        <h2 class="title--ttl">타이틀</h2>
        <p class="title--txt"><span>{{local_name}}</span>서브 타이틀</p>
    </section>
{% endmacro %}

👉 변수를 인자로 받고

 

 

// .njk

{% import "../partial/CompTitle.njk" as pageTitle %}

{{ pageTitle.pageTitle(local_name) }}

 

👉 변수를 인자로 보낸다

 

 

 

 

 

 

728x90
저작자표시 (새창열림)

'Web > more' 카테고리의 다른 글

[Storybook] Storybook for HTML: 순수 HTML 환경 지원  (0) 2025.05.30
[gulp] include + sass + watch 초간단 셋팅하기  (1) 2023.11.28
gulp + nunjucks  (0) 2023.02.17
[gulp] gulp 시작하기  (0) 2019.07.29

티스토리툴바