小编Har*_*ens的帖子

使用基于浏览器的JavaScript和Node操作本地文件系统

我正在制作一个项目,需要允许用户从浏览器与文件系统进行交互.我在编写客户端JavaScript方面有很多经验,而且我有很多为Web抓取,数据分析和文件系统工作编写Node脚本的经验.但是这个项目将允许用户在浏览器中更改内容,然后在本地保存这些数据(最终保存到Web服务器) - 我对此没有任何经验.

我已经安装了browserifybrowserify-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);
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

从"Hello world!"记录的意义上说,这"有效".在控制台中.但据我所知,它不会在本地创建目录或保存文件.我有一些模糊的感觉,它是在浏览器中临时保存这些东西,并且当我离开时它们被删除.但我想实际创建一个目录并在本地保存一个文件.我可以单独使用JavaScript吗?是否有关于如何在基于浏览器的JavaScript和Node之间"关闭循环"的好教程?

更新

我接受了TJ Crowder的回应 - ExpressJS确实在JavaScript中进行客户端 - 服务器通信相对简单.我现在正在做的是,我将用户的条目保存到全局JSON对象.当用户单击"保存"按钮时,我使用字符串化的JSON 更新<input>元素中隐藏元素的值<form>.然后我提交表单,Express app.post()和模块体解析器给我一切req.body.然后我可以执行正常的节点文件系统操作.

javascript node.js

3
推荐指数
1
解决办法
6030
查看次数

D3.js - 从版本2中的path.area更改为版本4

我正在尝试更新d3-cartogram以使用D3.js版本4.到目前为止,一切都很顺利 - 我刚刚更新了所有函数,以便它们被编写在版本4的扁平命名空间中.例如而不是d3.geo.path(),它d3.geoPath().我还更改了一些小东西,以便代码可以使用最新版本的TopoJSON.例如,而不是topojson.object(topology, geom).coordinates,它是topojson.feature(topology, geom).geometry.coordinates.

但我遇到了一个似乎无法解决的问题.该文件cartogram.js有一行读取var areas = objects.map(path.area),其中objects是TopoJSON功能的集合.path.area在D3.js版本2和4中是不同的,我似乎无法调和它们.如果我控制台在每个版本中记录它,它看起来像这样:

  • 版本2: function (n){return n&&e.hasOwnProperty(n.type)?e[n.type](n):t}
  • 第4版: function (t){return U_(t,r(Ag)),Ag.result()}

在版本4中,它记录错误:Uncaught TypeError: r is not a function.当然,我已经用Google搜索了错误以及我正在尝试做的各种描述,但我没有运气.在此先感谢您的帮助.

javascript d3.js topojson cartogram

1
推荐指数
1
解决办法
285
查看次数

标签 统计

javascript ×2

cartogram ×1

d3.js ×1

node.js ×1

topojson ×1