yuminishi0309 / mavs-task-wp

採用課題用gulpボイラープレート
0 stars 0 forks source link

Bug report -EJSでのパーツ共通化、includeがコンパイルされない #1

Closed yuminishi0309 closed 10 months ago

yuminishi0309 commented 10 months ago

Describe the bug セクションタイトルをパーツ共通化したが、複数箇所で使用するとコンパイルされない

To Reproduce Steps to reproduce the behavior:

  1. app > src > ejs > index.ejs 内のservice sectionに移動
  2. _parts-sec-ttl(app > src > ejs > common > _parts-sec-ttl.ejs)のパーツがincludeされており、index.htmlへコンパイルされていることが確認できる。ローカル環境でブラウザに表示がされることも確認できる。
  3. index.ejsのblogセクションにて、同様に_parts-sec-ttlのパーツをincludeすると、index.htmlへコンパイルされず、ブラウザでの表示も確認できない。
  4. 3.を実施した後は、2.でできていたservice section該当パーツ内のh2要素やp要素内のテキストを更新してもコンパイルされなくなる。

Expected behavior パーツ共通化したセクションタイトルを、index.ejs内の複数のセクションで使用したかった。

Possible causes ・同一ページ内で使用できないパーツ化の仕方やinclude方法をしている

ShalCan commented 10 months ago

@yuminishi0309

まずターミナルに表示されるエラーを見るのが大事です。

Message:
    Identifier 'h2' has already been declared in hogehoge/app/src/ejs/index.ejs while compiling ejs

let h2がすでに宣言されているのにまたletで宣言しているのが原因です。 つまりletを付けないで変数に代入していくといいと思いますが、冗長になるのでこういう場合は変数化せずにそのままコード内に記述するのがオススメです。

<%- include('./common/_parts-sec-ttl' ,{ h2: 'BLOG section 共通化したタイトル',p: 'ブログセクション 共通化したサブタイトル' }) %>

ただ、基本的にejsパーツ化するのは同じ用に見えるパーツに微妙な違いがあったりと手間がかかるので慣れないうちはパーツ化はheader / footer程度に押さえてコーディングに集中するのがいいのではないかと思います。 (どんどん分割していくのはNuxtのコンポーネントの考え方ではありますが今回はWPなので)

ShalCan commented 10 months ago

@yuminishi0309 ひとまずWPテーマ化するときにphp化するものと同じパーツ構成にすると良いでしょう。

yuminishi0309 commented 10 months ago

@ShalCan 分かりやすかったです、ご対応ありがとうございました。