Внедрение тега CSS Style перед шаблоном SSR - PullRequest
0 голосов
/ 07 декабря 2018

Моя цель:

Я разрабатываю движок шаблонов рендеринга Vue Serverside, и у меня все хорошо, но я не уверен, как решить следующую проблему.

Мне нужно ввести <style> тегов перед шаблоном компонента Vue (например: <myComponent>), так что механизм рендеринга де-факто включает реализацию стилевого оформления.

Пример кода:

index.vue

<template>
    <div id="app">
        <component1></component1>
    </div>
</template>
<script>
import component1 from "component1";

export default {
    ...,
    components: {
        component1
    }
};
</script>
<style>
.red {
    color: #f00;
}
</style>

component1.vue

<template>
    <div id="component1">
      Test
    </div>
</template>
<script>
export default {

};
</script>
<style>
.blue {
    color: #f00;
}
</style>

Представлено:

<html>
  <head>...</head>
  <body>
    <style>
      .red {
        color: #f00;
      }
    </style>
    <div id="app">
      <h1>Test</h1>
      <style>
      .blue {
        color: #f00;
      }
      </style>
      <div id="component1">Test</div>
    </div>
    <script>...</script>
  </body>
</html>

Мой вопрос:

Как внедрить CSS перед содержимым шаблона с помощью веб-пакета и моего SSR?Могу ли я сделать это, изменив настройки vue-loader или что-то еще?

Примечания:

Конфигурация моего сервера веб-пакетов

this.webpackServerConfig = {
            mode: "development",
            target: "async-node",
            output: {
                libraryTarget: "commonjs2",
            },
            module: {
                rules: [{
                        test: /\.vue$/,
                        loader: "vue-loader",
                    },
                    {
                        test: /\.js$/,
                        loader: "babel-loader",
                    },
                    {
                        test: /\.css$/,
                        use: [
                            "vue-style-loader",
                            "css-loader",
                        ],
                    },
                    {
                        test: /\.styl(us)?$/,
                        use: [
                            'vue-style-loader',
                            'css-loader',
                            'stylus-loader'
                        ]
                    }
                ],
            },
            plugins: [
                new VueLoaderPlugin(),
            ],
        };

В основном,цель состоит в том, чтобы структурировать визуализированный компонент Single-file в следующем порядке:

  1. Стиль
  2. Шаблон (уже работает)
  3. Скрипт (уже работает)
...