Угловой 2 + угловой-cli + Laravel 5.3

Используя последнюю версию angular-cli, я создал новый проект, и все работает нормально. Затем я попытался интегрировать его в Laravel 5.3. У меня есть этот проект, работающий с systemjs, но я хочу переключиться на webpack и воспользоваться преимуществами angular-cli.

Проблема в том, что в angular-cli.json я не могу указать, что индекс равен index.php, он принимает только HTML.

По сути, я вообще не могу запустить приложение Angular с этой настройкой.

Как я могу преодолеть это?


person paradox37    schedule 17.09.2016    source источник
comment
Я работаю с angula2, angular-cli и laravel 5.3, но я держу их отдельно, я создаю API с laravel и использую его с angular2, и он работает хорошо, почему бы вам не использовать тот же подход?   -  person Cristian Sepulveda    schedule 27.11.2016
comment
@CristianSepulveda Спасибо за вклад (y)   -  person Subtain Ishfaq    schedule 29.12.2016
comment
@CristianSepulveda, не могли бы вы предоставить любую демо-версию URL-адреса для strutured, который вы используете, я также хочу это, но с laravel хочу установить angular 4   -  person sunil    schedule 07.06.2017


Ответы (5)


В итоге я разделил Laravel и Angular 2, как написал в комментарии Кристиан Сепульведа. В любом случае это рекомендуемый подход.

Я делаю API с Laravel и использую его с Angular 2.

person paradox37    schedule 07.12.2016
comment
Как я могу сделать API в Laravel, чтобы использовать его? - person huykon225; 18.01.2018

В моем случае я работаю с приложением angular из laravel. Я все еще использую webpack для создания своих ресурсов, но у меня есть задача gulp, которая копирует угловой index.html в index.blade.php, который обслуживает приложение laravel. Я также использую gulp для копирования встроенных файлов из /dist в /public.

person S..    schedule 27.10.2016

У меня была та же проблема, и я обнаружил, что это связанная проблема в их проблемах GitHub:

Выходная папка всегда будет полностью заменена. Вы можете использовать папку public/, чтобы иметь файл index.php, который будет скопирован в выходную папку, или вывести приложение в отдельную папку и скопировать файлы самостоятельно.

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

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

person Kaloyan Kosev    schedule 26.09.2016

Я нашел только одно решение для себя.

  1. создать сборку для клиентского кода с помощью ng build --prod
  2. Используя gulp, скопируйте сгенерированные файлы в общедоступный каталог Laravel gulp copy (здесь вы можете проверить, существуют ли старые файлы сборки, удалите их)
  3. Используя плагин gulp-ingect, вставьте скопированные файлы в макет gulp inject

-- Это можно использовать в CI и делать с помощью инструментов автоматизации. В результате у нас есть inline.js и три файла *.**.bundle.js. В том же основном макете я статически добавляю <base href="/example"> (здесь вы можете использовать любой определенный в корневом пути маршрутов Laravel) и внутри файла шаблона, который загружается с этого пути (в моем случае «example.blade.php»), добавить угловой 2 корневой элемент <st-example>Loading...</st-example>

-- Благодаря этой настройке у вас есть корневой макет Laravel, внутри которого требуется угловой 2 корневой URL-адрес href и внедренные файлы сценариев из сборки. И ваш файл шаблона для текущего маршрута имеет корневой элемент внутри (он включен в основной макет простым выходом лезвия ('content')).

P.S. также вы должны заметить, что если вы используете некоторые http-запросы в angular 2, после того, как вы интегрируете его в проект Laravel, это добавит промежуточное программное обеспечение защиты csrf к каждому запросу... И если у вас есть новые ошибки в запросах, которые работали ранее, просто проверьте заголовки .

person Artem Zinoviev    schedule 15.11.2016

Поскольку angular-cli не позволяет указать index.php, пусть будет, просто укажите index.html потом туда… И добавьте соответствующий маршрут в роутинг Laravel. Как этот, например:

Route::any('{path?}', function () {
    return File::get(public_path() . '/index.html');
})->where("path", ".+");

Кстати, это просто ловушка для каких-то неизвестных маршрутов… Но я думаю, вы поняли.

person zhekaus    schedule 05.12.2016