如何用browserify"需要"文本文件?

hai*_*mke 22 commonjs node.js backbone.js browserify

我使用browserify(使用browserify-middleware)我如何需要简单的文本文件,例如:

var myTmpl = require("myTmpl.txt");
Run Code Online (Sandbox Code Playgroud)

我为browserify购买了stringify插件,但文档中的代码不能与browserify V2一起使用

sub*_*ack 43

require()对于只是javascript代码和json文件来说,保持与节点的奇偶校验以及提高代码对期望require()以节点方式工作的外部人员的可读性是最好的.

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

var src = fs.readFileSync(__dirname + '/file.txt');
Run Code Online (Sandbox Code Playgroud)

var src = "beep boop\n";
Run Code Online (Sandbox Code Playgroud)

在捆绑输出中.

只需编译-t brfs:

browserify -t brfs main.js > bundle.js
Run Code Online (Sandbox Code Playgroud)

关于为什么重载require()太多的更多讨论是一个坏主意:http://mattdesl.svbtle.com/browserify-vs-webpack

  • 我真的觉得这是一个可怕的实现,特别是因为我不能轻易地抽象这个功能并做类似的事情:function getTemplate(path){return fs.readFileSync(__ dirname +'/'+ path,'utf8'); } (7认同)
  • 有没有一个只使用"需要"? (3认同)

Str*_*der 9

stringify:

https://github.com/JohnPostlethwait/stringify

这是作者的例子:

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


小智 5

如果你真的想使用require(),你可能想看看partialify:

my.txt:

Hello, world!
Run Code Online (Sandbox Code Playgroud)

index.js:

alert( require( "my.txt" ) );
Run Code Online (Sandbox Code Playgroud)

配置Browserify的位置:

var partialify = require( "partialify/custom" );
partialify.alsoAllow( "txt" );

bundle.add( "./index.js" );
bundle.transform( partialify );
Run Code Online (Sandbox Code Playgroud)

从理论上讲,你会得到一个"Hello,world!" 浏览器中的消息.
PS我自己没试过.

编辑:请注意,此解决方案违反了NodeJS兼容性 - 它仅在浏览器状态下工作,因为NodeJS不知道如何要求.txt文件.