金键盘
发布于 2025-03-09 / 13 阅读
0

通过browse-sync.js实现自动刷新vscode内嵌浏览器 php asp java python go等都支持

browse-sync.js非常强大,经过数百年的寻找,终于找到它来实现自动刷新了,支持VSCode内嵌服务器,也支持外部浏览器如Chrome、Edge、Firefox、Safari和手机浏览器Safari、Android浏览器等。

本文的最终实现目的,是VSCode左右分TAB,左边写代码,保存后右边自动刷新预览浏览器里面的内容。不是HTML编辑立即刷新无需保存就预览,是需要保存文件,出发文件修改事件。服务端技术不局限HTML,Express等,任意包括php、asp、python、java、go都可以

安装VSCode

vscode自带嵌入式浏览器,可以输入URL访问内容。CTRL+SHIFT+P后输入Simple Browser: Show可以打开VSCode嵌入式浏览器

访问官网,安装 Browser-sync

Browsersync - Time-saving synchronised browser testing

https://browsersync.io/

通过下列命令全局安装(你电脑上都有vscode了,那么 -> nodejs -> npm 也是有的,nodejs, npm是安装vscode的前提条件)

npm install -g browser-sync

准备你的内容,启动你自己的服务器,用nginx, apache, iis, java, go, python, express, expressjs等都可以,php -S参数也可以,npm express, anywhere, http-server都可以

例如我这里用的是php.exe -S 参数(注意php -S 是简易服务器,避免apache, nginx等的配置麻烦,但是性能不行,是单请求的,只能开发用)

进入php项目工程的根目录,有index.php的那个目录,然后输入

php -S 127.0.0.1:8080

使用browser-sync代理 127.0.0.1:8080

(任意服务器都可以,本例子是127.0.0.1:8080)

也进入php工作目录,输入

browser-sync start --proxy "127.0.0.1:8080" --files "**/*"

127.0.0.1:8080是本例子的服务器,--files "**/*" 参数是工程内的任何文件被修改都会自动刷新Browser里面的内容

browser-sync的输出,你的vscode的内嵌浏览器需访问http://localhost:3000,它的内容都是browser-sync访问php的127.0.0.1:8080得到的,这个时候browser-sync作为一个反向代理,它会侦测到html文件时就自动给html文档加入javascript脚本功能,该脚本周期性访问browser-sync后台的一些接口,判断自己(browser)是否需要刷新,browser-sync的--files -f参数可以发现文件被修改,这样就可以通知browser自己刷新(通过browser html页面加了料的browser sync 脚本)

特别注意,你的index.php必须具有完整的<html><head></head><body></body></html>,否则browser sync识别不出来,不会插入browser sync javascript功能

index.php的代码例子,注意它有完整的<html>结构,否则不会自动刷新(因为browser里面的html没有加入browser-sync客户端脚本)

<html>
    <head>
</head>
<body>
    <?php echo 'Hello 1 2'?>
</body>
</html>