Комментарии 29
Спасибо! Очень доступно изложено!
Кто все туториалы по Derby минусует? Неужели проделки любителей Angular? Не хочется на них думать :-)
Это хабр, привыкайте.
Привыкаю…
Еще раз спасибо за инвайт.
Еще раз спасибо за инвайт.
Рад, что кому-то успел отдать, пока не слили. =) Тем более derby.js действительно показался интересным на тот момент.
Тем более derby.js действительно показался интересным на тот момент.
А на текущий момент? :)
На текущий момент наиболее насущные проблемы это архитектурная организация кода. Ужас как не люблю спагетти-код. Больше смотрю сейчас в сторону marionette.js. Но к дерби возможно и вернусь когда-то.
Вот кстати хороший вопрос в тему…
Как грамотно в Derby структурировать код Избегая «спагетти» и соответствую SOLID?
Как грамотно в Derby структурировать код Избегая «спагетти» и соответствую SOLID?
Нет у меня такой команды derby bare
D:\node\derby>derby --help
Usage: derby [options] [command]
Commands:
new [dir] [app]
Create a new Derby project. If no directory name is specified, or the
name `.` is used, the project will be created in the current directory.
A name for the default app may be specified optionally.
Options:
-h, --help output usage information
-V, --version output the version number
-c, --coffee create files using CoffeeScript
-n, --noinstall do not run `npm install`
D:\node\derby>derby -V
0.5.9
Команда была добавлена месяц назад. Обновите Дерби, пожалуйста.
Ээх! Засада. Статика — работает. Локальная «динамика» — работает. А многопользовательская — нет. Надо курить мануал — что-то не то на win7-64. Или переходить на linux :)
Вот дамп:
Для начала буду ставить VirtualBox…
Вот дамп:
Trace: [Error: ERR unknown command 'evalsha']
at C:\Dropbox\web\node\Derby\habr\node_modules\derby\node_modules\racer\node_modules\share\lib\server\session.js:485:19
at C:\Dropbox\web\node\Derby\habr\node_modules\derby\node_modules\racer\node_modules\share\lib\server\useragent.js:185:23
at C:\Dropbox\web\node\Derby\habr\node_modules\derby\node_modules\racer\node_modules\share\node_modules\livedb\lib\index.js:475:53
at C:\Dropbox\web\node\Derby\habr\node_modules\derby\node_modules\racer\node_modules\share\node_modules\livedb\lib\index.js:696:53
at C:\Dropbox\web\node\Derby\habr\node_modules\derby\node_modules\racer\node_modules\share\node_modules\livedb\lib\index.js:185:16
at C:\Dropbox\web\node\Derby\habr\node_modules\derby\node_modules\racer\node_modules\share\node_modules\livedb\lib\index.js:144:16
at Command.callback (C:\Dropbox\web\node\Derby\habr\node_modules\redis\index.js:1140:13)
at RedisClient.return_error (C:\Dropbox\web\node\Derby\habr\node_modules\redis\index.js:531:25)
at ReplyParser.<anonymous> (C:\Dropbox\web\node\Derby\habr\node_modules\redis\index.js:282:14)
at ReplyParser.EventEmitter.emit (events.js:95:17)
Operation was rejected (Error: ERR unknown command 'evalsha'). Trying to rollback change locally.
[Error: ERR unknown command 'evalsha']
C:\Dropbox\web\node\Derby\habr\node_modules\derby\lib\View.server.js:41
return json.replace(/[&']/g, function(match) {
^
TypeError: Cannot call method 'replace' of undefined
at stringifyData (C:\Dropbox\web\node\Derby\habr\node_modules\derby\lib\View.server.js:41:15)
at Object.View._renderScripts (C:\Dropbox\web\node\Derby\habr\node_modules\derby\lib\View.server.js:176:7)
at C:\Dropbox\web\node\Derby\habr\node_modules\derby\lib\View.server.js:156:10
at null._onTimeout (C:\Dropbox\web\node\Derby\habr\node_modules\derby\node_modules\racer\lib\Model\bundle.js:14:5)
at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
Для начала буду ставить VirtualBox…
У меня все ОК на win 7- 64
У вас видимо Redis 2.4
В live-db используются комманда evalsha (выполнение Lua скриптов). Ее добавили только в Redis 2.6
В live-db используются комманда evalsha (выполнение Lua скриптов). Ее добавили только в Redis 2.6
Да, точно. Вот, ведь, невнимательный я :) Сходу нашёл только x86 установщик. Ссылочку не подскажете? Ставить VS и «билдить» что-то не хочется ;)
Я вот отсюда собирал: github.com/MSOpenTech/redis
И это было последней каплей для перехода на Linux :-) Рекомендую.
И это было последней каплей для перехода на Linux :-) Рекомендую.
создается коллекция path = создается коллекция **page**
Спасибо за труды, очень интересно! Объясните пожалуйста, зачем делать render в subscribe? Если вынести, работает так же:
app.get('/', function(page, model) {
model.subscribe('page.text', function(err) {
if (!model.get('page.text')) {
model.set('page.text', 'text in model');
}
})
page.render();
});
Нашёл ответ в следующей статье: habrahabr.ru/post/196088/#comment_6801840
Ну да, здесь общая логика такая, чтобы при первом запросе на сервере отдать уже полностью готовую страницу (чтобы поисковики нормально индексировали), нужно делать render после того, как все данные в модель уже загрузились.
subscribe регистрирует подписку на данные, но кроме того его callback срабатывает тогда, когда данные полностью загрузились в модель.
Если же вынести рендер, то пользователь все-равно увидит все то же самое, да и в случае, если этот код будет на клиенте — тоже разницы не будет. Вопрос именно в случае сервера, что отправит сервер клиенту и важно это лишь для индексации.
subscribe регистрирует подписку на данные, но кроме того его callback срабатывает тогда, когда данные полностью загрузились в модель.
Если же вынести рендер, то пользователь все-равно увидит все то же самое, да и в случае, если этот код будет на клиенте — тоже разницы не будет. Вопрос именно в случае сервера, что отправит сервер клиенту и важно это лишь для индексации.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Derby.js Путь воина