2016-11-28 7 views
1

私はすべてのページに共通のスクリプトと、特定のページにのみ必要なスクリプトがあるとします。これは、nunjucksをテンプレートエンジンとして実装し、バックエンドのフレームワークとして4を表現する効率的な方法です。nunjucksとexpressアプリを使ってページ固有のスクリプトを追加するには?

--- site 
--- public 
    |___js 
    |___ script.js (for all pages) 
    |___ home.js (only required on home page) 
    |___ contact.js (contact page) 
    |___ search.js (on search page) 

私はページのタイトルを渡し、共通のスクリプト+ home.jsの配列を送信するためではなくスクリプトタグをレンダリングに急行地元の人々を使用しようとしましたがリセットされますルート(*)のためのミドルウェアを表現するために作られた別のコールをtheresのページタイトルなしの共通スクリプトが関数に渡されます。

答えて

0

contact場合は、searchおよび他のあなたがblock -override

// index.njk 
<html> 
<head> 
    <script src = "script.js"></script> 
    {% block js %}{% endblock %} 
</head> 

// search.njk 
{% extends 'index.njk' %} 

{% block js %} 
    <script src = "search.js"></script> 
{% endblock %} 

// js 
app.get('/search', function(req, res, next){ 
    res.render('search.njk', {...}); 
}) 

を使用することができます異なるHTMLテンプレートは、その後もう一つの方法は、あなた

// Middleware 
function(req, res, next) { 
    res.locals.scripts = ['script.js']; 
    next(); 
} 

// router 
app.get('/search', function(req, res, next) { 
    res.render(#template-name, { 
     scripts: res.locals.scripts.concat('search.js') 
    }) 
}) 

// index.njk 
<html> 
<head> 
    {% for script in scripts %} 
    <script src = "{{script}}"></script> 
    {% endfor %} 
</head> 
好きれます
関連する問題