Как иметь динамические представления в Express и указывать на скомпилированные ресурсы? - PullRequest
0 голосов
/ 14 мая 2019

Как можно заставить Express отображать некоторые динамические представления с указанием на динамически именованные ресурсы?

Динамический просмотр:

res.render('index', {
    title: someDynamicVariable
  });

Динамически генерируемый и именованный актив:

function js() {
  return src('./src/client/js/index.js')
    .pipe(rev())
    .pipe(
      webpackStream(webpackConfig),
      webpack
    )
    .pipe(dest('./dist/assets'));
}

JS компилируется в /dist/assets. И его имя обновляется с каждым изменением bundle-9878139898jc29872.js.

Подключение вида .
В представлении есть места, предназначенные для замены тегами сценариев и тегами стилей, указывающими на динамически генерируемые ресурсы в /dist.

doctype html
html
  head
    title the layout title
    //- inject:js
    //- endinject
    //- inject:css
    //- endinject
  body
    #nav
    block content

и чтобы это произошло, запустите эти задачи ...

function injectInHTML() {
  const assets = src(['./dist/**/*.js', './dist/**/*.css'], { read: false });

  return src('./src/server/views/layout.pug')
    .pipe(inject(assets))
    .pipe(dest('./dist/views'));
}

function html() {
  return src('./src/server/views/*.pug')
    .pipe(pug())
    .pipe(dest('./dist/views'));
}

Проблема .

Но на этом этапе шаблоны pug находятся в dist. Они были введены с правильными тегами сценария / стиля. Но они больше не «динамичны». Это просто HTML-файлы.

Как можно иметь как динамические представления, так и представления, на которые указывают / внедряются динамические активы?

...