php - 如何在 Laravel 项目中构建 Vue.js 实例?
问题描述
我有一个包含多个网页的应用程序。在每个网页上,我都希望能够将 Vue 实例绑定到页面上的某个元素,以提供更动态的用户交互。
在基础 Laravel 项目中,您应该将一个 Vue 实例绑定到我已经完成的 app.js 中的#app。但是,当您在任何不包含该元素的页面上时,如果包含更多实例,则会出现“找不到元素”错误。我想您不应该将所有实例都放在 app.js 中...
在每个页面上拥有不同的 Vue 实例的一般架构是什么?我是否为每个页面创建一个新的 js 文件并包含它?
对不起我的天真!
解决方案
您可以在生成的脚本部分上创建一个新的 Vue 实例,app.blade.php
因为每个视图都(主要)为每个需要避免 Vue 警告的页面扩展
例如,Laravel Vapor网站就是这样做的,在主页你可以找到这个代码
*他们使用 CDN 来包含库而不是从 webpack 编译的库
仅用于表单的 Vue 实例
<script>
var app = new Vue({
el: '#form',
data: {
email: '',
submitted: false,
submitting: false
},
methods: {
onSubmit: function () {
this.submitting = true;
fetch('/api/early-access', {
method: 'POST',
body: JSON.stringify({ email: this.email }),
headers: {
'Content-Type': 'application/json'
}
}).then(response => {
this.submitted = true;
this.submitting = false;
});
}
}
})
</script>
例如,在layouts/app.blade.php
正文的结束标记之前为脚本生成一个部分
<main class="py-4">
@yield('content')
</main>
</div>
@yield('scripts')
</body>
然后像这样在页面的 Blade 视图文件中实例化一个新的 Vue 实例
@extends('layouts.app')
@section('content')
<div class="container">
<div id="home-page"></div>
</div>
@endsection
@section('scripts')
<script>
new Vue({
el: '#home-page',
});
</script>
@stop
希望这可以帮助
推荐阅读
- python - 在 Python 中将 1-1000 的数字打印为单词
- android - 错误:找不到符号导入 dagger.hilt.android.components.ApplicationComponent;
- python - 如何使用正则表达式在熊猫数据框列中查找值
- php - RecursiveIterator 没有按预期工作
- javascript - return 语句在 console.log 中返回空数据
- r - 曼哈顿图未标记所有数据点
- sql - 为什么 Oracle 隐式添加 SYS_EXTRACT_UTC 到索引?
- kubernetes - 通过 http 访问 argo 工作流存档会导致权限被拒绝错误
- c# - WPF 数据网格和 ReactiveUI
- javascript - ReactJS 应该与 HTML 文件一起使用吗?