Как "требовать" текстовые файлы с браузером?
Я использую browserify (с помощью браузера-промежуточного программного обеспечения)
как я могу использовать простые текстовые файлы, например:
var myTmpl = require("myTmpl.txt");
Я читал stringify плагин для браузера, но код в документации не работает с браузером V2
Ответы
Ответ 1
require()
действительно лучше всего подходит только для javascript-кода и json файлов для поддержания четности с помощью node и для повышения удобочитаемости вашего кода посторонним, которые ожидают, что require()
будет работать так, как это делается в node.
Вместо использования require()
для загрузки текстовых файлов рассмотрите использование brfs. С помощью brfs вы сохраняете четность с помощью node, вызывая fs.readFileSync()
, но вместо выполнения синхронного ввода-вывода, как в node, 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
Ответ 2
stringify
https://github.com/JohnPostlethwait/stringify
Вот пример автора:
var bundle = browserify()
.transform(stringify(['.hjs', '.html', '.whatever']))
.add('my_app_main.js');
Ответ 3
Если вы действительно хотите использовать require()
, вы можете посмотреть partialify:
my.txt
:
Hello, world!
index.js
:
alert( require( "my.txt" ) );
Если сконфигурирован браузер:
var partialify = require( "partialify/custom" );
partialify.alsoAllow( "txt" );
bundle.add( "./index.js" );
bundle.transform( partialify );
Теоретически вы получите "Привет, мир!". сообщение в браузере.
Постскриптум Я сам этого не пробовал.
Изменить: обратите внимание, что это решение нарушает совместимость NodeJS - оно работает только в браузере, так как NodeJS не знает, как требовать файлы .txt
.