【问题标题】:Why vue acts differently with Laravel than standalone vue app?为什么 vue 在 Laravel 上的行为与独立的 vue 应用程序不同?
【发布时间】:2018-07-01 19:17:11
【问题描述】:

我不知道为什么 Vue 在 Laravel 上的行为与独立的 Vue 应用程序不同。也许我无法理解它需要正常工作的环境。这是发生了什么让我发布了这个问题。

当我安装独立的 Vue 应用程序时,假设当我使用 vue init webpack vueapp 将它安装在完全不同的目录中时,它可以正常工作。当我更新 .vue 文件中的任何内容时,它也会在浏览器中更新,这在我看来是预期的行为,或者可能是因为我在使用 npm run dev 的开发环境中执行它。

但是当我在 laravel 中使用 vue 时,我可以加载模块并且我可以在浏览器中看到加载的模块,但是当我更新某个组件时,它不会在浏览器中更新!它只是没有。每次更新组件文件中的标记时,我都必须重新加载页面。

另外,当我使用 Laravel 在 vue 应用程序中执行 npm run dev 时,它不会像在独立的 vue 应用程序中那样接管终端。很明显,我们不能在相同的开发环境中执行 vue 和 laravel,因为 vue 使用 nodejs 使用端口 8080 而 apache 使用端口 80。

我不知道我错过了什么,但从最近几天开始它就在吞噬我的脑袋。我浏览了互联网上几乎所有可用的教程和所有可用的 StackOverflow 问题,但仍然无法得到它!我认为这是正常行为,但我对 vue.js 的经验较少,因为我是 vue.js 的新手。

任何帮助将不胜感激!

【问题讨论】:

  • 使用npm run hot 进行热模块重载。 npm run watch 将检测文件更改,但某些系统无法正常工作,因此npm run watch --poll 会定期轮询文件更改。 Laravel 安装和使用 vue cli 创建的项目之间的最大区别在于 Laravel Mix。它抽象了很多 webpack 配置。
  • 不要使用浏览器同步。这只是重新加载页面。您正在寻找热模块更换,即npm run hot。您可能需要将任何包含的内部 JS 或 CSS 文件引用替换为文档中的 mix(...) 引用。

标签: javascript node.js laravel vue.js vuejs2


【解决方案1】:

你说的是真的,本来就是这样的。

但是您可以使用laravel 附带的库来完成此操作。首先。

.browserSync(); 添加到您的webpack.mix.js

使用npm run watch 代替npm run dev。这将帮助您不要刷新。

这就是您获得相同效果的方式。希望不会太多。

【讨论】:

  • 我可以用 laravel 执行npm run watch。到现在为止,它并没有像预期的那样更新东西。我现在正在尝试.browserSync();。希望它会按预期开始工作。
  • 代替 php artisan serve ,使用 php artisan serve --host php artisan serve --host=0
  • 我没有使用php artisan serve。我在/etc/hosts 中定义了主机,并创建了虚拟主机以将主机指向文档根目录。
  • browserSync 似乎无法使用 npm run watch。我发现browserSync 现在已从官方文档中删除,我们可以将其包含为mix('js/app.js'),我试了一下。还是不走运!哈哈。
  • 上周我用这个链接配置了我的andremadarang.com/livereload-and-browsersync-with-laravel
猜你喜欢
  • 2021-01-05
  • 1970-01-01
  • 2017-07-19
  • 1970-01-01
  • 1970-01-01
  • 2021-08-27
  • 2020-05-09
  • 2023-01-25
  • 1970-01-01
相关资源
最近更新 更多