Summary for developers
The Internet is a wire
两台计算机之间必须通过有线(网线)或无线方式(WiFi 或蓝牙)「连接」起来,才能相互通信。互联网就是把计算机互相连接起来的一个大型的网络,所以互联网的本质就是一根「线」(五分钟告诉你互联网是如何工作的@Aaron Titus),在理解互联网的工作原理时,无线连接和有线连接概念类似。
路由器
通常一个网络不仅限于两台计算机。假设有 10 台计算机,每台计算机由 9 个插头,将任何两台计算机两两连接需要45根线。为了减少线的数目,网络上的每台电脑需要链接到一个叫做路由器(router)的专用计算机。路由器的工作是,确保从一台电脑上发出的一条信息可以到达正确的电脑。为了把信息发送给电脑B,电脑A必须把信息发送给路由器,路由器将收到的信息转发给电脑B,并且确保信息不会发送给电脑C。
把路由器加入到这个系统后,网络中只要10条网线(每台电脑一个插口,路由器上十个插口),就可以实现网络中的这 10 台计算机的相互通信。
网络中的网
但是,要连接成千上万,数以亿计的计算机呢?路由器本身也是一台计算机,因此,可以把两个路由器彼此连接。把计算机连接在路由器上,然后路由器连接路由器,网络规模就会变得很大。
我们可以通过已有的电话基础设施相互连接。为了利用使用电线连接的「电话网络」来传递网络信息,我们需要一个可以将网络信息和电话基础设施可以处理的信息相互转换的基础设备——调制解调器(modem)。
接下来,为了把信息从自己的网络发送到目的地,我们需要把自己的网络连接到互联网服务提供商(ISP)。ISP是一家可以管理一些特殊的路由器的公司,这些路由器连接其他ISP的路由器. 你的网络消息可以被ISP捕获并发送到相应的网络。互联网就是由这些所有的网络设施所组成。
通过 IP 地址和域名寻找电脑
任何连接在网络中的计算机都必须有一个唯一的地址,来标记它是哪台计算机。这个地址叫做 IP 地址,IPv4 版本的地址形如192.168.3.11
,长 32 位。IP协议的最新版本是 IPv6,长 48 位,能够标识更多的计算机。
我们通过浏览器上网时,通常使用域名(Domain Name)去访问一个网站。这是为了方便人类的使用,把 IP 地址映射成容易识读记忆的域名,并通过 DNS 协议完成两者的转换。
比如,我们在命令行使用 ping
命令,获取域名为www.apple.com(苹果公司官网)对应的 IP 地址,可以得到一个 IP 地址182.247.227.19
。
ping www.apple.com
PING e6858.e19.s.tl88.net (182.247.227.19): 56 data bytes
互联网和网络不一样
互联网(Internet)是基础设施,而网络(Web)和邮箱及 IRC 等等,都是建立在这种基础设施上的服务。
重要概念 | 解释 | |
---|---|---|
网页 | ||
网站 | ||
URL | ||
域名 | ||
网络服务器 | ||
搜索引擎 | ||
超链接 | ||
ISP |
软件工具 | 作用 | 备注 |
---|---|---|
文本编辑器 | 编写代码,纯文本或混合编辑器均可 | Visual Studio Code |
图像编辑器 | 编辑网页中的图形图像 | GIMP(免费) |
媒体编辑器 | 向网站中添加音频或视频 | 音频 Audacity、Wavorsaur,视频 PiTiVi等 |
浏览器 | 测试代码 | Chrome,Firefox,Safari ,Brave,Microsoft Edge,Lynx |
版本控制 | 管理服务器上的文件,共享代码,团队合作,避免编辑冲突 | Git(主流) |
代码托管 | 基于 Git 的代码托管服务 | GitHub、GitLab |
发布工具 | 将本地硬盘上的文件上传到远程 Web 服务器 | FTP 客户端、rsync或Git |
自动化构建 | 自动完成压缩代码和运行测试等重复性任务 | Grunt、Gulp |
模板 | 提高效率 | |
库 | 提高效率 | |
框架 | 提高效率 |
注:初学 Web 开发掌握一款文本编辑器和几款现代主流浏览器即可。
文件 | 地址 | 备注 |
---|---|---|
本地文件 | file://本地文件路径 |
测试文件具有异步请求、服务端代码会导致问题 |
远程文件 | http:// 或https:// 开头, |
通过 HTTP 协议传输 |
服务器端语言(本地运行) | 网络框架 |
---|---|
Python 服务器端代码 | Diango Web Framework(Python)、Flask |
Node.js(JavaScript)服务器端代码 | Express 或直接使用 Node |
PHP服务器端代码 | MAMP、AMPPS、LAMP |
运行一个简单的本地 HTTP 服务器:使用 Python 的 SimpleHTTPServer
模块解决异步请求的问题。
安装 Python(Linux 或 macOS 系统默认已经安装)。
打开终端进入示例目录,并启动服务器。默认在本地 Web 服务器的 8000 端口上运行目录的内容,你也可以在命令中指定端口(如 7800),通过在浏览器地址栏输入localhost:7800
可以访问这个服务器。
cd 示例目录
# Python 3.x使用以下命令启动服务器
$ python -m http.server 7800
# Python 2.x使用以下命令启动服务器
$ python -m SimpleHTTPServer 7800
Serving HTTP on 0.0.0.0 port 7800 ...
127.0.0.1 - - [20/Feb/2021 14:09:19] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [20/Feb/2021 14:09:19] code 404, message File not found
127.0.0.1 - - [20/Feb/2021 14:09:19] "GET /favicon.ico HTTP/1.1" 404 -
测试结果:
文本、代码、样式表、媒体内容等多种文件共同组成了网站。构建站点时,要确保文件夹结构组织合理,文件之间交互通常,没有明显错误,然后再上传至服务器。
将网站保存在单独的文件夹
本地网站应将所有相关文件在一个单独的文件夹中,可以映射出服务器端站点文件结构。
使用小写命名和连字符分隔单词
Web服务器对大小写敏感,另外浏览器、Web 服务器和编程语言处理空格的方式不一致。因此,所有的文件夹名和文件都应该使用小写字母,且没有空格。文件名中应使用连字符-
。谷歌搜索引擎把连字符当做单词分隔符。
网站基本结构
结构 | 描述 |
---|---|
index.html |
主页内容(用户访问站点时首先看到的文本和图像) |
images 文件夹 |
站点中的所有图像 |
styles 文件夹 |
站点所需样式表(颜色,字体等) |
scripts 文件夹 |
提供站点交互功能的 JavaScript 代码 |
文件路径的通用规则
根据引用的目标文件与 HTML 文件的层级关系,分别适用以下规则(可组合):
层级关系 | 规则 |
---|---|
同级 | 直接使用文件名,如my-image.jpg 。 |
子文件夹 | 在路径前写上目录名并加一个斜杠,在写文件名,如subdirectory/my-image.jpg 。 |
上级 | 加上两个点,如../my-image.jpg 。 |
重要的 HTML 元素:
网络无国界(本地化)
国际字符集
国际日期:国际标准化(ISO)为日期定义的国际标准格式是“yyyy-mm-dd”,yyyy是年,mm是月,dd 是日。
参考资料: