22

我正在使用browserify(使用browserify-middleware)我怎么能需要简单的文本文件,比如:

var myTmpl = require("myTmpl.txt");

我检查了 browserify的stringify插件,但文档中的代码不适用于 browserify V2

4

3 回答 3

44

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

于 2013-07-06T12:21:42.537 回答
9

字符串化

https://github.com/JohnPostlethwait/stringify

以下是作者示例:

var bundle = browserify()
    .transform(stringify(['.hjs', '.html', '.whatever']))
    .add('my_app_main.js');
于 2014-05-03T13:03:07.770 回答
5

如果你真的想使用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文件。

于 2014-04-11T13:40:50.997 回答