Как обслуживать клиентский пакет (веб-пакет) на сервере NodeJS? - PullRequest
0 голосов
/ 06 марта 2019

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

У меня довольно простое приложение со структурой крестики-нолики со структурой, подобной следующей:

tic-tac-toe
  src/
    app.js (server)
    views/
      index.html
    public/
      script/
        index.js
        ...every other JS file
      css/
        index.css

Давайте пока проигнорируем сервер и предположим, что я просто хочу использовать веб-пакет для объединения всех моих файлов JS. С простым файлом конфигурации веб-пакета у меня есть:

const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");

module.exports = {
  entry: "./src/public/script/index.js",
  output: {
    path: path.resolve(__dirname, "./dist/"),
    filename: "bundle.client.js"
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        loader: "babel-loader",
        exclude: /node_modules/
      }
    ]
  },
  plugins: [new HtmlWebpackPlugin({ template: "./src/views/index.html" })]
}

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

Теперь проблема возникает, когда я хочу обработать этот HTML-файл (который, если я правильно прочитал документ, был введен со всеми необходимыми пакетами) на сервере NodeJS. Я не уверен, как мне поступить. Должен ли я просто использовать sendFile на моем узле Server с index.html из папки dist? Должен ли я изменить точку входа моего комплекта на мой App.js Узел-сервер? Нужен ли мне пакет для клиента и другой для сервера? Или я упускаю что-то очевидное, что мешает мне сделать это?

1 Ответ

1 голос
/ 06 марта 2019

Вы все делаете правильно:

  • Вам нужен только пакет на стороне клиента.На сервере узел обрабатывает зависимости, поэтому вам не нужен пакет на стороне сервера.

  • HTML-файл, созданный в dist/index.html, действительно внедряется с тегом <script>, указывающимв ваш комплект javascript, благодаря HtmlWebpackPlugin.

  • Ваша интуиция («используйте sendFile на вашем сервере узлов») верна!Обратите внимание, что многие платформы включают служебные методы для привязки маршрута к каталогу, содержащему статические файлы.Например, вот как выразить это: https://expressjs.com/en/starter/static-files.html

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