Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Так на чём в итоге делать SPA? (https://javascript.ru/forum/offtopic/48787-tak-na-chjom-v-itoge-delat-spa.html)

Octane 17.07.2014 01:04

Цитата:

Сообщение от nerv_
Цитата:

Сообщение от Octane
шаблонизатор удобно такой, чтобы предварительно компилил шаблоны на сервере в яваскрипт функции, например snakeskin

последнее время меня преследует агрессивная реклама продуктов фирмы kobezzza :D

Ну ладно fest jade :D

nerv_ 17.07.2014 01:18

Цитата:

Сообщение от Octane
Ну ладно fest jade

я не против :) Он нормальные вещи делает. Хуже было бы, если это была реклама UI :D

Цитата:

Сообщение от l-liava-l
Или так)) Я пишу код, а времени мало) Все учу в процессе

Смотри:
1. есть жуквери, на нем "писать легче", чем на чистом жс, поэтому легче наговнить. И многие сразу мнят себя гуру яваскрипта
2. есть ангуляр. На нем еще легче писать (границ еще меньше), чем на жуквери, следственно, наговнить еще проще. И большинство думает: "ща возьму ангуляр и сразу стану супер герой клиентской разработки. Все бабки мои, дедки и телки тоже. Не хочу ничего знать и думать тоже не хочу." Результат - говно на говне в говне :)

melky 17.07.2014 01:19

Цитата:

Сообщение от Octane
Ну что для SPA главное? Роутер и шаблонизатор

ещё разделение кода по модулям и управление их загрузкой, инициализацией и связями (сообщениями)
. наверное)
Цитата:

Сообщение от Octane
такой, чтобы предварительно компилил шаблоны на сервере в яваскрипт функции

кстати ещё нужно не забыть про индексацию (я про чудо трюки индексации AJAX сайтов от YA, GOOG). но тут вроде все могут рендериться на сервере, верно?
Цитата:

Сообщение от Gozar
А мне нравиться то, что я сейчас пилю.

мы в amix видели этот проект, нет?
Цитата:

Сообщение от l-liava-l
Чем чаще пишу на ангуляре тем больше понимаю что он не подходит для такого.

тож слыхал. думаю даже не начинать делать на нём
Цитата:

Сообщение от nerv_
Не делать SPA. Зачем оно?

требование заказчика и ... по мне, геморно использовать мощные фронтенд фреймворки вместе с многостраничной структурой. с одностраничным легче - всё в одну кучу бандлером намешал и пусть оно само там асинхронно лениво инициализируется, а ты себе знай код пиши)))
Цитата:

Сообщение от nerv_
последнее время меня преследует агрессивная реклама продуктов фирмы kobezzza

:lol: да ладно, чего уж )

Octane 17.07.2014 01:40

Цитата:

Сообщение от melky
ещё разделение кода по модулям и управление их загрузкой

lmd

Цитата:

Сообщение от melky
кстати ещё нужно не забыть про индексацию (я про чудо трюки индексации AJAX сайтов от YA, GOOG). но тут вроде все могут рендериться на сервере, верно?

хз наверное sitemap с ссылками на серверную версию в robots.txt указывают

melky 17.07.2014 07:58

Цитата:

Сообщение от Octane
lmd

видол. есть ещё свежий Webpack для ленивой сборки картинок и всего что угодно
Цитата:

Сообщение от Octane
хз наверное sitemap с ссылками на серверную версию в robots.txt указывают

вопрос в том, можно ли каждый FW отрисовать на сервере. если есть, но нет проблем)

Gozar 17.07.2014 08:46

Цитата:

Сообщение от melky
мы в amix видели этот проект, нет?

fj на гите залита как рабочая недоальфа и без нормальных примеров и пояснений. Также там недописан деструктор и правильная работа с вложенными шаблонами при работе с методами элемента. Будет :)

Смысл такой.

Сначала добавляем шаблон html и методы работы с этим шаблоном (элемент b с текстом и данными пользователя)
addElement({ b: {
  tpl:'<b name='{data.name}'>{text}</b>',
  methods: {
  remove: function(){},
  setText: function(){},
  getText: function(){},
}});


а когда строим приложение привязываем к нему события:

b = gui({
type: 'b',
name: 'BoldTextElement',
parent: 'root', //куда крепим, можно не указывать прикрепит в body,
text: 'Василий Болд!'
data: [{name:'bold-element'}],
events: {
  click: function(){
  var text = gui.method(b, 'getText'); //тут надо бы придумать что-то чтобы обойтись без переменной b, а метод уже знал с чем работает
  console.log(text)
  }
},
dataEvents: {//добавляем слушатель на вложенный элемент, если есть, здесь это не нужно, только для примера
  click: function(){
    this указывает на вложенный элемент пользователя
  }
},
modelEvents: {//создаем событие модели, если нужно, события модели можно создавать и позже
  myEvent: function(){}
}

})


Есть еще модель и методы работы с ней.

Шаблонизатор позволяет создавать по сути любые элементы любой сложности и вложенности. В нем есть только foreach, но в других я смысла пока не вижу.

l-liava-l 17.07.2014 12:06

Цитата:

Смотри:
1. есть жуквери, на нем "писать легче", чем на чистом жс, поэтому легче наговнить. И многие сразу мнят себя гуру яваскрипта
2. есть ангуляр. На нем еще легче писать (границ еще меньше), чем на жуквери, следственно, наговнить еще проще. И большинство думает: "ща возьму ангуляр и сразу стану супер герой клиентской разработки. Все бабки мои, дедки и телки тоже. Не хочу ничего знать и думать тоже не хочу." Результат - говно на говне в говне
ангуляро танки?) на жуквери говнокод пишется в разы чаще быстрее и проще.
Да и говнокод говнокоду рознь, рефракторинг спасает, лишь бы архитектура правильная была.

Прочитал доки бегло, понял концепцию. и начал писать код, столкнулся с проблемой, пошел посмотрел.

Gozar 17.07.2014 13:08

Цитата:

Сообщение от l-liava-l
на жуквери говнокод пишется в разы чаще быстрее и проще.

Жуквери это не библиотека для написания говнокода, это библиотека базового уровня, на ней не пишут приложения. Именно поэтому, если на ней писать приложения, то получается говнокод.

Для того, чтобы писать SAP нужны совершенно другие возможности. Нужен настраиваемый конструктор интерфейса с примочками (модель, конструкторы, деструкторы виджетов ...)

Кстати ты про jquery или про jquery + jqueryui? Я на jqueryui не писал, но выглядит не очень.

melky 17.07.2014 15:54

одного React'а хватит на всё про всё ?

kobezzza 17.07.2014 16:08

Цитата:

Сообщение от melky (Сообщение 321484)
одного React'а хватит на всё про всё ?

Зависит от задачи :)

На личном опыте разработки крупных SPA (~ 2 года) могу сказать, что самое сложно и важно там - это сборщик мусора и планировщик задач и потоков.

Data-binding приятная, но не обязательная часть. А вообще там супер много нюансов и очень сильно зависит от задачи.

Цитата:

Сообщение от melky (Сообщение 321484)
Не делать SPA. Зачем оно?

Согласен. Если задача не требует именно SPA (чистый SPA нужен редко, как правило для задач "без разрывного стриминга", например, плеер или видеоплеер, который работает бесшовно с переходами страниц), то лучше вообще не заморачиваться, а разбить свой проект на мастер-страницы, где организовать "мини-SPA" уже со своим любимым фреймворком, будь то Angular или ещё что.

Цитата:

Результат - говно на говне в говне
:D

Резюмируя: Если проект укладывается в 1 мастер-пейдж, то реализовать SPA не сложно, а если нет и вам очень надо, то... приготовьтесь к попо-боли и велосипедам :)


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