Рекомендуются ли Snaplets для больших приложений или вы можете просто создавать их непосредственно поверх snap-core?

Я планирую писать веб-приложения с помощью Snap.

Но придерживаться snap-core для меня гораздо проще, чем использовать snaplets и линзы.

Можно ли в долгосрочной перспективе начать разработку с snap init barebones, а затем вручную добавлять шаблоны ограблений, постоянство базы данных HDBC и т. д., не прибегая к материалам Lens? Насколько сильно основная команда Snap поощряет использование Snaplets в дополнение к Snap-Core на практике?


person dan    schedule 01.12.2012    source источник


Ответы (2)


Как сказал Очарльз, вы, безусловно, можете создавать большие веб-приложения в snap-core без использования снэплетов. Однако снэплеты были разработаны непосредственно на основе нашего опыта работы с реальными приложениями. Мы заметили, что в конечном итоге все время писали много одного и того же шаблонного кода. Мы обнаружили, что практически для любого достаточно сложного приложения обычно требуется как минимум читатель и/или монада состояния. На самом деле, есть хороший шанс, что вы начнете хотеть этого, даже если вы используете только snap-core + heist, потому что вам придется передавать HeistState везде, где вы его используете.

Так что я бы сказал, что выбор между snap и snap-core примерно эквивалентен выбору между C и языком ассемблера. Можно возразить, что в C есть такие сложные понятия, как «для» и «пока», но язык ассемблера гораздо проще с простым понятием jmp. Но, в конце концов, мы все знаем, что C, кажется, стоил когнитивных накладных расходов, потому что «для» и «пока» воплощают шаблоны, которые мы используем все время.

Однако я скажу, что есть большая вероятность, что вы сможете создать большое веб-приложение без необходимости написания собственного снимка. В настоящее время существует ряд полезных снэплетов, которые решают многие распространенные задачи, и вы можете использовать любой из них, фактически не создавая свой собственный автономный снэплет. Единственная реальная польза от написания собственного снимка заключается в том, что вы будете использовать его более чем в одном веб-приложении или если вы хотите опубликовать его, чтобы другие могли извлечь выгоду.

person mightybyte    schedule 03.12.2012

Это, конечно, возможно, но я бы не рекомендовал. Снэплеты дают вам много возможностей, практически бесплатно, и для их запуска не требуется много усилий. Если вы собираетесь наладить поддержку HDBC и прочее, то, вероятно, вам понадобится собственная монада и экземпляр MonadSnap. Готов поспорить, что это уже сложнее, чем просто использование моментальных снимков.

Я не думаю, что придерживаться snap-core намного проще, я бы сказал, что вы собираетесь создавать более запутанный код, так как теперь вам нужно писать вещи, которые не важны для вашего приложения. .

Вот очень простой пример того, как я настраиваю базовый снаплет для проекта на работе — всего 40 строк кода. Все, что вы знаете о snap-core, по-прежнему применимо к снэплетам (поскольку обработчики являются экземплярами MonadSnap).

Так что нет, вам не обязательно использовать снаплеты, но лично я настоятельно рекомендую их.

person ocharles    schedule 01.12.2012
comment
Спасибо. Я собираюсь изучить API Snaplet с ручкой и бумагой сегодня днем ​​благодаря вашему совету. - person dan; 01.12.2012