如何实现浏览器自动刷新?
解决方案尝试
1)laravel-mix 增加设置:
mix.browserSync('hot-test.dev');
然而重新运行 npm run watch-poll 后,并没能生效。
2)配置 homestead.yaml 中的 port,将虚拟机 8080 端口转发到本机,然后项目中运行命令 npm run hot,同样没有生效。
疑问
大概研究了一下热加载的原理,似乎是开启一个监听服务器,然后应用了浏览器的某些特性,当项目代码发生变化时,监听服务器发送请求给浏览器让它进行刷新。
也许用上面的两种解决,虚拟机中如果开启浏览器,那么都能接收到刷新请求。但这个请求如何从虚拟机中传递出去给本机的浏览器呢?
麻烦各位给予指点,谢谢!
关于 LearnKu
如果有使用
react,angular这样的前端框架你就会明白。原理是使用websocket,加载页面的时候初始化客户端。而编辑器那一头就充当服务端,当发生变化时就通知客户端进行刷新。@Bevis 理解你说的意思,问题是在虚拟机里运行的 npm run hot,要如何设置才能使浏览器(客户端)和编辑器(服务端)进行通信呢?
我也是没有生效有没有路过朋友看一下,监控是在虚拟机上面,浏览器是在本地。
铛铛铛铛, 答案来了.
①, 虚拟机项目目录执行
npm run watch②, 在本地浏览器打开 192.168.10.10:3000 即可.
如果想直接打开 example-domain.test 需要映射 8000 端口到 3000, 这样反而不好了, 每次都需要
npm run watch才能运行项目.如果主机 cpu 占用高, 可在 package.json 的 watch-poll 参数里添加
--watch-poll=5000,如果使用 npm run watch 则在 watch 里添加
将
npm run watch在本机中运行就可以了,npm 只需要安装了 node 环境 不需要特定的 php 版本,mysql 服务器这些东西,不用一定要在 homestead 中运行。