Сравнил с Laravel

Не относящиеся к фреймворку и программированию вопросы
Ответить
Аватара пользователя
webplus
Сообщения: 336
Зарегистрирован: 2012.02.24, 22:05

Сравнил с Laravel

Сообщение webplus »

Здравствуйте.
С yii2 работаю уже давно, но стало интересно разобраться в laravel.
И может найдутся на форуме те кто и с юии и ларавел и обьяснят мне плюсы этого популярного фреймворка.
Например у нас есть сайт и только главная страница содержит слайдер js и css слайдера. В юии у нас есть лайоут главный шаблон который подключает общие стили сайта, и есть отдельно вьюшка главной страницы в которой регистрируются js и css слайдера. Тут все удобно, мы не запутаемся с стилями и яваскриптов на отдельных страницах.
В laravel ситуация другая , там в главном лайоуте шаблоне сайта подключаются все яваскрипты и стили, вывод разделения на каждой странице разруливает условие, т.е. если мы на главной страницы то выводятся нужные стили и яваскрипты.
Мне кажется это очень неудобно. Нельзя написать что то типа виджета который сам подключит стили и яваскрипт, а их придется в главном шаблоне через условие подключать.
Сайт по работе в Украине: https://jobis.com.ua/. Сайт по поиску строителей: https://stroyzakaz.com.ua/
Создание сайтов в Киеве: https://webplus.com.ua/ по доступной цене.
Аватара пользователя
ElisDN
Сообщения: 5841
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Сравнил с Laravel

Сообщение ElisDN »

Там шаблонизатор отделён от JS и такой интеграции нет. Вместо этого там упор именно на отдельную сборку скриптов и стилей через WebPack.
Аватара пользователя
webplus
Сообщения: 336
Зарегистрирован: 2012.02.24, 22:05

Re: Сравнил с Laravel

Сообщение webplus »

ElisDN писал(а): 2020.07.27, 10:13 там упор именно на отдельную сборку скриптов и стилей через WebPack.
Интересно а как то там можно отдельно стили собирать и подключать , но без условий в главном шаблоне (условий если то урл то подключаем одни стили и т.д.). WebPack - наверно все стили соберет в один файл, т.е. стили для всех внутренних страниц и главного шаблона он соберет в один файл , а потом он будет браузером кешироваться? правильно я понимаю?
Сайт по работе в Украине: https://jobis.com.ua/. Сайт по поиску строителей: https://stroyzakaz.com.ua/
Создание сайтов в Киеве: https://webplus.com.ua/ по доступной цене.
Аватара пользователя
ElisDN
Сообщения: 5841
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Сравнил с Laravel

Сообщение ElisDN »

webplus писал(а): 2020.07.27, 13:32 Интересно а как то там можно отдельно стили собирать и подключать, но без условий в главном шаблоне
Да, в шаблоне объявляем вывод блока scripts:

Код: Выделить всё

<body>
    ...
    <script src="{{ mix('js/app.js') }}"></script>
    @yield('scripts')
</body>
и в представлении нужной страницы его переопределяем:

Код: Выделить всё

@section('scripts')
    <script src="{{ mix('js/slideshow.js') }}"></script>
@endsection
И условий не нужно.
webplus писал(а): 2020.07.27, 13:32 WebPack - наверно все стили соберет в один файл, т.е. стили для всех внутренних страниц и главного шаблона он соберет в один файл?
Да, по умолчанию настроен сбор всего в один файл из app.js и app.css по всем их импортам. Но можно настроить для себя:

Код: Выделить всё

mix
    .js('resources/js/app.js', 'public/js')
    .sass('resources/sass/app.scss', 'public/css')
    .js('resources/js/slideshow.js', 'public/js')
    .сss('resources/sass/slideshow.css', 'public/css')
    .extract(['jquery', 'bootstrap']);
и т.п. Но это если хочется заморачиваться.
webplus писал(а): 2020.07.27, 13:32 А потом он будет браузером кешироваться? Правильно я понимаю?
Да, будет кэшироваться.
Аватара пользователя
webplus
Сообщения: 336
Зарегистрирован: 2012.02.24, 22:05

Re: Сравнил с Laravel

Сообщение webplus »

Еще такой вопрос, если я при подключении js использую mix , то у меня на хостинге должен стоять node и npm чтобы mix запускало webpack.
У меня локально линукс и mix требует npm, а если у меня обычный хоснинг не впс и установить npm нельзя. То как тогда быть, подключать просто js обычным способом?
Сайт по работе в Украине: https://jobis.com.ua/. Сайт по поиску строителей: https://stroyzakaz.com.ua/
Создание сайтов в Киеве: https://webplus.com.ua/ по доступной цене.
Аватара пользователя
ElisDN
Сообщения: 5841
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Сравнил с Laravel

Сообщение ElisDN »

Либо проиндексировать в git собранные скрипты из public и каждый раз у себя запускать yarn production и коммитить. Это просто, но неудобно.

Либо отказаться от WebPack и работать по-старинке, просто записывая свои скрипты и стили в public. Но тогда будут проблемы с кэшированием из-за отсутствия версионирования, не будет сборки и сжатия и не сможете использовать свежий JS и стили в SCSS.

Либо, что оптимальнее, автоматизировать деплой через сборку в GitHub Actions, BitBucket Pipelines или CircleCI и подобных системах. Там сочинить pipeline, который по пушу в master будет у себя запускать yarn production и в процессе деплоя по ssh будет дозаливать собранные у себя файлы в папку public на хостинг по scp.
anton_z
Сообщения: 483
Зарегистрирован: 2017.01.15, 15:01

Re: Сравнил с Laravel

Сообщение anton_z »

Сборку выполнять локально, собранные файлы закачивать на сервер. Я пользуютсь https://deployer.org. В репозиторий собранные файлы лучше не добавлять.
CD на github вроде бесплатный только для open source?
Аватара пользователя
ElisDN
Сообщения: 5841
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Сравнил с Laravel

Сообщение ElisDN »

anton_z писал(а): 2020.07.29, 02:20 CD на github вроде бесплатный только для open source?
Безлимит только для публичных репозиториев. Для приватных ограничение в 2000 минут в месяц.
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Сравнил с Laravel

Сообщение maleks »

По моему обзорному прочиту одной книжки по laravel, что сразу бросается в глаза, так это:
- роуты все вручную определять
- отсутствие понятия модулей, что неудобно, в модулях можно было много общего функционала написать и переиспользовать
- может mixins и был как несколько устаревший подход, но поведения в yii2 позволяли создавать наработки, которые реально ускоряли разработку
- какие то вещи есть насчет форм, и как валидировать ввод, но это не полноценные модели, которые в форме выводятся с сообщениями об ошибке под каждым полем. Может расширения помогут.
- ну понятно что CRUD нет такого чтобы автоматом, т.к. с формами ручник
- еще точно не уверен, но вроде там все определения для DI контейнера захардкаживаются в классах.
- многовато магии, одно вот это превращение обычных методов в статические чего стоит

А так конечно много там всякого функционала из коробки, плюс современного, раз они идут в ногу со временем, но руку надо набивать.
Yii2 universal module sceleton - for basic and advanced templates
Ответить