21.08.2018, 17:23
|
Интересующийся
|
|
Регистрация: 16.08.2018
Сообщений: 11
|
|
Выполнение функции при нажатии кнопки на сайте node.js
С javascript знаком, нужно при нажатии кнопки что бы сработала функция создания папки, а затем файла в ней. Через node.js у меня такое получается но только в тот момент когда запускаю Js файл через командную строку. Проблема моя в том что я не могу к кнопке на сайте присвоить функцию, смотрел "Гош... Дуд....", у него есть видео ролик где он пишет код, после чего запускает JS файл и создается папка с файлом, но мне нужно что-бы я нажал кнопку в браузере, и в этот момент запустилась эта функция, а для этого нужно присвоить той кнопке эту функцию вот этого он не показывает, типа "Вот смотрите я иду в магазин, купил килограмм картошки, принес ее домой, помыл, почистил, ну а дальше для вас не составит проблем приготовить из нее пюре", давлюсь сырой картошкой, а хочется приготовить горячее картофельное пюре. Как функции присваиваются. Сервер создал через Node.JS + Express (больше ни чего не подключал). Могу написать код что бы при запуске сервера создавались папки и файлы, но не могу присвоить функцию к кнопке, что бы при запущенном сервере все срабатывало.
|
|
22.08.2018, 14:51
|
|
Профессор
|
|
Регистрация: 08.11.2017
Сообщений: 641
|
|
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
|
|
28.08.2018, 19:23
|
Интересующийся
|
|
Регистрация: 16.08.2018
Сообщений: 11
|
|
Привет! Спасибо за пример 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", жму кнопку и ноль эмоций, я что то не догоняю, помогите понять принцип.
За основу взял твой код, только изменил немного.
Последний раз редактировалось wwIOPUCTww, 28.08.2018 в 22:00.
Причина: Попробовал код, есть вопросы
|
|
29.08.2018, 14:27
|
|
Профессор
|
|
Регистрация: 08.11.2017
Сообщений: 641
|
|
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
|
|
30.08.2018, 11:39
|
Интересующийся
|
|
Регистрация: 16.08.2018
Сообщений: 11
|
|
Спасибо, принцип понял, все функции нужные мне работают.
|
|
05.09.2018, 16:39
|
Интересующийся
|
|
Регистрация: 16.08.2018
Сообщений: 11
|
|
Привет всем! Еще есть одна просьба, как создать папки с именем "переменной":
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>
Последний раз редактировалось wwIOPUCTww, 05.09.2018 в 16:41.
|
|
12.09.2018, 11:27
|
Интересующийся
|
|
Регистрация: 16.08.2018
Сообщений: 11
|
|
Сделал, все оказалось очень просто:
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
|
|
12.09.2018, 12:05
|
|
Профессор
|
|
Регистрация: 08.11.2017
Сообщений: 641
|
|
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
|
|
|
|