что означает выражения со знаком процента в теге html?

#javascript #html

#javascript #HTML

Вопрос:

Я нашел какой-то странный знак <%%> в angular2-seed, для чего используется <% %> ?

https://github.com/AngularClass/angular2-webpack-starter/blob/master/src/index.html

 <!DOCTYPE html>
<html lang="">
<head>
  <meta charset="utf-8">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">

  <title><%= htmlWebpackPlugin.options.title %></title>

  <meta name="description" content="<%= htmlWebpackPlugin.options.title %>">

  <% if (webpackConfig.htmlElements.headTags) { %>
  <!-- Configured Head Tags  -->
  <%= webpackConfig.htmlElements.headTags %>
  <% } %>

  <!-- base url -->
  <base href="<%= htmlWebpackPlugin.options.metadata.baseUrl %>">


</head>

<body>

  <app>
    Loading...
  </app>

 .....

  <% if (htmlWebpackPlugin.options.metadata.isDevServer amp;amp; htmlWebpackPlugin.options.metadata.HMR !== true) { %>
  <!-- Webpack Dev Server reload -->
  <script src="/webpack-dev-server.js"></script>
  <% } %>


</body>
</html> 

Ответ №1:

Обычно это обрабатывается кодом на HTTP-сервере и заменяется динамически генерируемыми строками перед отправкой полной страницы в ответ на запрос браузера.

Смотрите, например

Ответ №2:

На самом деле это плагин HTML Webpack https://github.com/ampedandwired/html-webpack-plugin

Если вы выполните поиск HtmlWebpackPlugin в проекте, вы получите следующий js, и он указывает на файл шаблона, а механизм шаблонов помогает декодировать его в HTML-файл.

    /*
   * Plugin: HtmlWebpackPlugin
   * Description: Simplifies creation of HTML files to serve your webpack bundles.
   * This is especially useful for webpack bundles that include a hash in the filename
   * which changes every compilation.
   *
   * See: https://github.com/ampedandwired/html-webpack-plugin
   */
  new HtmlWebpackPlugin({
    template: 'src/index.html',
    title: METADATA.title,
    chunksSortMode: 'dependency',
    metadata: METADATA,
    inject: 'head'
  }),
 

Я думаю, это то, что вы пытались выяснить.