Я использую AngularJS и Laravel для своего проекта веб-приложения. Мой маршрут выглядит так:
AngularJS:
angular.config(['$stateProvider','$urlRouterProvider',function($stateProvider,$urlRouterProvider) {
$urlRouterProvider.otherwise('/');
$stateProvider
.state('home', {
url: '/',
templateUrl: '/admin/dashboard'
});
}]);
Laravel:
Route::group(array('prefix'=>'admin', function(){
Route::get('/', ['as'=>'admin.main',function(){
return view('main');
}]);
Route::get('/dashboard', ['as'=>'admin.dashboard',function(){
return view('dashboard');
}]);
});
Я столкнулся с проблемой, что мне нужно было бы объявить путь маршрута в 2 месте. Один в Angular, а другой в Laravel. Поэтому каждый раз, когда я добавляю новый маршрут или изменяю маршрут, мне нужно будет работать на 2 месте. Это станет чем-то утомительным и трудным для поддержки, когда приложение будет расти.
В любом случае нужно ли указывать URL-адрес маршрута только в одном месте, но оно будет эффективным для обоих?
Я предполагаю, что вы создаете одностраничное приложение. Это означает, что на стороне сервера (Laravel) вам нужно использовать один и тот же шаблон для всех запросов GET, например,
Route::group(['prefix' => 'admin'], function() {
Route::get('(.*)', function() {
return view('dashboard');
});
});
На стороне клиента (AngularJS) вы выполняете маршрутизацию, как описано в вопросе.
Кстати, вы используете неправильный синтаксис в маршрутизации Laravel, это неверно:
Route::get('/', ['as'=>'admin.main',function(){
}]);
и вот как это должно быть:
Route::get('/', ['as'=>'admin.main'],function(){
// ^
});
В Laravel 5.4 я был не возможность определить маршрут с помощью регулярных выражений, как в:
Route::get('/account/(.*)', function() { return view('index'); });
Вместо этого мне пришлось использовать параметр и использовать регулярное выражение, чтобы убедиться, что он захватил все пути:
Route::get('/account/{path?}', function() {
return view('index');
})->with('path', '.*');