Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   DSL на JavaScript (https://javascript.ru/forum/misc/7253-dsl-na-javascript.html)

Kolyaj 22.01.2010 16:50

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 )

Dmitry A. Soshnikov 22.01.2010 22:05

Как это прочитать?

* по роуту /hello и методоу GET - выдать "hello!";
* по роуту hello/любое_в_[a-z] выдать результат функции (что хранит this.capture при этом?)
* по роуту /hello/не_найдено - соответственно;
* по /не_найдено - соответственно;

Цитата:

Сообщение от Kolyaj
Как вам DSL на JavaScript

Всё-таки, JavaScript-у можно избавиться от лишних скобок, иной раз они перегружают восприятие.

( fab )
...
( fab )


Открывает/закрывает описание роутов? Странно как-то - это функция fab в скобках? Дальше вызывается с атрибутом "/hello", от результата (возвращается объект) берётся по ключу ["GET"] и снова вызывается функция от этого результата с параметром "hello!"?

Или это вообще псевдо-код, который просто отдельно парсится затем? Если так - то синтаксис (особенно по скобкам) перегружен.

Kolyaj 22.01.2010 22:34

Нет, это обычный JS. По мне так чисто прикольно, мне такая форма записи не нравится. Разве что у новичков wow-эффект вызывать :) Хотя они от (function() {})() то в шоке :)

Dmitry A. Soshnikov 22.01.2010 23:02

Ну, во всяком случае, скобки для (fab) явно лишние ;) Даже Lisp напомнило по обилию скобок.

Я бы описал это всё обычным объектом без выпендрежа с вызовами функций )

Kolyaj 23.01.2010 09:04

Цитата:

Сообщение от Dmitry A. Soshnikov
Ну, во всяком случае, скобки для (fab) явно лишние

Это для симметрии.

Dmitry A. Soshnikov 23.01.2010 18:09

Цитата:

Сообщение от Kolyaj
Это для симметрии.

А кто автор? Ты? Откуда знаешь? :) Понятно, что для симметрии, но, всё равно, излишне.

По сути: объектом, на мой взгляд, проще, наглядней и понятней.

Kolyaj 23.01.2010 21:56

Цитата:

Сообщение от Dmitry A. Soshnikov
А кто автор? Ты?

Чур меня :)

Цитата:

Сообщение от Dmitry A. Soshnikov
Откуда знаешь?

Очевидно же.

Цитата:

Сообщение от Dmitry A. Soshnikov
По сути: объектом, на мой взгляд, проще, наглядней и понятней.

Ну мне идеология jQuery вот тоже не нравится, а новичкам проще.

Я ж ссылку привёл не в ключе "какая крутая штука", а скорее "ой как забавно сделали". :) Пользоваться таким я никогда не буду.

Dmitry A. Soshnikov 23.01.2010 22:34

Цитата:

Сообщение от Kolyaj
Ну мне идеология jQuery вот тоже не нравится

В смысле? А какая у jQuery основная идеология, я даже не знаю? С параметром - сеттер, без параметра - геттер? Или цепочки вызовов? Или ещё что-то? Если цепочки - мне нравится, удобно (но это не идеология jQuery, это до этого было).

Kolyaj 23.01.2010 22:43

Цитата:

Сообщение от Dmitry A. Soshnikov
А какая у jQuery основная идеология, я даже не знаю?

Идеология CSS. Селектор написали и события ему повесили. Хотя не нравится она мне, т.к. новичков сильно путает, и попробуй им ещё объясни, почему подгруженный контент не подхватывает события. Сам я jQuery попользоваться не успел, к тому времени, как она стала популярной, я уже не нуждался во фреймворках :)


Часовой пояс GMT +3, время: 09:35.