我正在使用browserify(使用browserify-middleware)我怎么能需要简单的文本文件,比如:
var myTmpl = require("myTmpl.txt");
我检查了 browserify的stringify插件,但文档中的代码不适用于 browserify V2
我正在使用browserify(使用browserify-middleware)我怎么能需要简单的文本文件,比如:
var myTmpl = require("myTmpl.txt");
我检查了 browserify的stringify插件,但文档中的代码不适用于 browserify V2
require()
最适合仅用于 javascript 代码和 json 文件,以保持与 node 的一致性,并提高您的代码对希望require()
以 node 中的方式工作的外部人员的可读性。
考虑使用brfs转换,而不是使用require()
加载文本文件。使用 brfs,您可以通过调用保持与节点的奇偶性,而不是像在节点中那样执行同步 IO,brfs 会将文件内容就地内联到包中,因此fs.readFileSync()
var src = fs.readFileSync(__dirname + '/file.txt');
变成
var src = "beep boop\n";
在捆绑输出中。
只需编译-t brfs
:
browserify -t brfs main.js > bundle.js
更多关于为什么重载require()
是一个坏主意的讨论:http: //mattdesl.svbtle.com/browserify-vs-webpack
字符串化:
https://github.com/JohnPostlethwait/stringify
以下是作者示例:
var bundle = browserify()
.transform(stringify(['.hjs', '.html', '.whatever']))
.add('my_app_main.js');
如果你真的想使用require()
,你可能想看看partialify:
my.txt
:
Hello, world!
index.js
:
alert( require( "my.txt" ) );
配置 Browserify 的地方:
var partialify = require( "partialify/custom" );
partialify.alsoAllow( "txt" );
bundle.add( "./index.js" );
bundle.transform( partialify );
理论上你会得到一个“Hello, world!”。浏览器中的消息。
PS我自己没有试过这个。
编辑:请注意,此解决方案破坏了 NodeJS 的兼容性 - 它仅适用于浏览器化状态,因为 NodeJS 不知道如何要求.txt
文件。