Выполнение функции при нажатии кнопки на сайте node.js
С javascript знаком, нужно при нажатии кнопки что бы сработала функция создания папки, а затем файла в ней. Через node.js у меня такое получается но только в тот момент когда запускаю Js файл через командную строку. Проблема моя в том что я не могу к кнопке на сайте присвоить функцию, смотрел "Гош... Дуд....", у него есть видео ролик где он пишет код, после чего запускает JS файл и создается папка с файлом, но мне нужно что-бы я нажал кнопку в браузере, и в этот момент запустилась эта функция, а для этого нужно присвоить той кнопке эту функцию вот этого он не показывает, типа "Вот смотрите я иду в магазин, купил килограмм картошки, принес ее домой, помыл, почистил, ну а дальше для вас не составит проблем приготовить из нее пюре", давлюсь сырой картошкой, а хочется приготовить горячее картофельное пюре. Как функции присваиваются. Сервер создал через Node.JS + Express (больше ни чего не подключал). Могу написать код что бы при запуске сервера создавались папки и файлы, но не могу присвоить функцию к кнопке, что бы при запущенном сервере все срабатывало.
|
index.html
<html> <head> <script> document.addEventListener('DOMContentLoaded', function () { document.getElementById('status').innerHTML = "Status: Loaded" document.getElementById('runner').addEventListener('click', function () { document.getElementById('status').innerHTML = "Status: Running..." fetch('/run_something').then(r => r.json()).then(({ status }) => { document.getElementById('status').innerHTML = `Status: ${status}` }).catch(function (error) { document.getElementById('status').innerHTML = `Status: ${error.message}` }) }) }) </script> </head> <body> <h1>Expressed</h1> <hr/> <div id="status"></div> <hr/> <button id="runner">run something</button> </body> </html> server.js var express = require('express') var app = express() app.get('/', function (req, res) { res.sendFile(__dirname + '/index.html') }) app.get('/run_something', function (req, res) { res.send(JSON.stringify({ status: 'ok' })) }) app.listen(4000, function () { console.log('started at http://localhost:4000') }) package.json { "name": "expressed", "version": "1.0.0", "main": "index.js", "license": "MIT", "dependencies": { "express": "^4.16.3" }, "scripts": { "server": "node server.js" } } yarn install yarn server |
Привет! Спасибо за пример SuperZen, я сделал все как сказал, у меня работает, но это в принципе я и сам мог сделать (если только я что то не понял из твоего посыла), мне нужно, что бы нажал кнопку "Создать папку" и исполнилась функция "fs.mkdir('New')"
index.html <html> <head> <script src="server.js"></script> </head> <body> <h1>Expressed</h1> <hr/> <div id="status"></div> <hr/> <button onclick="reid()">Создать папку</button> </body> </html> server.js var express = require('express') var app = express() function reid(){ var fs = require('fs') fs.mkdirSync('New') } app.get('/', function (req, res) { res.sendFile(__dirname + '/index.html') }) app.listen(4000, function () { console.log('started at http://localhost:4000') }) Запускаю "node server", жму кнопку и ноль эмоций, я что то не догоняю, помогите понять принцип. За основу взял твой код, только изменил немного. |
server.js
var express = require('express') var app = express() function reid() { var fs = require('fs') fs.mkdirSync('New') } app.get('/', function (req, res) { res.sendFile(__dirname + '/index.html') }) app.get('/createDirectory', function (req, res) { try { reid() res.send(JSON.stringify({ created: 'success' })) } catch (erorr) { res.send(JSON.stringify({ created: 'failed' })) } }) app.listen(4000, function () { console.log('started at http://localhost:4000') }) index.html <html> <head> <script> document.addEventListener('DOMContentLoaded', function () { document.getElementById('createDirectory').addEventListener('click', function(e) { fetch('/createDirectory').then(r => r.json()).then(r => { alert(r.created) }) }) }) </script> </head> <body> <h1>Expressed</h1> <hr/> <div id="status"></div> <hr/> <button id="createDirectory">Создать папку</button> </body> </html> node server.js && open http://localhost:4000 |
Спасибо, принцип понял, все функции нужные мне работают.
|
Привет всем! Еще есть одна просьба, как создать папки с именем "переменной":
function reid() { var fs = require('fs') var x = proba fs.mkdirSync('New/$x$') } server.js var express = require('express') var app = express() function reid() { var fs = require('fs') var x = proba fs.mkdirSync('New/$x$') } app.get('/', function (req, res) { res.sendFile(__dirname + '/index.html') }) app.get('/createDirectory', function (req, res) { try { reid() res.send(JSON.stringify({ created: 'success' })) } catch (erorr) { res.send(JSON.stringify({ created: 'failed' })) } }) app.listen(4000, function () { console.log('started at http://localhost:4000') }) index.html <html> <head> <script> document.addEventListener('DOMContentLoaded', function () { document.getElementById('createDirectory').addEventListener('click', function(e) { fetch('/createDirectory').then(r => r.json()).then(r => { alert(r.created) }) }) }) </script> </head> <body> <h1>Expressed</h1> <hr/> <div id="status"></div> <hr/> <button id="createDirectory">Создать папку</button> </body> </html> |
Сделал, все оказалось очень просто:
function reid() { var fs = require('fs') var x = age var y = 22 var z = 'new/papka/' + x + '/' + y fs.mkdirSync(z) } Создается папка с путем: new/papka/age/22 |
var fs = require('fs') var path = require('path') ... app.get('/createDirectory/:age/:id', function(req,res) { fs.mkdirSync(path.join('new', 'papka', req.params.age, req.params.id)) res.json({status: 'created'}) }) ... можно юзать dynamic routes в express |
Часовой пояс GMT +3, время: 04:58. |