Как выполнить html файл в node js?
Есть HTML файл с разметкой и функциями javascript внутри.
Соответственно при запуске файла в браузере все работает, но на клиенте.
Мне нужно чтобы этот файл запускался и работал также, но только на сервере Node JS.
Как это проще сделать?
- Вопрос задан более трёх лет назад
- 1665 просмотров
Комментировать
Решения вопроса 1

Frontend developer
Вот пример сервера на Node который отдает файл index.html
Создайте файл app.js в него поместите этот код. в папке с app создайте папку public и туда весь html запихайте.
Затем запустить app -node app.js и на localhost:3000 сможете увидеть свой сайт
const express = require('express'); const bodyParser = require('body-parser'); const path = require('path'); const app = express(); // Body Parser Middleware app.use(bodyParser.urlencoded(< extended: false >)); app.use(bodyParser.json()); var staticSiteOptions = < portnum: 3000, maxAge: 1000 * 60 * 15 >; app.use(express.static( path.join(__dirname, 'public'), staticSiteOptions )).listen(staticSiteOptions.portnum);
Как запустить файл hello.js в Node.js в Windows?
Я пытаюсь запустить программу hello world, написанную в javascript в отдельном файле с именем hello.js В настоящее время выполняется версия Windows node.js. Код отлично работает в окне консоли, но как я ссылаюсь на путь в среде Windows.
C:\abc\zyx\hello.js
в Unix Я предполагаю, что он показывает $ node hello.js Я абсолютно не знаком с node.js Пожалуйста, поправьте меня, если я что-то сделаю неправильно. Я пробовал > node C:\abc\zyx\hello.js —- не работает > C:\abc\zyx\hello.js — не работает Update1: Добавлен node.exe в папку, где находится файл hello.js.
Добавлена точка пути в папку c:\abc\zyx \, и я получаю сообщение об ошибке ReferenceError: hello не определен см. содержимое hello.js
setTimeout(function() < console.log('World!'); >, 2000); console.log('Hello');
ОБНОВЛЕНИЕ 2: До сих пор я пробовал все эти версии и ни один из них не работает. Может быть, я делаю что-то совершенно неправильное.
>node hello.js >$ node hello.js >node.exe hello.js >node /hello.js >node \hello.js > \node \hello.js > /node /hello.js > C:\abc\xyz\node.exe C:\abc\xyz\hello.js > C:\abc\xyz\node.exe C:/abc/xyz/hello.js > hello.js > /hello.js > \hello.js >node hello

Обратитесь к моей файловой структуре ПОСТАНОВИЛИ: Вместо запуска node.exe попробуйте запустить в командной строке со следующим параметром, и он сработал.
c:\>node c:\abc\hello.js Hello World! (after 2 secs)
Mitul 18 июль 2011, в 19:22
Поделиться
Не могли бы вы предоставить немного больше информации? Насколько я знаю, официального узла для Windows нет, поскольку объявление о запуске порта было сделано всего несколько недель назад . Используете ли вы node.js под Cygwin, или есть какие-то другие окна узлов (если есть, я не слышал об этом). РЕДАКТИРОВАТЬ: я не понял, что была доступна предварительная сборка. Мои извенения.
Как запустить файл в node js

По мере чтения статьи файлов у нас прибавится. Что мы создали: .env будет содержать переменные среды окружения, в папке app будет контейнер с Node.js, в папке static будет статика, а в Nginx — Nginx-конфигурация. Для начала этого хватит.
Docker и docker-compose.yml
У нас будет два docker-compose.yml : dev и production . Начнем с dev-версии:

После того как все будет готово, и в терминале появятся четыре заветных зеленых done можно продолжать. Теперь-то уже можно начать непосредственно работу с Node.js.
Работаем с Node.js в контейнере
Давайте перейдем в контейнер с Node.js командой:

В этом режиме вы можете выполнять команды внутри контейнера. Чтобы выйти из контейнера, напишите команду:


Если создадите файл внутри папки app с окончание js или json – nodemon подхватит изменения и перезапустит проект. Аналогично, если вы просто поменяете содержимое какого-нибудь файла с данными расширениями.
Если отключите nodemon командой ctrl + c, то по прошлому адресу можно увидеть сообщение от Nginx: 502 Bad Gateway. Если поместите в папку static любой файл, он будет доступен по указанному маршруту. Например, static/file.txt => http://localhost/file.txt . Даже если nodemon не работает. Помним, за работу со статикой у нас отвечает Nginx.
Устанавливаем Linter для JavaScript
Ну а как без этого? Для начала, перейдите в VS Code в раздел с плагинами, скачайте и активируйте плагин Eslint:

Вот теперь можно установить сам Eslint в проект командой:

Это все благодаря тому, что мы монтируем всю папку app (вместе с node_modules) в dev-режиме. Осталось добавить команду для тестового (dev) запуска nodemon, который сначала будет парсить проект с помощью Eslit. Для этого добавьте еще две команды в package.json :


Если получили ошибку, то вы все настроили верно. Поздравляю, теперь ваш код будет чище.
Подключаемся к базе данных
Выходим на финишную прямую: осталось лишь подключить Node.js к базе данных.
В контейнере устанавливаем пакет для соединения с базой данных:

Если вы сейчас сохраните и запустите проект, nodemon выбросит ошибку. А все потому, что у нас нет базы данных под названием api (если вы не меняли название). Для этого переходите по адресу http://localhost/pgadmin , и вводите данные из docker-compose.yml для входа. Если вдруг получили ошибку от Nginx после авторизации, то просто нажмите F5.
Нам нужно создать новый сервер:

Во вкладке General введите любое название. Во вкладке Connection введите наши данные для подключения:

Базы api еще нет, поэтому вместо нее введите postgres . Создайте новую базу под названием api :

Теперь запускайте nodemon. Поздравляем, вы подключились к базе данных:

Финальная сборка
Так как мы написали все нужные команды, теперь можем поменять NODE_ENV в .env на production и запустить наш проект в другом режиме командой:
docker-compose up --build -d
В данный момент production сборка от dev отличается тем, что node_modules контейнер создает свои, и они больше не прокинуты через volumes между контейнером и ПК. Поэтому команда npm i (не забываем про разные таргеты) из Dockerfile установит node_modules только в контейнер. То есть, если вы удалите свои node_modules , то теперь на контейнер это не повлияет.
Поэтому эту команду можно использовать для того, чтобы быстро тянуть файлы с GitHub и запускать проект на сервере. Мы же не храним node_modules в git-репозиториях.
Как вернуться в dev
Для работы в dev-режиме вам просто потребуется вернуть NODE_ENV в dev режим, перезапустить проект через композ:
docker-compose up --build -d
Зайти в контейнер командой:
docker-compose exec app sh
npm install
Запустить внутри команду:
npm run dev
Это обеспечит вам гибкость при разработке и разделит production от dev, позволит работать с линтером и подсветкой в VS Code. А также, разработка внутри контейнера обезопасит ваш компьютер от всяких вредоносных валварей.
Напоследок
Для работы с базой данных автор рекомендует Sequelize. Плюс, разделенные docker-compose.yml позволят вам создавать разные Nginx конфиги для production и dev. Например, в боевую сборку можно добавить образ gordonchan/auto-letsencrypt и открыть 443 порт в nginx для https.
И вот ссылка на репозиторий GitHub. Там можно найти весь код проекта.
Материалы по теме
- Как запустить веб-приложение на Nginx в Docker
- «Контейнер дал течь»: проверьте безопасность Docker-образа
- В чём разница между Docker и Kubernetes?
Интеграция MongoDB с вашим приложением Node

При работе с Node.js вы можете столкнуться с ситуацией, когда вы разрабатываете проект, который будет сохранять и запрашивать данные. В данном случае вам нужно будет выбрать решение для базы данных, которое будет отвечать характеристикам данных приложения и типов запросов.
В этом обучающем руководстве вы будете интегрировать базу данных MongoDB с существующим приложением Node. NoSQL базы данных, такие как MongoDB, могут быть полезными, если список ваших требований для данных включают масштабируемость и гибкость. MongoDB отлично интегрируется с Node, поскольку она предназначена для асинхронной работы с объектами JSON.
Для интеграции MongoDB с вашим проектом вы будете использовать Object Document Mapper (ODM) Mongoose для создания схем и моделей данных вашего приложения. Это позволит вам организовать код приложения в соответствии с архитектурным шаблоном модель-представление-контроллер (MVC), который позволяет отделить логику обработки вводимых пользователей данных и логику структурирования данных и их отображения для пользователя. Использование такого шаблона может упрощать будущие тестирование и разработку, реализуя разделение проблем в базе кода.
После прохождения руководства у вас будет рабочее приложение с информацией об акулах, которое будет принимать вводимые пользователем данные об их любимых акулах и отображать результаты в браузере:

Предварительные требования
- Локальный компьютер или сервер для разработки на базе Ubuntu 18.04, а также пользователь без прав root с привилегиями sudo и активный брандмауэр. Дополнительные инструкции по настройке сервера на базе Ubuntu 18.04 см. в руководстве по начальной настройке сервера.
- Node.js и npm, установленные на компьютере или сервере согласно этим инструкциям по установке с помощью PPA под управлением NodeSource.
- MongoDB, установленная на компьютере или сервере согласно шагу 1 руководства Установка MongoDB в Ubuntu 18.04.
Шаг 1 — Создание пользователя Mongo
Прежде чем мы начнем работу с кодом приложения, нам нужно будет создать административного пользователя, который будет иметь доступ к базе данных приложения. Этот пользователь будет иметь административные права в любой базе данных, что предоставит вам необходимую гибкость при переключении и создании новых баз данных при необходимости.
Во-первых, проверьте, что MongoDB запущена на вашем сервере:
Следующий вывод показывает, что MongoDB запущена:
Output● mongodb.service - An object/document-oriented database Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2019-01-31 21:07:25 UTC; 21min ago .
Далее откройте командную строку Mongo для создания вашего пользователя:
После этого вы будете должны попасть в командную строку администратора:
OutputMongoDB shell version v3.6.3 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.6.3 . >
При открытии командной строки вы увидите ряд административных предупреждений о том, что вам предоставляется неограниченный доступ к базе данных admin . Дополнительную информацию об ограничении такого доступа см. в руководстве «Установка и обеспечение безопасности MongoDB на Ubuntu 16.04», которая будет полезна вам при переходе к финальной настройке.
А сейчас вы можете воспользоваться своим доступом к базе данных admin для создания пользователя с привилегиями userAdminAnyDatabase , которые позволят получать защищенный паролем доступ к базам данных вашего приложения.
в командной строке укажите, что вы хотите использовать базу данных admin для создания вашего пользователя:
Далее создайте роль и пароль, добавив имя пользователя и пароль с помощью команды db.createUser . Когда вы введете эту команду, командная строка будет добавлять три точки перед каждой строкой, пока работа команды не будет завершена. Обязательно замените пользователя и пароль, предоставленные здесь, на ваши имя пользователя и пароль:
В результате этих действий будет создана запись для пользователя sammy в базе данных admin . Имя пользователя, которое вы выбрали, и база данных admin будут служить идентификаторами для вашего пользователя.
Вывод для всего процесса будет выглядеть следующим образом, включая сообщение о том, что ввод был выполнен успешно:
Output> db.createUser( . < . user: "sammy", . pwd: "your_password", . roles: [ < role: "userAdminAnyDatabase", db: "admin" >] . > . ) Successfully added user: < "user" : "sammy", "roles" : [ < "role" : "userAdminAnyDatabase", "db" : "admin" >] >
После создания вашего пользователя и пароля вы можете закрыть командную строку Mongo:
Теперь, когда вы создали пользователя для базы данных, вы можете перейти к клонированию кода начального проекта и добавлению библиотеки Mongoose, которая позволит вам реализовать схемы и модели для коллекций в ваших базах данных.
Шаг 2 — Добавление информации о Mongoose и базе данных в проект
Нашими следующими действия будут клонирование начального кода приложения и добавление в проект информации о Mongoose и нашей базе данных MongoDB.
В корневой директории пользователя без прав root клонируйте репозиторий nodejs-image-demo из учетной записи DigitalOcean на GitHub. Этот репозиторий содержит код настройки, описанной в руководстве Сборка приложения Node.js с помощью Docker.
Клонируйте репозиторий в директорию с именем node_project :
Перейдите в директорию node_project :
Прежде чем изменить код проекта, давайте посмотрим на структуру проекта с помощью команды tree .
Подсказка: tree — это полезная команда для просмотра структур файлов и каталогов из командной строки. Для установки вы можете использовать следующую команду:
Для ее использования перейдите в заданную директорию с помощью команды cd и введите tree . Также вы можете указать путь для начальной точки с помощью команды:
Введите следующее для просмотра директории node_project :
Структура текущего проекта выглядит следующим образом:
Output├── Dockerfile ├── README.md ├── app.js ├── package-lock.json ├── package.json └── views ├── css │ └── styles.css ├── index.html └── sharks.html
Мы будем добавлять директории в этот проект по мере прохождения руководства, и команда tree будет полезна для оценки нашего прогресса.
Далее добавьте в проект пакет mongoose npm с помощью команды npm install :
Эта команда создаст директорию node_modules в директории вашего проекта, используя зависимости, перечисленные в файле package.json проекта, и добавит mongoose в эту директорию. Также она добавит mongoose в зависимости, перечисленные в файле package.json . Более подробную информацию о файле package.json см. в шаге 1 руководства по сборке приложения Node.js с помощью Docker.
Перед созданием любых схем или моделей мы добавим информацию о подключении базы данных, чтобы наше приложение смогло подключиться к нашей базе данных.
Чтобы максимально разделить интересы вашего приложения, создайте отдельный файл для информации о подключении базы данных с именем db.js . Откройте файл в nano или вашем любимом редакторе:
Во-первых, импортируйте модуль mongoose с помощью функции require :
~/node_project/db.js
const mongoose = require('mongoose');
Это позволит вам получить доступ к встроенным методам Mongoose, которые вы будете использовать для создания подключения к вашей базе данных.
Далее добавьте следующие константы для определения информации для URI подключения к Mongo. Хотя использование имени пользователя и пароля не является обязательным, мы добавим их, чтобы с их помощью можно было запрашивать аутентификацию для нашей базы данных. Обязательно замените имя пользователя и пароль, представленные ниже, на ваши собственные. Также вы можете назвать базу данных как-то иначе, чем «^>sharkinfo , если захотите:
~/node_project/db.js
const mongoose = require('mongoose'); const MONGO_USERNAME = 'sammy'; const MONGO_PASSWORD = 'your_password'; const MONGO_HOSTNAME = '127.0.0.1'; const MONGO_PORT = '27017'; const MONGO_DB = 'sharkinfo';
Поскольку мы запускаем нашу базу данных локально, то в качестве имени хоста будем использовать 127.0.0.1 . Это могло быть иначе в другом контексте разработки: например, если бы вы использовали отдельный сервер базы данных или работали с несколькими узлами в контейнеризированном рабочем процессе.
Наконец, необходимо определить константу для URI и создать соединение с помощью метода mongoose.connect() :
~/node_project/db.js
. const url = `mongodb://$:$@$:$/$?authSource=admin`; mongoose.connect(url, );
Обратите внимание, что в URI мы указали значение authSource для нашего пользователя в качестве базы данных admin . Это необходимо, поскольку мы указали имя пользователя в нашей строке подключения. С помощью флага useNewUrlParser и mongoose.connect() мы указали, что хотим использовать новый парсер URL-адресов Mongo.
Сохраните и закройте файл после завершения редактирования.
В качестве заключительного шага добавьте информацию о подключении базы данных в файл app.js , чтобы приложение могло использовать ее. Откройте app.js :
Первая строка скрипта будет выглядеть следующим образом:
~/node_project/app.js
const express = require('express'); const app = express(); const router = express.Router(); const path = __dirname + '/views/'; .
Под определением константы router , расположенным в верхней части файла, добавьте следующую строку:
~/node_project/app.js
. const router = express.Router(); const db = require('./db'); const path = __dirname + '/views/'; .
С помощью этого мы укажем приложению на необходимость использования информации о подключении базы данных, указанной в файле db.js .
Сохраните и закройте файл после завершения редактирования.
После добавления информации о базе данных и Mongoose в ваш проект вы можете настроить схемы и модели, которые будут определять форму данных в вашей коллекции sharks .
Шаг 3 — Создание схем и моделей Mongoose
Нашим следующим шагом будет изучение структуры коллекции sharks , которую будут создавать пользователи в базе данных sharkinfo с помощью ввода данных. Какую структуру должны иметь создаваемые нами документы? Страница информации об акуле в нашем текущем приложении содержит некоторые сведения о разных акулах и их поведении:

В соответствии с этой темой мы можем попросить пользователей добавлять новых акул с общими данными о них. Эта цель будет определять то, как мы создадим нашу схему.
Чтобы обеспечить отличие ваших схем и моделей от других частей приложения, создайте директорию models в текущей директории проекта:
Далее откройте файл sharks.js для создания вашей схемы и модели:
Импортируйте модуль mongoose в верхней части файла:
~/node_project/models/sharks.js
const mongoose = require('mongoose');
Ниже определите объект Schema для использования в качестве основы для вашей схемы акулы:
~/node_project/models/sharks.js
const mongoose = require('mongoose'); const Schema = mongoose.Schema;
Теперь вы можете определить поля, которые хотите включить в свою схему. Поскольку мы хотим создать коллекцию с отдельными акулами и информацией об их поведении, давайте добавим ключ name и ключ character . Добавьте следующую схему Shark под определениями ваших констант:
~/node_project/models/sharks.js
. const Shark = new Schema ( name: type: String, required: true >, character: type: String, required: true >, >);
Это определение включает информацию о том, какой тип ввода мы ожидаем от пользователей, в данном случае string, а также о том, обязательно ли вводить эти данные.
Наконец, создайте модель Shark с помощью функции model() в Mongoose. Эта модель позволит запрашивать документы из вашей коллекции и выполнять валидацию новых документов. Добавьте следующую строку внизу файла:
~/node_project/models/sharks.js
. module.exports = mongoose.model('Shark', Shark)
Эта последняя строка делает нашу модель Shark доступной для использования в качестве модуля с помощью свойства module.exports . Это свойство определяет значения, которые модуль будет экспортировать, делая их доступными для использования в любом месте приложения.
Итоговый файл models/sharks.js выглядит следующим образом:
~/node_project/models/sharks.js
const mongoose = require('mongoose'); const Schema = mongoose.Schema; const Shark = new Schema ( name: type: String, required: true >, character: type: String, required: true >, >); module.exports = mongoose.model('Shark', Shark)
Сохраните и закройте файл после завершения редактирования.
После настройки схемы Shark и модели вы можете начать работу над логикой, которая будет определять, как приложение будет обрабатывать вводимые данные пользователя.
Шаг 4 — Создание контроллеров
На следующем шаге мы сможем создать компонент контроллера, который будет определять, как вводимые пользователем данные будут сохраняться в нашей базе данных и извлекаться из нее.
Во-первых, создайте директорию для контроллера:
Далее откройте в этой папке файл sharks.js :
Сверху файла мы импортируем модуль в нашу модель Shark , чтобы мы могли использовать его в логике нашего контроллера. Также мы импортируем модуль path для доступа к утилитам, которые позволят нам задать путь к форме, куда пользователи будут вводить данные об акулах.
Добавьте следующие обязательные функции в начало файла:
~/node_project/controllers/sharks.js
const path = require('path'); const Shark = require('../models/sharks');
Далее мы напишем последовательность функций, которые мы будем экспортировать в модуль контроллера с помощью сочетания клавиш exports . Эти функции будут включать три задачи, связанные с данными об акулах нашего пользователя:
- Отправка пользователям формы ввода акулы.
- Создание новой записи акулы.
- Отображение акул для пользователей.
Для начала создайте функцию index для отображения страницы с акулами с формой ввода. Добавьте эту функцию под импортами:
~/node_project/controllers/sharks.js
. exports.index = function (req, res) res.sendFile(path.resolve('views/sharks.html')); >;
Затем под функцией index добавьте функцию с именем create для создания новой записи акулы в коллекции sharks :
~/node_project/controllers/sharks.js
. exports.create = function (req, res) var newShark = new Shark(req.body); console.log(req.body); newShark.save(function (err) if(err) res.status(400).send('Unable to save shark to database'); > else res.redirect('/sharks/getshark'); > >); >;
Эта функция будет вызываться, когда пользователь публикует данные об акуле в форме на странице sharks.html . Мы создадим маршрут с конечной точкой POST позже в этом руководстве, когда мы будем создавать маршруты нашего приложения. Используя body запроса POST, наша функция create будет создавать новый объект документа акулы, который называется здесь newShark с помощью модели Shark , которую мы импортировали. Мы добавили метод console.log для вывода записи акулы в консоль, чтобы убедиться, что наш метод POST работает надлежащим образом, но вы можете пропустить этот шаг, если хотите.
Используя объект newShark , функция create будет вызывать метод model.save() Mongoose для создания нового документа акулы, используя ключ, который вы определили в модели Shark . Эта функция обратного вызова соответствует стандартной схеме обратного вызова Node: callback(error, results) . В случае ошибки мы будем отправлять сообщение об ошибке нашим пользователям, а в случае успеха мы будем использовать метод res.redirect() для отправки пользователей в конечную точку, которая будет возвращать им информацию об акуле в браузере.
Наконец, функция list будет отображать содержимое коллекции для пользователя. Добавьте следующий код под функцией create :
~/node_project/controllers/sharks.js
. exports.list = function (req, res) Shark.find(>).exec(function (err, sharks) if (err) return res.send(500, err); > res.render('getshark', sharks: sharks >); >); >;
Эта функция использует модель Shark с методом model.find() Mongoose для возврата акул, которые были добавлены в коллекцию sharks . Она выполняет эту задачу, возвращая объект запроса — в данном случае это все записи в коллекции sharks — в качестве обеспечения, используя функцию exec() Mongoose. В случае ошибки функция обратного вызова будет отправлять ошибку с кодом 500.
Возвращаемый объект запроса с коллекцией sharks будет отображаться на странице getshark , которую мы создадим на следующем шаге с помощью языка шаблонов EJS.
Итоговый файл будет выглядеть примерно так:
~/node_project/controllers/sharks.js
const path = require('path'); const Shark = require('../models/sharks'); exports.index = function (req, res) res.sendFile(path.resolve('views/sharks.html')); >; exports.create = function (req, res) var newShark = new Shark(req.body); console.log(req.body); newShark.save(function (err) if(err) res.status(400).send('Unable to save shark to database'); > else res.redirect('/sharks/getshark'); > >); >; exports.list = function (req, res) Shark.find(>).exec(function (err, sharks) if (err) return res.send(500, err); > res.render('getshark', sharks: sharks >); >); >;
Обязательно учитывайте, что мы не будем использовать здесь стрелочные функции, вы можете включить их в этот код, если будете использовать этот код в собственной разработке.
Сохраните и закройте файл после завершения редактирования.
Перед переходом к следующему шагу вы снова можете запустить tree из директории node_project для просмотра структуры проекта на данный момент. На этот раз для лаконичности мы будем использовать tree , чтобы пропустить node_modules , используя параметр -I:
После внесения этих изменений ваш проект будет выглядеть следующим образом:
Output├── Dockerfile ├── README.md ├── app.js ├── controllers │ └── sharks.js ├── db.js ├── models │ └── sharks.js ├── package-lock.json ├── package.json └── views ├── css │ └── styles.css ├── index.html └── sharks.html
Теперь, когда у вас есть компонент контроллера для управления тем, как пользовательский ввод будет сохраняться и передаваться пользователю, вы можете перейти к созданию представлений, которые будут реализовывать логику вашего контроллера.
Шаг 5 — Использование EJS и межплатформенное ПО Express для сбора и отображения данных
Чтобы наше приложение могло работать с данными пользователя, нам нужно сделать две вещи: сначала мы добавим встроенную функцию межплатформенного ПО Express, urlencoded() , которая позволит нашему приложению парсить вводимые пользователем данные. А затем мы добавим теги шаблона в наши представления, чтобы активировать динамическое взаимодействие с данными пользователя в нашем коде.
Для работы с функцией urlencoded() Express откройте ваш файл app.js :
Над функцией express.static() добавьте следующую строку:
~/node_project/app.js
. app.use(express.urlencoded( extended: true >)); app.use(express.static(path)); .
Добавление этой функции позволит получить доступ к распарсенным данным POST из нашей формы информации об акуле. Мы укажем значение true параметра extended для обеспечения большей гибкости в отношении типа данных, который будет парсить ваше приложение (включая такие вещи как вложенные объекты). Дополнительную информацию о параметрах см. в документации для функции.
Сохраните и закройте файл после завершения редактирования.
Далее мы добавим функциональность шаблона для наших представлений. Во-первых, установите пакет ejs с помощью команды npm install :
Далее откройте файл sharks.html в папке views :
На шаге 3 мы просматривали эту страницу для определения того, как мы должны записать нашу схему и модель Mongoose:

Теперь, вместо того, чтобы использовать дизайн с двумя столбцами, мы добавим третий столбец с формой, где пользователи смогут вводить информацию об акулах.
В качестве первого шага укажите размеры 4 для существующих столбцов, чтобы создать три столбца одинакового размера. Обратите внимание, что вам нужно внести эти изменения в двух строках, которые сейчас выглядят следующим образом: . Укажите значения 4 «> :
~/node_project/views/sharks.html
.