- PVSM.RU - https://www.pvsm.ru -
Несколько дней назад я решил пощупать в каком состоянии на данный момент находится представленный некоторое время назад язык Dart. Самый простой, на мой взгляд, способ попробовать возможности языка — это написать на нем нечто простое и законченное. Недолго думая, я решил написать простенький логгер для Dart в объектно-ориентированном стиле. Под катом изложено мое впечатление от Dart и краткое описание того, что получилось.
Dart, как вы знаете, находится в стадии активной разработки и на данный момент имеет:
Легче всего на мой взгляд написать на Dart тому, кто хоть раз писал на Java, потому что синтаксис Dart очень много позаимствовал именно из этого языка. Однако при этом возникает ощущение, что над Java кто-то очень сильно надругался:
Тут все очень просто — среда сырая и с большим количеством багов. В первую очередь раздражает плохая работа автодополнения и подсветка кода. Например, автодополнение отказывается показывать закрытые метода класса внутри самого класса. Хотя до поддержки Java, обеспечиваемой Eclipse DartEditor еще далеко, тем не менее среда отлавливает наиболее очевидные ошибки, связанные с неправильным импортом библиотек или синтаксическими ошибками в коде. Показывает даже некоторые особенности стандартной библиотеки Dart — например, что нельзя одновременно импортировать клиентские (dart:html) и серверные библиотеки (dart:io).
Несморя на то, что сходная функциональность имеется в стандартной библиотеке, я написал очень простой логгер, позволяющий выводить сообщения с различным уровнем логгирования (Debug, Info, Alert и т.п.) в различные выходные потоки. Основными абстракциями, используемыми в логгере являются:
На данный момент реализовано 3 выходных потока:
Пользоваться логгером очень просто:
#import("vader_server.dart");
void main(){
Vader vader = Vader.vader(new StdoutStream());
vader.logWarn("You don't know the power of the dark side!");
vader.logInfo("Luke, I am your father!");
}
Для начала работы достаточно импортировать один из библиотечных файлов: vader_server.dart (для логгирования в файл) или vader_client.dart (для логгирования в браузере). Подобное разделение связано с тем, что в Dart нельзя одновременно импортировать клиентские и серверные библиотеки. Код логгера, снабженный комментариями, можно посмотреть по этой ссылке [1].
Автор: vaniaPooh
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/dart/15998
Ссылки в тексте:
[1] этой ссылке: https://github.com/vania-pooh/vader
Нажмите здесь для печати.