EJS включает скрипт в начале / в конце макета страницы

Я использую EJS в качестве шаблонного движка и задаюсь вопросом, как я буду включать сценарий, который требуется только на одной странице в конце макета страницы.

Образец:

макет:

<head>
   //Scripts and stuff
</head>
<body>
   <article>
     <%-body%> // Render page here
   </article>
</body>

страница:

    //This script needs to go within the head of the layout
    //Or before the closing </body> tag in the layout, but only
    //when this particular page is loaded.
    <script src="onlyRequiredOnThisPageWithinTheLayout.js"></script> 
    <p>Page content</p>

Спасибо!

1 ответ

  1. включите страницу модуля в тег статьи.<%- include("page.ejs") %>

    внутри головного тега макета напишите скрипт для добавления <script></script>тега к headтегу

    макет.ejs

        <head>
        <script>
        function clean(){
            sc=document.querySelectorAll(".pagescript");
            head=document.getElementsByTagName("head");
    
            for(s=0;s<sc.length;s++){
    
              head[0].appendChild(sc[s]);
             }
            }
        document.addEventListener( "DOMContentLoaded", clean, false );
    
       </script>    
       </head>
        <body>
           <article>
             <%- include("page.ejs") %> // Render page here
           </article>
        </body>
    

    ваша страница.ejs

    <script class="pagescript" src="onlyRequiredOnThisPageWithinTheLayout.js"></script> 
        <p>Page content</p>
    

    Я взял цикл, чтобы добавить теги сценария, используйтеsc[0], если у вас есть только один тег сценария.