我有一个场景,想要从客户端将数据导出为CSV格式。我会有一个文本框/区域或其他地方,用户可以输入数据,然后理想情况下,点击一次按钮时,本地的CSV文件将被更新为该数据。
使用Node.js和其核心模块(特别是fs
模块),通过与服务器交互很容易实现此目标。但显然从浏览器中实现这一点就不那么容易。
我发现某些Node.js模块(例如underscore
)支持RequireJS的方法,在浏览器中使用特定的模块。因此我对underscore进行了以下操作:
methods.js
define(['underscore'],function(_) {
var Methods = {
doSomething: function() {
var x = _.size({one: 1, two: 2, three: 3, xuz: 3});
alert(x);
}
};
return Methods;
});
common.js
requirejs.config({
baseURL: 'node_modules',
paths: {
underscore: 'underscore/underscore',
}
});
require(['methods'], function(y){
y.doSomething();
});
首页.html
<script data-main="common" src="require.js"></script>
<script>
require(['common'], function() {
require(['methods.js']);
});
</script>
上述代码可以正常运行并弹出警告框:4。
但是当我尝试使用fs
模块时,它不起作用并显示以下错误:
Module name "util" has not been loaded yet for context: _. Use require([])
据我所理解,这是因为fs
需要其他几个模块之一是util
。所以我继续将所有这些模块添加到RequireJS配置中。但仍然没有运气,所以我特别测试了
util
模块本身,因为它似乎不需要其他模块就可以工作。现在我卡在了这个错误上:
Uncaught ReferenceError: exports is not defined
我尝试通过将整个模块源代码封装在以下内容中来对此util
模块进行模块化:define([], function() {})
但它也没有起作用...我还尝试了复制underscore
的模型,但仍然没有运气。
所以我想知道是否有人成功地在浏览器中使用了util
和fs
模块(或任何其他核心的NodeJS模块),并结合RequireJS或Browserify等库。