Здравствуйте, alvas, Вы писали:
A>Здравствуйте, ionoy, Вы писали:
A>2) Какая цель проекта? Какие основные фичи?
Цель у нас амбициозная — создать лучший в мире фреймворк для разработки веб приложений
Основные фичи NN уже перечислил, но я дополню.
Фреймворк предназначен для упрощения написания браузерных приложений, благодаря смешению клиентского и серверного кода. Такой подход позволяет избавится от большей части boilerplate кода. То есть оставить только то, что описывает логику и ни строчки больше. На данный момент мы не так уж и далеко от цели, достаточно посмотреть на исходники меню rsdn.ru
.
Структура приложения состоит из так называемых юнитов. Каждый юнит содержит клиентский код (транслируемый из немерле в яваскрипт), HTML шаблон с биндингами и серверный код. Все эти три части опциональны, т.е. юнит может содержать только логику или только шаблон. По желанию можно оставить и только серверный код, но в этом нет никакого смысла Кстати, из серверного кода на сервере генерируется контроллер, а на клиенте прокси-поле для его использования.
При компиляции макрос разбирает каждый юнит и генерирует из него яваскрипт+html+серверный код, которые в последствии отдаются при запросе. Примеры юнитов можно посмотреть в проекте Samples или в вышеупомянутом меню rsdn.
Одна из интересных возможностей — это использование Немерле макросов. В браузерном коде есть часто используемые паттерны, как, например, тот же throttling. Их как раз очень удобно реализовывать с помощью макросов.
Кроме этих юнитов, для описания логики приложения теоретически не нужно ничего. Это, конечно, не означает, что отпадает необходимость писать серверную бизнес логику — данная проблема лежит вне компетенции нашего фреймворка.
Мы, кстати, на данный момент базируемся поверх ASP.NET MVC. Если у кого-то возникнет необходимость, то можно будет написать адаптер под любой другой серверный фреймворк.
Здравствуйте, ionoy, Вы писали:
I>Цель у нас амбициозная — создать лучший в мире фреймворк для разработки веб приложений
Какой у вас "Hello World"? Где у меня ошибки?
[Unit]
public class Index
{
public HelloWorld : string {
get { "Hello World!"; }
};
}
[Html]
public View() : string
{
<#
<div>
$HelloWorld
</div>
#>
}
public class Server
{
public Index() : void
{
//????
}
}
}
Только не хватало ключевым немерлистам отвлекаться на такие штуки. Есть внятный список достоинств node.js на сервере? А то все ASP.NET vs node.js что в гугле — как-то неубедительны...
Здравствуйте, alvas, Вы писали:
A>А кстати правда что у руби с обратной совместимостью туго? Говорят что разница между 1.8 и 1.9 как в питоне между 2.x и 3.x? Какая у них политика в этом вопросе?
Да вроде нет. Я не замечал особых. Вот floating literal начинающийся с точки убрали, да с кодировками наводят порядок. При переходе с 1.9 на 2.0 практически нет проблем, с 1.8 на 1.9 были небольшие проблемы с кодировками. Были еще изменения приоритетов некоторых операторов, но я всегда стараюсь ставить скобки если приоритет хоть чуть не очевиден. В целом, серьезных проблем нет. Примерно так же, как версию фреймворка поменять.
Здравствуйте, alvas, Вы писали:
A>Какой у вас "Hello World"? Где у меня ошибки?
A>
A> [Unit]
A> public class Index
A> {
A> public HelloWorld : string {
A> get { "Hello World!"; }
A> };
A> }
A> [Html]
A> public View() : string
A> {
A> <#
A> <div>
A> $HelloWorld
A> </div>
A> #>
A> }
A> public class Server
A> {
A> public Index() : void
A> {
A> //????
A> }
A> }
A> }
A>
1. В объявлении свойства на второй строчке зачем-то };
2. Класс Server нужно объявлять только тогда, когда этому юниты нужны данные с сервера — прочитать что-то из базы данных или записать обратно. При этом сериализация/десериализация происходит автоматически.
Здравствуйте, alvas, Вы писали:
A>Здравствуйте, ionoy, Вы писали:
A>В коде есть упоминание throttle. Не смог найти в интернете. Можно ссылку что это такое и с чем его едят?
Вкратце это нужно, чтобы не реагировать на событие сразу, а по истечении некоторого времени.
В случае поиска мы не хотим вызывать поиск на каждый символ, это будет очень накладно, а только когда пользователь закончил ввод.
Здравствуйте, alvas, Вы писали:
A>Здравствуйте, ionoy, Вы писали:
A>В коде есть упоминание throttle. Не смог найти в интернете. Можно ссылку что это такое и с чем его едят?
Этот паттерн обычно используют, когда нужна строка поиска. Если отсылать поисковый запрос на каждое нажатие клавиши, то получится что мы отправим как минимум столько запросов, сколько букв в слове. Такой подход может вызвать проблемы с производительностью, да и никому не нужен. Для того, чтобы избежать этой проблемы перед запросом вставляется таймаут, и если до истечения этого таймаута была нажата следующая кнопка, то таймаут сбрасывается. Таким образом запрос отсылается только на то нажатие, которое было "последним".
На самом деле название throttle не совсем корректное, более правильно называть его debounce. Но, throttle как-то более распространён, имхо.
Здравствуйте, alvas, Вы писали:
A>Кстати Edge.js — Running Node.js and .NET in One Process появилась возможность к javascript прикрутить C#, F#, Python, and PowerShell и было бы здорово прикрутить N, например.
Как концепт, конечно, инетересно. Но использовать такой подход в своём коде, это имхо жесть. Я бы лучше нативными node.js либами воспользовался.
Здравствуйте, ionoy, Вы писали:
I>1. В объявлении свойства на второй строчке зачем-то }; I>2. Класс Server нужно объявлять только тогда, когда этому юниты нужны данные с сервера — прочитать что-то из базы данных или записать обратно. При этом сериализация/десериализация происходит автоматически.
Я просто качнул фреймворк, нашел пример выкинул лишнее, не понимая что делаю.
Напишите правильный
Здравствуйте, hi_octane, Вы писали:
_>Только не хватало ключевым немерлистам отвлекаться на такие штуки. Есть внятный список достоинств node.js на сервере? А то все ASP.NET vs node.js что в гугле — как-то неубедительны...
Ну может и не обязательно ключевым, но взглянуть мне кажется стоит. Кстати был сегодня на Bizspark Urkaine. Там http://skwibl.com/ рассказывали что используют node.js в продакшене и "всем довольны"
M$ Azure поддерживает node.js, например... Чем нода лучше ASP.NET не знаю , но может как раз за счет N это преимущество и появится
Здравствуйте, alvas, Вы писали:
A>Кстати Edge.js — Running Node.js and .NET in One Process появилась возможность к javascript прикрутить C#, F#, Python, and PowerShell и было бы здорово прикрутить N, например. A>Влад! Ты где?
По поводу прикручивания чего-то к чему-то — это не ко мне. У нас и так времени катастрофически не хватает.
Могу только помочь консультациями по разным тонким вопросам связанным с немерлом. А уж прикручивать вы как-нибудь сами пробуйте.
Кроме того не вижу смысла в данной затее. Немерл на сервере и так самодостаточен. Заменять его скриптами или смесью скриптов статики неразумно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
I> [Unit]
I> public class Index
I> {
I> public HelloWorld : string {
I> get { "Hello World!"; }
I> }
I> [Html]
I> public View() : string
I> {
I> <#
I> <div>
I> $HelloWorld
I> </div>
I> #>
I> }
I> }
I>
I>Только там зайди в HomeController, проверь, что возвращается именно Index
Cпасибо
1) Как еще можно передавать данные во вьюху, кроме как через свойства?
2) Можно передавать dynamic? Кстати его(dynamic) поддерживает текущая версия N?
Здравствуйте, alvas, Вы писали:
A>Здравствуйте, _NN_, Вы писали:
A>>>Вы слышали по node.js? _NN>>И что теперь ? _NN>>Писать на JS я не собираюсь все равно.
A>Я это к тому что на чем писать есть в избытке. Есть проблема выбора оптимального инструмента. A>В автор этого фреймворка? Можно было бы обсудить цели, задачи и ближайшие планы...
С удовольствием.
Мы будем только рады.
В планах довести дело до ума, обкатывая на дереве для RSDN.
Починить компилятор , чтобы была нормальная версионость
.
Соответственно компилятор выложить в виде NuGet пакета.
И сам NemerleWeb выложить в виде NuGet пакета.
При этом добавить шаблоны для студии, чтобы были заготовки в один клик.
P.S.
Если вы желаете принять участие в разработке, имеет смысл перейти на более скорый способ общения в виде чата.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, alvas, Вы писали:
A>>P.S. Меня смущает что N пропал из под Linux...
VD>Дык вместо того чтобы смущаться лучше было бы помочь исправить это досадное недоразумение.
VD>В прочем, в прошлый раз проблемы были в Моно. А народ не стал терпеть не компилируемые пакеты.
Я просто купил Rapsberry Pi. Не нарадуюсь с него и Линукса
Как говорил один лектор про Windows. Это конечно все прекрасно, но это в Линуксе было еще надцать лет назад
Возьмем например Nuget. Ну вы поняли.
P.S. Кто не понял — такая вича есть уже давно в python — pip, в ruby — gem, в linux — apt-get.....
Здравствуйте, _NN_, Вы писали:
NN>P.S. _NN>Если вы желаете принять участие в разработке, имеет смысл перейти на более скорый способ общения в виде чата.