如何"要求"使用browserify的文本文件?

时间:2013-06-29 11:53:20

标签: node.js backbone.js commonjs browserify

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

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

我为浏览器化了stringify插件,但文档中的代码不能与browserify V2一起使用

3 个答案:

答案 0 :(得分:42)

require()非常适合只使用javascript代码和json文件来维护与节点的奇偶校验,并提高代码对期望require()以节点方式工作的外部人员的可读性。

请考虑使用brfs转换,而不是使用require()加载文本文件。使用brfs,您可以通过调用fs.readFileSync()来维护与节点的奇偶校验,但是不像在节点中那样执行同步IO,brfs会将文件内容内联到内联中,所以

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

答案 1 :(得分:9)

<强>字符串化

https://github.com/JohnPostlethwait/stringify

以下作者的例子:

var bundle = browserify()
    .transform(stringify(['.hjs', '.html', '.whatever']))
    .add('my_app_main.js');

答案 2 :(得分: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!&#34;浏览器中的消息 附:我自己没试过这个。

编辑:请注意,此解决方案会破坏NodeJS的兼容性 - 它只能在浏览器状态下运行,因为NodeJS不知道如何需要.txt个文件。