Как подключить node js к html
Перейти к содержимому

Как подключить node js к html

  • автор:

Как подключить html и css файлы к серверу на node.js?

Как подключить html и css файлы к серверу на node.js не используя Express, Nest, Hapi?

Вот что я написал, но думаю что это не корректно.

let http = require('http'); let fs = require('fs'); let path = require('path'); http.createServer(function(req, res)< if(req.url === "/")< fs.readFile('index.html', null, function(err, html)< res.writeHead(200, ); res.end(html); >); > else if(req.url.match('style.css'))< var cssPath = path.join(__dirname, req.url); var fileStream = fs.createReadStream(cssPath); res.writeHead(200, ); fileStream.pipe(res); > else< res.writeHead(404, ); res.end("404 Not Found"); > >).listen(3000, () => console.log('Server work'));
  • Вопрос задан более года назад
  • 784 просмотра

Как подключить express в HTML файл?

Разрабатываю сайт для oracledb. У меня есть файл index.js в котором хранятся функции на подключение к базе данных. Я хочу вызывать эти функции из HTML документа (К примеру: при нажатии на кнопку). Попробовал подключить через script type = «text/javascript» src=»https://qna.habr.com/q/index.js»> , но не помогло. Так-же express.require не помогло. Может есть какие либо способы ?

  • Вопрос задан 07 мая 2023
  • 131 просмотр

1 комментарий

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

GeraJet

Не проще ли будет прикрутить к бд apex?
Решения вопроса 1

Starina_js

Иван @Starina_js
full-stack web dev

Эм, не очень понятен вопрос. Express является фреймворком для разработки серверных приложений на языке JavaScript, который работает на Node.js. Вы не можете подключить Express напрямую в HTML файл

Чтобы делать нужные вам вещи, вам нужно через javascript на фронте обращаться к серверу , который как раз написан на Express

  

В данном примере мы обращаемся к странице / роут — /connect
Этот роут слушает Express и на запрос отвечает / что-то делает

// index.js (серверное приложение с использованием Express) const express = require('express'); const app = express(); // Функции для подключения к базе данных // . // Обработка GET-запроса на /connect app.get('/connect', (req, res) => < // Вызов функции подключения к базе данных // . // Отправка ответа клиенту res.send('Подключение к базе данных выполнено успешно'); >); // Запуск сервера на порту 3000 app.listen(3000, () => < console.log('Сервер запущен на порту 3000'); >);

Как подключить скрипт node js к своему сайту на html?

У меня есть верстка на html и скрипт node.js, который подключается к Базе Данных Mysql, потом должен собирать данные с формы html и отправлять их в Базу Данных MySql. Сейчас скрипт работает при открытии его через термина. Как сделать чтобы при отправке формы(нажатии на кнопку) срабатывал скрипт node js и отправлял данные с формы в БД? PS Попробовал в тупую подключить файл с скриптом node js перед в файле HTML, но выдает ошибку connect.js:1 Uncaught ReferenceError: require is not defined. Мой скрипт:

const mysql = require('mysql'); const conn = mysql.createConnection(< host: "localhost", user: "root", database: "mysestbase", password: "root" >); const name = document.querySelector('#signin_name').value; const mail = document.querySelector('#signin_mail').value; const phone = document.querySelector('#signin_phone').value; document.querySelector('.signin-btn').addEventListener('click', (e)=> < e.preventDefault(); conn.connect(err =>< if (err)< console.log(err); return err; >else < console.log("database --- ok"); >>); let query = "INSERT INTO `test` (`id`, `Name`, `PhoneNum`, `Mail`) VALUES ('', '%name%', '%phone%', '%mail%');"; query = query.replace('%name%', name); query = query.replace('%phone%', phone); query = query.replace('%mail%', mail); conn.query(query, (err, result)=>< console.log(err); console.log(result); >); conn.end(err =>< if (err)< console.log(err); return err; >else < console.log("database --- finished"); >>) >);

Подключение скриптов с использованием Express.

Author24 — интернет-сервис помощи студентам

Добавлено через 23 минуты
По-видимому, express.static ‘скрепляет’ эти файлы, но в описании я ничего об этом не нашел. К примеру, тут даже в комментариях задали этот вопрос:https://metanit.com/web/nodejs/4.4.php

Лучшие ответы ( 3 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Подключение скриптов
Скрипты нужно все сразу при загрузке страницы одним файлом загружать или по мере необходимости -.

Подключение скриптов
Приветствую. Использую динамическую подгрузку скриптов $.getScript(‘../js/script.js’); и возникло.

Подключение скриптов
Здравствуйте! Подскажите что не так, при вызове функции перестает отображать все index.php .

Подключение скриптов
Приветствую, форумчане! Столкнулся с такой проблемой: на определенных страницах не работают js.

364 / 263 / 104
Регистрация: 28.08.2013
Сообщений: 624

Лучший ответ

Сообщение было отмечено Schulzkafer как решение

Решение

5147 / 2760 / 464
Регистрация: 05.10.2013
Сообщений: 7,284
Записей в блоге: 145

Лучший ответ

Сообщение было отмечено Schulzkafer как решение

Решение

Надо выкладывать минимальный неработающий пример, который бы демонстрировал проблему. Нужно максимально помочь другим, чтобы они помогли вам. Я например не могу решать проблему если я не могу это позапускать и поэкспериментировать. Я скопировал всё что есть в вашем вопросе себе и запустил. У меня и квадрат выводится

Результат без ошибок:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
 html> head> meta charset="utf-8"> title>JustDoIttitle> link href="/style.css" rel="stylesheet"> head> body> div id="square">div> script src="/script.js"> script> body> html>
1 2 3 4 5
#square { width: 50px; height: 50px; background-color: brown; }
console.log("My script");
1 2 3 4 5 6 7 8 9 10 11 12 13
const express = require("express"); const http = require("http"); const path = require("path"); const app = express(); app.use(express.static(__dirname + "/")); app.get("/", function(request, response) { response.sendFile(__dirname + "/index.html"); // next(); }); const httpServer = http.createServer(app); const port = process.env.PORT || 3000; httpServer.listen(port, () => { console.log("Server started. Port: ", port); });

Нужно отметить, что у метанита сказано, что нужно создавать специальную папку (например, с именем «public») для статики, которая будет доступна браузеру, а не делать серверные скрипты доступные браузеру.

Регистрация: 31.12.2019
Сообщений: 418

ЦитатаСообщение от 8Observer8 Посмотреть сообщение

Надо выкладывать минимальный неработающий пример, который бы демонстрировал проблему.
Вы правы (пытался сократить при этом чтобы было понятно)

Вы правильно поняли мой пример, вопрос был лишь в том почему если убрать фразу app.use(express.static(__dirname + «/»)); перестает работать подключение =>=>=>

ЦитатаСообщение от 8Observer8 Посмотреть сообщение

Нужно отметить, что у метанита сказано, что нужно создавать специальную папку (например, с именем «public») для статики, которая будет доступна браузеру, а не делать серверные скрипты доступные браузеру.

Несколько раз обратил внимание на эту фразу, но фраза <а не делать серверные скрипты доступные браузеру.>меня всегда сбивала с толку. Но в целом понятно, для статических файлов всегда должно быть app.use(express.static(__dirname + «/»));

5147 / 2760 / 464
Регистрация: 05.10.2013
Сообщений: 7,284
Записей в блоге: 145

ЦитатаСообщение от Schulzkafer Посмотреть сообщение

Вы правильно поняли мой пример, вопрос был лишь в том почему если убрать фразу app.use(express.static(__dirname + «/»)); перестает работать подключение =>=>=>

Я что-то с первого раза не понял вопрос. Да, действительно, если закомментировать подключение директории статичных файлов, то выскакивает две ошибки:

localhost/:1 Refused to apply style from ‘http://localhost:3000/style.css’ because its MIME type (‘text/html’) is not a supported stylesheet MIME type, and strict MIME checking is enabled.

GET http://localhost:3000/script.js net::ERR_ABORTED 404 (Not Found)

Вторая понятна по тексту, что скрипт «script.js» не был найден. Первая ошибка всегда будет возникать, если браузер не может найти css-файл. Да, index.html вы отослали браузеру. Браузер открывает index.html, в котором написано, что нужно подключить файл style.css и браузер пытается его запросить, но не может его загрузить потому что доступ к этому файлу закрыт. Чтобы открыть доступ ко всем файлам из указанной директории и существует express.static. Заметьте, что если вы открыли доступ пользователей к корней директории, то пользователь может посмотреть код вашего сервера обратившить по адресу: www.ваш_сайт.com Локально можете проверить: http://localhost:3000/app.js

5147 / 2760 / 464
Регистрация: 05.10.2013
Сообщений: 7,284
Записей в блоге: 145

Стили, клиентские скрипты и всё что нужно браузеру должно быть в папке «public». У стилей и у клиентских скриптов должны быть отдельные папки:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
 html> head> meta charset="utf-8"> title>JustDoIttitle> link href="css/style.css" rel="stylesheet"> head> body> div id="square">div> script src="js/script.js"> script> body> html>
1 2 3 4 5 6 7 8 9 10 11 12 13
const express = require("express"); const http = require("http"); const path = require("path"); const app = express(); app.use(express.static(__dirname + "/public")); app.get("/", function(request, response) { response.sendFile(__dirname + "/index.html"); // next(); }); const httpServer = http.createServer(app); const port = process.env.PORT || 3000; httpServer.listen(port, () => { console.log("Server started. Port: ", port); });

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *