Вкратце — это продолжение идеи WUI.Reactive, только переписанное практически с нуля. Удалось создать достаточно мощный транслятор Nemerle -> Javascript, правда немного заточенный под конкретные MVVM нужды. Если кто не знает, как работает MVVM в вебе, то советую посмотреть на
http://knockoutjs.com/. Эта библиотека сейчас как раз и используется для биндингов.
Теоретически ограничения транслятора упираются только в BCL, который, конечно никто не будет дублировать. Практически, проект даже не на стадии альфа, так что о полноте возможностей проебразования говорить пока рано. Однако матчинг, string interpolation, и прочие вкусности работают.
Также была добавлена возможность общаться с сервером в такой манере:
SomeClientSideFunction(user) {
server.SaveUser(user, result => {
//Do something with result
});
}
Сервер описан во вложенном классе:
class Server {
SaveUser(user : User) : string {
db.Users.Update(user);
$"User $(user.Name) succcessfully updated!"
}
}
Достаточно в модели представления объявить вложенный класс с именем Server, так сразу появляется доступ к полю
server с нужными методами, у которых добавляется параметр-коллбек. На данном этапе это единственная конвенция, но можно будет сделать и другие, например
ИмяМоделиServer
Пока это всё. За Roadmap я ещё даже не садился, но планов выше крыши.
Одному работать очень тяжело, три недели практически безвылазно программировал, так что надеюсь, что кто-то ещё заинтересуется.
Репозиторий:
https://github.com/ionoy/NemerleWeb
Сэмплы:
http://nemerleweb.site44.com/index.html (К сожалению два последних сэмпла завязаны на серверную часть, а у меня сейчас нет под рукой Asp.NET хостинга. Так что пока там приведён только код.)
Огромное спасибо Владу, который очень много помогал по ходу проекта. Без его помощи я бы точно не разобрался.