Записать в файл из статического файла в Node.JS Express, вызвав на стороне сервера javaScript - PullRequest
0 голосов
/ 03 июля 2018

У меня есть проект node.js, и я могу записать в файл из файла app.js. App.js запускает сервер и запускает содержимое файла index.html в моей общей папке. Проблема в том, что я не могу записать в файл из javascript в общедоступной папке, и я думаю, это потому, что весь javascript есть на стороне клиента. Как мне вызвать серверный JavaScript, чтобы я мог выполнять ввод / вывод?

Index.html - находится в общей папке

 <html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
  <title>test1</title>
</head>
<body>
    <button onclick="WriteToFile()">writie to file</button> <br>
    </body>
</html>

App.js

var express = require('express');
var bodyParser = require('body-parser');
var path = require('path');
var app = express();

// set static path
app.use(express.static(path.join(__dirname, 'public')));

app.listen(3000, function(){
    console.log('Server started on Port 3000...');
})

//How do i call this function or write to a file from index.html.
function WriteToFile(){
    fs = require('fs');
    fs.writeFile('helloworld.txt', 'The Function was called', function (err) {
    if (err) 
    return console.log(err);
    console.log('Wrote Hello World in file helloworld.txt, just check it');
});
}

1 Ответ

0 голосов
/ 03 июля 2018

Как мне вызвать серверный javascript, чтобы я мог выполнять ввод / вывод?

Вы не делаете. Никогда, никогда.

Если между клиентом и сервером существует разделение, для этого есть причина. Безопасность в основном, но и разделение проблем.

Хотя node.js позволяет вам визуализировать представления, он все еще является серверной структурой, и серверная часть и сгенерированный интерфейс никак не связаны. Даже такие монолитные фреймворки, как Rails, которые создают впечатление, будто один и тот же блок и от back-end, и от front-end разделены, у них просто есть очень хорошие абстракции, чтобы скрыть разделение между ними.

Вы захотите создать маршрут в экспрессе, который будет выполнять указанную функцию.

app.get('/hello-world', function(){
// Insert your logic here
})

Затем на внешнем интерфейсе вызовите эту конечную точку, используя Axios (проще) или API выборки (более шаблонный, но встроенная функция, не требующий внешнего модуля).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...