DSL на JavaScript
Как вам DSL на JavaScript для описания роутинга на Node.js?
( fab ) ( "/hello" ) [ "GET" ]( "hello!" ) ( /\/([a-z]+)/", function(){ return "hello, " + this.capture[ 0 ] + "!" } ) [ 404 ]( "sorry, only lowercase names are supported." ) () [ 404 ]( "sorry, only /hello paths are valid." ) ( fab ) |
Как это прочитать?
* по роуту /hello и методоу GET - выдать "hello!"; * по роуту hello/любое_в_[a-z] выдать результат функции (что хранит this.capture при этом?) * по роуту /hello/не_найдено - соответственно; * по /не_найдено - соответственно; Цитата:
( fab ) ... ( fab ) Открывает/закрывает описание роутов? Странно как-то - это функция fab в скобках? Дальше вызывается с атрибутом "/hello", от результата (возвращается объект) берётся по ключу ["GET"] и снова вызывается функция от этого результата с параметром "hello!"? Или это вообще псевдо-код, который просто отдельно парсится затем? Если так - то синтаксис (особенно по скобкам) перегружен. |
Нет, это обычный JS. По мне так чисто прикольно, мне такая форма записи не нравится. Разве что у новичков wow-эффект вызывать :) Хотя они от (function() {})() то в шоке :)
|
Ну, во всяком случае, скобки для (fab) явно лишние ;) Даже Lisp напомнило по обилию скобок.
Я бы описал это всё обычным объектом без выпендрежа с вызовами функций ) |
Цитата:
|
Цитата:
По сути: объектом, на мой взгляд, проще, наглядней и понятней. |
Цитата:
Цитата:
Цитата:
Я ж ссылку привёл не в ключе "какая крутая штука", а скорее "ой как забавно сделали". :) Пользоваться таким я никогда не буду. |
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 15:21. |