Как вы организуете свои файлы на стороне сервера, полностью зависит от вас, и есть много разных способов сделать это, и ни одного «правильного» или «оптимального» способа. Для удобства развертывания вам просто нужно согласованное относительное расположение между всеми частями, чтобы все они могли использовать относительные пути для ссылки друг на друга и не зависеть ни от каких абсолютных путей.
Единственное, что абсолютно должно быть правдой является то, что ваши publi c файлы (вещи, которые отправляются клиенту), как правило, должны быть в своей собственной иерархии, которая может иметь общий родительский файл с файлами сервера, но файлы сервера не должны быть внутри publi c иерархия. Итак, что-то вроде этого было бы хорошо:
project
server
server.js
package.json
public
client.js
index.html
В зависимости от того, сколько у вас файлов publi c и кто еще может над ними работать, обычно их разделяют по типу:
project
server
server.js
package.json
node_modules
various modules you're using in your server code
public
scripts
client.js
html
index.html
images
logo.png
style
main.css
database
database stuff here
Это работает, потому что иерархии сервера и publi c разделены. Это помогает с целой кучей вещей и делает совершенно ясным, когда вы разрабатываете, какие вещи являются общедоступными, а какие нет. Это также позволяет вам использовать такие вещи, как express.static()
, которые автоматически подают файлы из каталогов на основе совпадения имен между запрошенным маршрутом и именами файлов в каталоге. Эти типы автоматической c маршрутизации должны быть из назначенного каталога publi c, иначе они рискуют случайно обслуживать файлы личного сервера.
Если у вас есть файлы базы данных, вы можете поместить их в другой каталог. на том же уровне, что и сервер.
Как именно вы размещаете файлы сервера или файлы publi c в их иерархиях, зависит только от вас и от того, что вам нужно, если вы храните их отдельно.
Некоторые моменты для рассмотрения:
- Вы что-нибудь переносите или компилируете? Если это так, вам понадобятся исходная и распределительная иерархии.
- Вероятно, это сейчас или в будущем проект с несколькими людьми. Если да, есть ли в проекте люди, которые должны иметь доступ только к определенным частям проекта (например, GUI дизайнеры, которые могут иметь доступ только к HTML, CSS и файлам изображений)? Если это так, вы, вероятно, захотите структурировать вещи таким образом, чтобы обеспечить более простой доступ.
- Используете ли вы
express.static()
или что-то для автоматического обслуживания файлов определенных типов. Если это так, они должны быть чисто изолированы в каталоге или каталогах, что делает использование express.static()
простым и безопасным.