【发布时间】:2018-03-10 02:54:44
【问题描述】:
我正在制作一个需要允许用户从浏览器与文件系统交互的项目。我有很多编写客户端 JavaScript 的经验,也有很多编写 Node 脚本的经验,比如网络抓取、数据分析和文件系统工作。但是这个项目将允许用户在浏览器中更改内容,然后将数据保存在本地(最终保存到 Web 服务器)——我对此没有经验。
我已经安装了 browserify 和 browserify-fs 以在浏览器中使用 Node 的 fs 模块,并使用 browserify-fs README 中的示例创建一个目录,向其中写入文件,然后读取该文件:
var fs = require('browserify-fs');
fs.mkdir("/home", function(err){
if (err) throw err;
fs.writeFile("/home/hello-world.txt", "Hello world!", function(err) {
if (err) throw err;
fs.readFile("/home/hello-world.txt", "utf-8", function(err, data) {
if (err) throw err;
console.log(data);
});
});
});
在它记录“Hello world!”的意义上,这个“有效”。在控制台中。但据我所知,它不会在本地创建目录或保存文件。我有一种模糊的感觉,它会将这些东西暂时保存在浏览器中,并且当我离开时它们会被删除。但我想实际创建一个目录并在本地保存一个文件。我可以单独使用 JavaScript 做到这一点吗?有没有关于如何在基于浏览器的 JavaScript 和 Node 之间“闭环”的好教程?
更新
我接受了 T.J. Crowder 的回应——ExpressJS 确实使 JavaScript 中的客户端-服务器通信相对简单。我现在正在做的是,我将用户的条目保存到一个全局 JSON 对象中。当用户单击“保存”按钮时,我使用字符串化 JSON 更新 <form> 元素中隐藏的 <input> 元素的值。然后我提交表格,Express 的app.post() 加上模块body-parser 给我req.body 中的所有内容。然后我就可以进行正常的Node文件系统操作了。
【问题讨论】:
-
想象一下 JavaScript 是否可以访问文件系统。任何人都可以创建一个网站,对任何访问它的人的计算机造成严重破坏。如果你想在本地存储东西,请使用
localStorage。 -
看
browserify-fs,根本不是你想要的…… -
不幸的是,您对基于浏览器的 javascript 的唯一文件访问是使用带有文件类型的 INPUT 标记,它询问用户什么文件。 local-storage / IndexedDb 等可用于存储数据。如果你想要更多的控制,你可以创建一个嵌入 webkit / node 系统的应用程序。这就是 Atom.io 之类的东西使用等。尝试-> electron.atom.io
标签: javascript node.js