Я только что привел пример части приложения, которое не может быть статичным. Не удобно хранить различные шаблоны для каждого языка приложения и править их все при малейшем изменении, поэтому они генерируются на сервере. То же самое касается изображений. Они могут отдаваться сервером в различном размере в зависимости, например, от размера экрана клиента, хотя и доступны по одному адресу. Да и стили могут быть различны.
Мне думается что приложение которое «целиком статика» — в некотором роде миф.
Судя по всему вы больше работаете на front end. Не всегда есть возможность получать html шаблоны разбросанные по различным директориям, в которых к тому же содержатся «css/less/sass (и иногда даже картинки и прочие файлы)», так как зачастую шаблоны — это не статические файлы. Их генерацией занимается серверная часть приложения, которая может расставить имена полей формы в соответствии с моделью или перевести статические тексты на язык, полученный из GET параметра.
Таким образом вам придется настраивать сложные маршруты, которые будут перенаправлять такие запросы на соотв. контроллер на сервере, или же получать их централизованно от специально созданного контроллера (/templates/<templatename>.html?lang=en), что на мой взгляд удобнее.
Что качается такой статики как изображения и файлы стилей, то на мои взгляд держать из вместе с js скриптами не удобно, хотя это наверно дело привычки.
Может быть подскажете, есть ли заготовка приложения со структурой описанной вами? Было бы интересно попробовать.
Я пробовал различные подходы, и это мне показался наиболее удобным.
Что касается структуры, которую вы привели в пример — я ее обязательно изучу, хотя на первый взгляд она мне кажется менее удобной и структурированной (простите за каламбур!).
Пользуюсь данным подходом (с некоторыми доработками) и не могу сказать что он имеет какие-либо существенные недостатки. Конечно стоит добавить, что независимые модули приложения удобнее разбивать на несколько таких структур как в примере.
Так же если у вас множество контроллеров, то удобнее распределить контроллеры по директориям, указав в загрузчике модуля (index.js) соответствующие пути:
// Наблюдаем за thingy(простите, язык не повернется писать «наблюдаем за рюшечками»)
Один из примеров когда переводить комментарии не лучшая идея. Тогда не плохо бы переменные транслитерировать. Кстати изображения без перевода вас не смущают?
В обучающих статьях мне тоже нравится видеть сразу код. Нет, правда. Но я сомневаюсь, что кто-либо не знакомый с фреймворком, прочитав этот урок подумает: «Ух, как здорово тут все организовано! Пожалуй, нужно изучить!»
Просто меня несколько удивило что перевод статьи для начинающих почти годовой давности может принести инвайт. Мне казалось, что порог входа должен быть несколько выше. Но судя по минусам я не прав.
Без претензий к переводчику, я искренне за него рад.
Я нисколько не исключаю, что такие статьи могут быть полезны для начинающих работать с фреймворком. Но сподвигнуть на ознакомление — вряд ли. Для этого больше подойдут обзоры, описывающие назначение, возможности и преимущества продукта, а не туториалы для начинающих.
Мне одному кажется что перевод статьи с информацией для новичков не тянет на полноценную публикацию на хабре? Такие очевидные приемы любой разработчик, ознакамливающийся с AngularJs, узнает на второй день.
Я лично пользуюсь SSD накопителем уже 2 года и лишен подобных предрассудков. Но от знакомых часто слышу вопрос не страшно ли мне, что однажды он «прикажет долго жить».
Думаю в сегменте рядовых пользователей «дурная слава» о надежности SSD будет жить еще долго.
Разве этот показатель не должен зависеть от объема. Т.е. для накопителя объемом 240 ГБ это >2k циклов записи, а для 960 ГБ <0.7k.
Странно что надежность накопителей не повышается. На моем SSD OCZ Vertex 3, если верить этому обзору до 232 терабайт TBW, что соответствует приблизительно 1k циклов при его объеме, хотя выпущен он был три года назад.
Полезный инструмент. Раньше эта функция показывала только то содержимое, которое вернул сервер, и пользы от нее было не много.
Создавая одностраничное приложение с рендером через PhantomJs (с добавлением <meta name="fragment" content="!"> на страницах с динамически формируемым содержимым) невозможно было (или просто я не нашел способ) определить как же видит эту страницу робот. Только спустя неделю по списку ключевых слов понимал что бот получает статическую версию со всем необходимым контентом.
Да, я упомянул об этом в статье. Но как я уже говорил, проблему можно решить кэшированием запросов. Хотя я и близко не сталкивался с проблемами производительности, используя этот подход.
Вы так говорите, как будто я орудовал кистью по холсту, и вышло у меня, мягко говоря, хреново.
Хотя последнего я не исключаю…
Это мое проявление нонконформизма по отношению к современному плоскому дизайну.
Мне думается что приложение которое «целиком статика» — в некотором роде миф.
htmlшаблоны разбросанные по различным директориям, в которых к тому же содержатся «css/less/sass (и иногда даже картинки и прочие файлы)», так как зачастую шаблоны — это не статические файлы. Их генерацией занимается серверная часть приложения, которая может расставить имена полей формы в соответствии с моделью или перевести статические тексты на язык, полученный из GET параметра.Таким образом вам придется настраивать сложные маршруты, которые будут перенаправлять такие запросы на соотв. контроллер на сервере, или же получать их централизованно от специально созданного контроллера (
/templates/<templatename>.html?lang=en), что на мой взгляд удобнее.Что качается такой статики как изображения и файлы стилей, то на мои взгляд держать из вместе с js скриптами не удобно, хотя это наверно дело привычки.
Может быть подскажете, есть ли заготовка приложения со структурой описанной вами? Было бы интересно попробовать.
Что касается структуры, которую вы привели в пример — я ее обязательно изучу, хотя на первый взгляд она мне кажется менее удобной и структурированной (простите за каламбур!).
Так же если у вас множество контроллеров, то удобнее распределить контроллеры по директориям, указав в загрузчике модуля (
index.js) соответствующие пути:Один из примеров когда переводить комментарии не лучшая идея. Тогда не плохо бы переменные транслитерировать. Кстати изображения без перевода вас не смущают?
По теме — функционал конечно полезный. Привыкнув к привязке при работе с AngularJs приходится перестраиваться, когда не можешь ее использовать.
Просто меня несколько удивило что перевод статьи для начинающих почти годовой давности может принести инвайт. Мне казалось, что порог входа должен быть несколько выше. Но судя по минусам я не прав.
Без претензий к переводчику, я искренне за него рад.
$resourceстал для меня настоящим открытием. Трудно придумать более удобный способ «общения» с сервером.Например тут: habrahabr.ru/info/help/registration/#sandbox
Я нисколько не исключаю, что такие статьи могут быть полезны для начинающих работать с фреймворком. Но сподвигнуть на ознакомление — вряд ли. Для этого больше подойдут обзоры, описывающие назначение, возможности и преимущества продукта, а не туториалы для начинающих.
Думаю в сегменте рядовых пользователей «дурная слава» о надежности SSD будет жить еще долго.
Разве этот показатель не должен зависеть от объема. Т.е. для накопителя объемом 240 ГБ это >2k циклов записи, а для 960 ГБ <0.7k.
Странно что надежность накопителей не повышается. На моем SSD OCZ Vertex 3, если верить этому обзору до 232 терабайт TBW, что соответствует приблизительно 1k циклов при его объеме, хотя выпущен он был три года назад.
В этом случае в ответе вернется пустой массив (
[]) с кодом ответа 200. При желании это поведение можно легко изменить.В тех. характеристиках указано:
«Layer resolution: 0.2, 0.3 and 0.4 mm»
Может я что-то не так понимаю, но мне кажется что где-то ошибка.
Создавая одностраничное приложение с рендером через PhantomJs (с добавлением
<meta name="fragment" content="!">на страницах с динамически формируемым содержимым) невозможно было (или просто я не нашел способ) определить как же видит эту страницу робот. Только спустя неделю по списку ключевых слов понимал что бот получает статическую версию со всем необходимым контентом.Таким образом очень удобно конфигурировать объекты для запросов.