Как сделать экспресс-страницу, содержащую все мои js-скрипты с интерфейсом? - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь создать рут, где есть все мои скрипты интерфейса.

Поэтому, когда я хочу импортировать свои скрипты в мой index.html, мне просто нужно сделать:

<script src="/front/scripts"></script>

Первая проблема:

Это код моего сервера:

app.use('/front/scripts', (req, res) => {
  const readScript = (filePath) => {
    fs.readFile(filePath, 'utf-8', (err, data) => {
      if (err) throw err;

      return res.write(data);
    });
  };
  readScript('./node_modules/jquery/dist/jquery.js');
  readScript('./node_modules/socket.io-client/dist/socket.io.js');
  readScript('./src/js/app.js');
});

Это не работает, потому что Express продолжает загружать страницу, поэтому я не могу импортировать ее, потому что мой index.htmlожидание остановки моего front/scripts.

Вторая проблема:

Это не будет работать из-за размера файла, самый легкий файл будет загружен быстрее, чем больший, например jQuery.таким образом, самый легкий файл будет в верхней части front/scripts, а самый большой будет после le lightest.

Например, если мой личный app.js - это всего лишь 3-строчный скрипт jQuery, который изменяет содержимоеDiv, он вернет мне ошибку, потому что мой скрипт загружается до jQuery.

Как я могу сделать это правильно?

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Использовать express.static

Пример:

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

server.js
front
  scripts
    app.js

server.js:

const express = require('express')
const { join } = require('path')
const app = express()

app.use(express.static(join(__dirname, 'front/scripts'))

app.listen(3000)

Вы получите свой app.js здесь: localhost: 3000 / app.js

0 голосов
/ 29 января 2019

Как только все сценарии будут прочитаны и записаны в response, наконец, response также должен быть завершен с использованием res.end();

В приведенном ниже примере есть небольшое изменение, поскольку readFile равно asyncпоэтому нет гарантии, что res.end() вызывается в нужное время.Сделано это synced.

Смотрите здесь fs.readFileSync .

app.use('/front/scripts', (req, res) => {
  const readScript = (filePath) => {
      res.write(fs.readFileSync(filePath, 'utf-8'));
  };
  readScript('./node_modules/jquery/dist/jquery.js');
  readScript('./node_modules/socket.io-client/dist/socket.io.js');
  readScript('./src/js/app.js');

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