由于app.js,Laravel-Vue组件渲染两次

由于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头部的一个脚本标记造成的: 当我评

我有一个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头部的一个脚本标记造成的:

当我评论这句话时,一切都很好!因此,我的问题是: 为什么这个脚本标签在这里?为什么它让所有东西都运行两次?我真的需要它吗?如果没有它,我将来会遇到问题吗

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] :