由于app.js,Laravel-Vue组件渲染两次
我有一个Laravel 7项目,安装了bootstrap和ui vue auth包。我试图修改home(home.blade.php),它扩展了app.blade.php,但我发现app.blade.php中的由于app.js,Laravel-Vue组件渲染两次,laravel,vue.js,webpack,vuejs2,laravel-7,Laravel,Vue.js,Webpack,Vuejs2,Laravel 7,我有一个Laravel 7项目,安装了bootstrap和ui vue auth包。我试图修改home(home.blade.php),它扩展了app.blade.php,但我发现app.blade.php中的呈现了两次。我在app.blade.php的底部放置了一个带有console.log()的脚本标记,就在div标记关闭并输出两次之前。但是,当我将脚本标记放在这个div之外时,它的行为与应该的一样,并且只输出一次 我发现这是由于app.blade.php头部的一个脚本标记造成的: 当我评
呈现了两次。我在app.blade.php的底部放置了一个带有console.log()
的脚本标记,就在div标记关闭并输出两次之前。但是,当我将脚本标记放在这个div之外时,它的行为与应该的一样,并且只输出一次
我发现这是由于app.blade.php头部的一个脚本标记造成的:
当我评论这句话时,一切都很好!因此,我的问题是:
为什么这个脚本标签在这里?为什么它让所有东西都运行两次?我真的需要它吗?如果没有它,我将来会遇到问题吗
webpack.mix.js:
const mix = require('laravel-mix');
mix.js('resources/js/app.js', 'public/js')
.sass('resources/sass/app.scss', 'public/css');
参考资料/js/app.js:
require('./bootstrap');
window.Vue = require('vue');
Vue.component('example-component', require('./components/ExampleComponent.vue').default);
const app = new Vue({
el: '#app',
});
app.blade.php:
{{config('app.name','Laravel')}
console.log('app')
我发现这是因为在Vue组件之外有脚本标记。我删除了app.blade.php中的script标记,并将安装vue with laravel时附带的ExampleComponent放在mounted()方法中,它有一个console.log,并且只被调用一次
不过,我不知道为什么会发生这种情况。如果有人能揭露这件事,那就太棒了。也许我会发布另一个关于这个新见解的问题。我发现这是因为在Vue组件之外有脚本标记。我删除了app.blade.php中的script标记,并将安装vue with laravel时附带的ExampleComponent放在mounted()方法中,它有一个console.log,并且只被调用一次
不过,我不知道为什么会发生这种情况。如果有人能揭露这件事,那就太棒了。也许我会发布另一个具有这种新见解的问题。我遇到了同样的问题,在我的情况下,这是由于页面中指向
src url的一些iframe
s造成的。我意识到控制台中的消息被多次写入:
[控制台中的Vue devtools消息][1]
所以,我创建了一条新的特殊路线
Route::get('/frame',[PagesController::class,'frame'])->name('frame')代码>
返回一个空字符串,如
/**
* Used for iframes to override dowloadinf twice page content
*/
public function frame() {
return "";
}
它解决了我的问题。对于在“#”
.
[1] :我遇到了同样的问题,在我的情况下,这是由于页面中指向
src url的一些iframe
s造成的。我意识到控制台中的消息被多次写入:
[控制台中的Vue devtools消息][1]
所以,我创建了一条新的特殊路线
Route::get('/frame',[PagesController::class,'frame'])->name('frame')代码>
返回一个空字符串,如
/**
* Used for iframes to override dowloadinf twice page content
*/
public function frame() {
return "";
}
它解决了我的问题。对于在“#”
.
[1] :