Laravel 5.3 - Vue 2 在页面重新加载时闪烁

Posted

技术标签:

【中文标题】Laravel 5.3 - Vue 2 在页面重新加载时闪烁【英文标题】:Laravel 5.3 - Vue 2 flickering on page reload 【发布时间】:2017-07-12 10:48:03 【问题描述】:

每次我重新加载我的页面时,它不会显示我的 Vue 内容,而是显示然后很快消失(闪烁)。

我的 app.js 文件:

require('./bootstrap');

var Vue = require('vue');

new Vue(
el: '#root',
data: 
   message: 'Hello world!'

);

我的看法:

<div id="root">
    <input type="text" v-model="message">
    <p>The value of the input is: @ message </p>
</div>

Vue 控制台错误:

[Vue 警告]:无法挂载组件:未定义模板或渲染函数。 (在根实例中找到)

这可能是什么问题?

【问题讨论】:

你的控制台有错误吗? 我现在加了! 【参考方案1】:

看起来您正在使用runtime-only 构建,因此您需要提供渲染功能或拉入standalone build。我猜你只是让所有东西都启动并运行,所以你需要决定如何设计你的应用程序。

如果您想使用blade 模板,那么您将需要standalone build,因此您只需为您的webpack config 添加一个别名即可将其拉入(参见:https://github.com/JeffreyWay/laravel-elixir-webpack-official):

resolve: 
  alias: 
    'vue$': 'vue/dist/vue.common.js'
  

或者如果您使用的是browserify,则需要将以下内容添加到package.json

"browser": 
  "vue": "vue/dist/vue.common"

Laravel 5.4 现在开箱即用(使用Laravel mix),但看起来您的5.3 版本没有。

如果您想使用 .vue 文件并构建和 SPA,那么您可以使用 runtime-only 构建并使用您的布局创建一个 App.vue 文件并安装它:

var Vue = require('vue');
var App  = require('./components/App.vue');

const app = new Vue(
  render: h => h(App)
).$mount('#app');

如果您想走这条路,可以查看此答案以获取更多信息:Updating elements outside of a component

【讨论】:

以上是关于Laravel 5.3 - Vue 2 在页面重新加载时闪烁的主要内容,如果未能解决你的问题,请参考以下文章

Vue 2 vue-router 2 laravel 5.3 问题

Vue 2 Laravel 5.3 vue-toastr

Vue 2 Laravel 5.3 Vue-router 2 设置 Vue-router 的正确方法

Laravel 5.3 vue 2组件不渲染

VueJS 2 vue-router 2 (laravel 5.3)

Vue 2 Laravel 5.3 Eloquent 无法从对象中检索数据