Подтвердить что ты не робот

Что означает "обслуживание статических файлов", и нужно ли это делать?

До сих пор я всегда разрабатывал свои клиентские приложения без каких-либо моих собственных серверов, работающих за ним, используя веб-сервер Webstorm для обслуживания моего контента.

То, что я часто вижу, когда люди используют Node с Express для работы в качестве своего веб-сервера, - это дискуссия о том, следует ли разместить ваши html файлы с помощью Node или с кодом клиента.

Насколько я понимаю, файлы javascript, включенные в html или css, лучше всего хранятся в каталоге клиента?

Итак, мой первый вопрос: с такой структурой папок, как этот

app/
  client/ js files
  server/ node files

Должны ли вы включать ваши html-страницы в свой сервер или каталог вашего клиента?

Во-вторых:

Иногда я вижу, что люди используют express.static для статических файлов, что здесь подразумевается статическими файлами? Сегодня большинство веб-сайтов больше не являются статическими документами, а являются файлами, которые изменяются javascript, манипулируя DOM, поэтому я не думаю, что любые html файлы следует рассматривать как статические файлы?

Насколько я вижу, единственным преимуществом, которое я использую при использовании Node вместо встроенного веб-сервера, является то, что я хочу иметь доступ к базе данных.

4b9b3361

Ответ 1

Сегодня большинство веб-сайтов больше не являются статическими документами, а являются файлами, которые изменяются javascript, манипулируя DOM, поэтому я не думаю, что любые html файлы следует рассматривать как статические файлы?

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

Насколько я понимаю, файлы javascript, включенные в html или css, лучше всего хранятся в каталоге клиента?

Если вы храните свои файлы на сервере, это не имеет значения. Важно то, что вы обычно не хотите обслуживать статические файлы из вашего приложения Node.js. Такие инструменты, как express.static, предназначены только для удобства. Иногда у вас может быть приложение с низким трафиком. В этих случаях вполне приемлемо обслуживать файлы с помощью вашего приложения Node.js. Для чего-либо с приличной нагрузкой трафика лучше оставить статическую службу до реального веб-сервера, такого как Nginx, поскольку эти серверы намного эффективнее, чем ваше приложение Node.js.

В вашем приложении Node.js необходимо сохранить код приложения (код, который обслуживает динамические ответы, например сервер API).

Также неплохо разместить ваше приложение Node.js за прокси-сервером, таким как Nginx, чтобы прокси-сервер мог обрабатывать все взаимодействие с клиентом (например, медленные клиенты с ложкой), оставляя ваше приложение Node.js делать то, что он делает лучше всего. Опять же, в условиях низкого трафика это не имеет значения.

Ответ 2

Иногда я вижу, что люди используют express.static для статических файлов, что здесь подразумевается статическими файлами?

Я считаю, что вы ссылаетесь на этот бит кода, как правило, нашли экспресс-приложение app.js file:

app.use(express.static(path.join(__dirname, 'public')));

express.static() - это немного промежуточного программного обеспечения, которое сопоставляет имена каталогов в каталоге путей для удобного поиска. Обычно у вас будет:

- public
  |_ javascripts
  |_ stylesheets
  |_ images

Если у вас есть script в вашем каталоге javascripts, вам не нужно вводить полный путь для его включения. Просто:

./javascripts/script.js

Статические файлы лучше всего рассматривать как файлы, которые не включают что-то вроде NPM или Bower. Это ваши собственные скрипты, таблицы стилей, изображения и т.д. Это не имеет ничего общего с динамической или статической страницей.

Что касается вашего первого вопроса:

Я лично не уверен в необходимости такой архитектуры проекта, если вы используете node. Если вы используете node и что-то вроде Ember.js или Angular для вашего клиентского приложения, чем я лично поставил бы свои реальные сценарии приложений внутри каталога public/javascripts/. Но это только я.

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