Главная страница Новости кинофильмов Игровые новости Новости спорта Новости технологий Автомобильные новости

Node CSV версии 0.1 и будущие разработки

Новости

Анализатор Node CSV только что вышел на версию 0.1, которая закрывает выпуски 0.0.x. Проект, запущенный почти 2 года назад, получил огромное количество участников в виде сообщений об ошибках, запросов на обновление и электронных писем. Его использует большая часть сообщества NodeJS, и теперь его можно считать стабильным.

Что ж, это не самая лучшая новость. По-настоящему потрясающая новость заключается в том, что теперь у меня есть немного времени, чтобы начать разработку ветки версии 0.2. Это открывает путь к некоторым захватывающим разработкам, о которых я собираюсь рассказать более подробно.

Обратная совместимость

По-французски говорят, что нельзя приготовить омлет, не разбив несколько яиц. Так что да, API изменится к лучшему. С самого начала проекта это казалось неправильным, а неполная поддержка stream API делает его в лучшем случае нестандартным и, честно говоря, трудным для понимания и правильного использования.

Если ваш проект работает на версиях 0.0.x или 0.1.x, не волнуйтесь. Мы будем поддерживать поддержку, и любая обнаруженная ошибка будет перенесена на эти версии.

Новый Stream API

Эта небольшая схема иллюстрирует структуру будущего кода:

|————| |————|————| |————| | | | | | | | | csv.from | | CSV | | csv.to | | | | |/|/Stream | | Writer | Reader | | Поток | | Читатель |.канал( | API | API | ).канал( | Writer | ) | | | | | | | | | | | | | | |————| |————|————| |————|

Новый экземпляр CSV будет полностью совместим с stream API. Это будет как средство записи потока для отправки входных данных, так и средство чтения потока для доступа к выходным данным.

Пример:

fs.createReadStream( ‘./in’ ).pipe(csv()).pipe( fs.createWriteStream(‘./out’) )

Удобные функциональные возможности

В качестве альтернативы, он будет содержать удобные функции, доступные через свойства from и to. Некоторые из этих функций уже присутствовали в версии 0.1 и были просто переименованы. Например, функция csv.fromPath() теперь называется csv.from.path(). Планируются новые функции, такие как csv.to.string и csv.to.array.

Пример:

csv().from.path( ‘./in’ ).to.path( ‘./out’ )

Изоляция кода

До сих пор весь исходный код содержался в одном файле. Отныне код будет выглядеть следующим образом:

Этот рефакторинг должен упростить понимание исходного кода и помочь новичкам подготовиться запросы на извлечение, которые особенно приветствуются.

Документация

Как я уже делал в прошлом во многих проектах, таких как Mecano (теперь Nikita), содержимое readme будет сведено к минимуму, а документация будет сгенерирована непосредственно из исходного кода. Специально для этой цели будет написан небольшой скрипт. Идея состоит в том, чтобы задокументировать каждую функцию комментариями, написанными в синтаксисе markdown. Простой анализатор регулярных выражений считывает каждый файл, извлекает комментарий и записывает файл markdown в папку “./doc”. В конечном итоге папка doc копируется в каталог Jekyll на этом веб-сайте перед загрузкой.

Я считаю, что гораздо проще документировать проект на основе каждой функции, чем поддерживать согласованность в формате doc или большом файле readme.

CoffeeScript

Этот проект, вероятно, был последним, о котором я мог бы заявить, что он написан на JavaScript. Я здесь не для того, чтобы начинать войну. Я выбрал CoffeeScript не потому, что он был крутым, я пользуюсь им уже полтора года и считаю, что написание старого JS — это мучение. Тест был переведен некоторое время назад, но рабочий код все еще был на JavaScript. Начиная с версии 0.2.0, код будет содержаться в CoffeeScript. Исходный файл будет находиться в папке “./src”, а транслированный JavaScript — в папке “./lib”.

Заключение

Сейчас самое время понаблюдать за разработкой этой новой версии и поделиться своими отзывами. Я буду рад выслушать ваши предложения.


Другие новости: