Webpack: вставлять текст как html в React Web App - PullRequest
0 голосов
/ 14 апреля 2020

Цель: У меня есть веб-сайт для небольшого журнала. Я пытаюсь дать каждой статье свою собственную веб-страницу. Чтобы увеличить поисковую оптимизацию, Я хочу вставить текст и заголовок статьи как html, а не javascript


Мое решение до сих пор

Я думаю, что могу сделать это с помощью шаблона '.e js', используя html-webpack-plugin. Например

    let articlePlugs = articles.map(function(arr) {
      let [article, articleTitle] = arr
      return new HtmlWebpackPlugin({
        template: './html/article.ejs',
        inject: true,
        chunks: [iss],
        filename: './articles/' + article + '/index.html',
        templateParameters: {
          article: article,
          articleTitle: articleTitle
        }
      }) 
    })

, который вставит уникальный текст статьи и заголовок статьи в разделы, помеченные <%= article %> и <%= articleTitle %> в моем шаблоне .ejs. После сборки у меня будут свои уникальные html файлы.


Макет веб-сайта

В настоящее время я использую тот же контур верхнего колонтитула, нижнего колонтитула и фон для каждой веб-страницы с уникальным содержимым, вложенным внутрь. Это выглядит примерно так, как этот код ниже

    var Page = () => {
        return(
            <React.Fragment>
                <Header />
                <div id='bGndImg'>
                   <div id='gradient'>
                        {This is where the unique code goes}
                    </div>
                </div>
                <Footer />
            </React.Fragment>
        )
    }
    
    const root = document.getElementById('content');
    ReactDOM.render (
        <Content />,
        root
    )

На проблемы, на которые мне нужны ответы,

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

Другой метод, который я подумал, может состоять в том, чтобы иметь отдельные исполнения ReactDOM.render для заголовка, нижнего колонтитула и любых других элементов, и установить html тело выглядит примерно так:

      <body>
        <div id='header'>
            <div id='bGndImg'>
                <div id='gradient'>
                    <div><%= ArticleText %></div>
                    <div id="SomeAdsOrSomething"></div>
                </div>
            </div>
        <div id='footer'>
      </body>

Я не знаю, возможно ли это с помощью веб-пакета. Насколько я понимаю, каждый файл html с веб-пакетом может иметь только одну точку входа, указанную в config.entry в пределах webpack.config.js

    const config = {
      mode: 'development',     
      entry: {
        index: './src/index.js',
        contact:'./src/contact.js'
      },
      ...
    }
    
    module.exports = config;

Заключительные мысли

Возможен ли этот метод использования .ejs файлов с React и Webpack?

Кроме того, я действительно не в курсе, поэтому, если есть более простой способ сделать это, пожалуйста, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...