网站在自己电脑上跑得好好的,发给朋友却打不开?拆开主机名和端口,讲清本地、线上和部署三者到底是什么关系
你在 Vibe Coding 的时候,是不是经常看到这行神秘的地址:localhost:3000?
AI 帮你把网站做好了,你在自己电脑上打开这个地址,一切正常,跑得特别顺。然后你把这个链接复制下来发给朋友,却发现别人打不开,甚至你用自己的手机也打不开。
是网站出 bug 了吗?是网络有问题吗?都不是。
这一期就用最直白的方式讲明白:Vibe Coding 的时候这个 localhost:3000 到底是什么、怎么用,以及怎么把自己做的网站真正分享给别人去用。
首先我们把这个地址拆开看:localhost + 冒号 + 3000。冒号前面这部分叫主机名,冒号后面这串数字叫端口。
先说 localhost。它不是一个真实存在的网站,它的意思是:这台电脑自己。
localhost 指的就是你的电脑localhost 指的是他的电脑你把这串东西发给朋友,就像你跟朋友说「来我家吃饭」,然后具体我家住哪呢——写的是「我家」这两个字。
他找得到你家吗?找不到。
电脑也一样,它看到
localhost,回的就是自己家。
再说端口,就是冒号后面这串数字。
一台电脑上可以同时跑很多个服务,就像一栋楼里有很多个房间。端口号就是房间号,它决定你的这个请求到底交给这台电脑上的哪一个程序。
像 3000、5173、8080 这些数字,不是什么规定,只是工具的默认习惯——它们都是房间号。
这里顺带说一个你以后一定会遇到的情况:端口被占用。
比如你上一个项目还开着,3000 这间房已经挂上它的门牌了;这时候新项目也要用 3000——一套房同一时间只能接待一个项目,工具就会给它安排隔壁的 3001。
所以哪天你看到地址变成了 3001,不用慌,不是坏了,看一眼新数字就行。
你的项目「跑起来」,本质上是启动了一个程序。
这个程序在你家开了一个房间,挂上 3000 的门牌,然后坐在里面。
你在浏览器输入 localhost:3000,就是回到自己家、敲 3000 号房间的门。房间里的程序听到敲门,把网页递出来——这就是你看到的页面。
如果你把运行它的终端关了,就相当于把它给赶出去了,你再访问这个房间,就没有程序响应了。
它不依赖网络,只运行在你电脑本地的一个小房间里面,只有你自己能访问。
地址拆完了,接下来讲讲线上那个人人都能访问的网站,又是怎么回事。
其实本地访问和线上访问是一一对应的。你的项目代码基本不用改,只不过它不再跑在你家的电脑上,而是跑在一台 24 小时开着的电脑上——这台电脑有个专门的名字,叫服务器。
你的项目同样会在服务器上开一个端口等用户进来,只不过访客输入的是一个线上的公共地址,能够准确定位到你的服务器和这个项目正在运行的端口号。这个公共地址就叫域名,也就是你在浏览器里输入的那个地址。
| 本地 | 线上 | |
|---|---|---|
| 跑在哪台电脑上 | 你自己的电脑 | 24 小时开着的服务器 |
| 地址 | localhost:3000 | 域名 |
| 谁能访问 | 只有你自己 | 所有人 |
所以你看,本地和线上其实只是这个程序搬了个家,搬到服务器上,然后把
localhost换成了一个域名而已。
那怎么把自己电脑上的程序搬到服务器,让其他人能访问;自己电脑上改了东西,怎么让服务器那边也一起更新?这个动作,就叫部署。
这里不讲任何软件,只讲它的原理,其实特别简单:
部署说到底就是一个动作——把你本地这套项目文件原样搬到服务器上,让那边的程序换成最新版,重新开门接待。 你同步一次,线上就新一次。
那具体怎么搬呢?办法有两种:
| 方式 | 怎么做 | 每次改完 |
|---|---|---|
| 手动搬 | 自己购买服务器、自己申请域名,自己把文件传上服务器、自己启动程序 | 每改一次东西就要重新搬一遍 |
| 平台托管 | 不想花钱买服务器,就把项目交给托管平台,搬文件、启动程序、给你地址,它一条龙全做完 | 推送一下代码,它自动帮你重新同步 |
说白了,所谓的部署更新,就是让服务器上运行的代码和你本地的代码保持一致。
不管用哪种办法,部署的本质都是同一件事:让服务器上的版本和本地的版本保持一致。 听着很高端,其实也就这么回事。
到这里,什么是本地运行、什么是线上运行、什么是部署,你就全明白了。最后快速回顾一下:
| 概念 | 是什么 |
|---|---|
| localhost | 主机名,意思是「这台电脑自己」,发给别人没用 |
| 3000 | 端口,也就是房间号,决定请求交给哪个程序 |
| 端口被占用 | 一套房同时只接待一个项目,地址变成 3001 是正常的 |
| 项目跑起来 | 启动了一个程序,在本地开了个房间坐在里面等你敲门 |
| 服务器 | 一台 24 小时开着的电脑,代替你的电脑跑这个程序 |
| 域名 | 线上的公共地址,代替 localhost 让所有人都能找到 |
| 部署 | 把本地文件搬到服务器,让两边版本保持一致 |
本地运行只是程序在你家开了个房间;上线只是它搬了个家、换了个门牌。理解了这一点,
localhost:3000就再也不神秘了。