laravel 如何管理特定于视图的 javascript 代码
laravel How to manage view specific javascript code
大家好,这是我的第一个问题。
我在如何使用 laravel 组织我的 java 脚本时遇到了问题。
我有一些 public java-script 应该包含在每个页面中,还有一些页面或查看特定脚本。
我现在的方法是一个单独的包含文件,其中包含包含视图特定脚本的 {if} 语句,我将页面名称传递给视图以加载适当的脚本,它看起来像这样。
这是从 url:
获取页面名称的路由代码
Route::get('project/{section?}', 'ProjectController@index');
这是控制器
class ProjectController extends Controller
{
//
public function index($section = 'pitch')
{
$page = 'project';
if ($section == 'pitch') {
return view('pages.project.pitch', compact('page', 'section'));
} elseif ($section == 'business_details') {
return view('pages.project.businessDetails', compact('page', 'section'));
} elseif ($section == 'marketing_sales') {
return view('pages.project.marketingSales', compact('page', 'section'));
} elseif ($section == 'staff') {
return view('pages.project.staff', compact('page', 'section'));
} else {
return view('pages.project.pitch', compact('page', 'section'));
}
}
}
这是我包含的 scripts.blade.php
的示例{{不是完整代码!}}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
crossorigin="anonymous"></script>
@if(isset($page) && $page == 'explore')
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyATVGl-q2F19QoSxS-h1amZLEQ0hzTU3sQ"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
@elseif(isset($page) && $page == 'home')
@elseif(isset($page) && $page == 'project' && $section == 'pitch')
<script src="/js/pie-chart.js"></script>
@elseif(isset($page) && $page == 'project' && $section == 'business_details')
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyATVGl-q2F19QoSxS-h1amZLEQ0hzTU3sQ"></script>
@elseif(isset($page) && $page == 'project' && $section == 'marketing_sales')
<script src="/js/pie-chart.js"></script>
@elseif(isset($page) && $page == 'project' && $section == 'staff')
<script src="https://cdn.rawgit.com/nnattawat/flip/master/dist/jquery.flip.min.js"></script>
@endif
这种方法很累人,感觉还有更好的方法吗?
谢谢你提前的帮助
我建议在您的模板中只为 javascript 设置部分,然后在每个视图中将代码放置在该部分中。
https://laravel.com/docs/5.3/blade#template-inheritance
在您的脚本视图中:
@yield('js-import')
在你看来(例如探索)
@section('js-import')
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyATVGl-q2F19QoSxS-h1amZLEQ0hzTU3sQ"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
@endsection
大家好,这是我的第一个问题。 我在如何使用 laravel 组织我的 java 脚本时遇到了问题。 我有一些 public java-script 应该包含在每个页面中,还有一些页面或查看特定脚本。 我现在的方法是一个单独的包含文件,其中包含包含视图特定脚本的 {if} 语句,我将页面名称传递给视图以加载适当的脚本,它看起来像这样。
这是从 url:
获取页面名称的路由代码Route::get('project/{section?}', 'ProjectController@index');
这是控制器
class ProjectController extends Controller
{
//
public function index($section = 'pitch')
{
$page = 'project';
if ($section == 'pitch') {
return view('pages.project.pitch', compact('page', 'section'));
} elseif ($section == 'business_details') {
return view('pages.project.businessDetails', compact('page', 'section'));
} elseif ($section == 'marketing_sales') {
return view('pages.project.marketingSales', compact('page', 'section'));
} elseif ($section == 'staff') {
return view('pages.project.staff', compact('page', 'section'));
} else {
return view('pages.project.pitch', compact('page', 'section'));
}
}
}
这是我包含的 scripts.blade.php
的示例{{不是完整代码!}}<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
crossorigin="anonymous"></script>
@if(isset($page) && $page == 'explore')
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyATVGl-q2F19QoSxS-h1amZLEQ0hzTU3sQ"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
@elseif(isset($page) && $page == 'home')
@elseif(isset($page) && $page == 'project' && $section == 'pitch')
<script src="/js/pie-chart.js"></script>
@elseif(isset($page) && $page == 'project' && $section == 'business_details')
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyATVGl-q2F19QoSxS-h1amZLEQ0hzTU3sQ"></script>
@elseif(isset($page) && $page == 'project' && $section == 'marketing_sales')
<script src="/js/pie-chart.js"></script>
@elseif(isset($page) && $page == 'project' && $section == 'staff')
<script src="https://cdn.rawgit.com/nnattawat/flip/master/dist/jquery.flip.min.js"></script>
@endif
这种方法很累人,感觉还有更好的方法吗? 谢谢你提前的帮助
我建议在您的模板中只为 javascript 设置部分,然后在每个视图中将代码放置在该部分中。 https://laravel.com/docs/5.3/blade#template-inheritance
在您的脚本视图中:
@yield('js-import')
在你看来(例如探索)
@section('js-import')
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyATVGl-q2F19QoSxS-h1amZLEQ0hzTU3sQ"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
@endsection