Miron Chen
教程

用 Next.js 制作作品集网站 | 入门

Cover Image for 用 Next.js 制作作品集网站 | 入门

1. 从零开始做好准备

如果你找到了这篇文章,很可能正在考虑搭建自己的网站,却还不知道该从哪里开始。

也许你没有任何编程经验,也许你一直觉得制作一个作品集网站太复杂了。

好消息是,即使你不是程序员,也可以让自己的网站运行起来。

在这个系列教程中,我们会从 Web 技术的基础知识开始,一步步带你构建并发布自己的作品集网站。我们会假设你对 Web 开发几乎一无所知,因此你不需要具备任何编程经验或计算机科学知识。

我们会使用现成的模板和一键部署工具,让你把精力放在打造属于自己的网站上,而不必担心复杂的技术配置。

关于使用 AI 的一点建议

到了 2026 年,搭建网站已经变得更加容易。本教程中的许多任务,现在只需要向 AI 工具描述你的需求就能完成。

不过,你应该始终记住,AI 生成的代码并不总是可靠或安全的。如果不了解 AI 在做什么,你可能会给网站引入错误、安全漏洞或意料之外的行为。因此,我们也准备了额外的指南,帮助你了解如何自定义、维护和保护自己的网站,而不必完全依赖 AI。

虽然你可以用 AI 编程工具完成这个系列中几乎所有的任务,但我们还是鼓励你先自己动手尝试,再让 AI 帮你解释陌生的概念、检查修改或排查问题。

毕竟,本教程的目标不仅是帮助你发布一个作品集网站,也希望你能理解它是如何工作的。

当然,如果你时间有限,只想尽快拥有一个好看的作品集网站,也可以选择最适合自己的 AI 工具。我们还准备了 AGENTS.md,希望能帮到你和你的编程智能体。

2. 什么是网站?

我们准备搭建一个网站,但网站到底是什么呢?

你可能每天都会访问许多网站:在 Google 上搜索信息,在 YouTube 上观看视频,或者阅读一篇在线文章。但你有没有想过,这些网站究竟是由什么组成的?

网站与网页

首先,我们来区分两个经常被混用的词:网站(website)和网页(webpage)。

网页是你在浏览器中看到的一个页面,例如作品集的首页,或介绍某个项目的页面。

网站则是相关网页和资源的集合,通常可以通过同一个域名访问。

你可以把网站想象成一本书,而网页就是书中的一页页内容。

例如,你的作品集网站可能包括:

  • 首页 — 简单介绍你自己。
  • 项目 — 展示你的作品。
  • 关于我 — 介绍你的背景、技能和经历。
  • 联系我 — 提供与你取得联系的方式。

当然,并不是每个网站都需要多个页面。有些作品集网站会把所有内容放在一个可以滚动浏览的页面上。

网页由什么组成?

大多数现代网页都建立在三项基础 Web 技术之上:HTML、CSS 和 JavaScript。

**HTML(HyperText Markup Language,超文本标记语言)**定义网页的结构和内容。它告诉浏览器有哪些元素,例如标题、段落、图片和链接。

**CSS(Cascading Style Sheets,层叠样式表)**控制这些元素的外观,包括颜色、字体、间距和布局。

JavaScript让网页具有交互能力。例如,打开导航菜单、筛选项目,或在用户点击按钮时更新内容。

你可以把它们想象成建造一栋房子:

  • HTML是房子的结构和房间。
  • CSS是装修和室内设计。
  • JavaScript是灯光、自动门等功能。
JavaScript 与 TypeScript:有什么区别?

如果你有一些编程经验,可能听说过 TypeScript,并想知道它与 JavaScript 有什么区别。

JavaScript 是一种动态类型编程语言。这意味着一个变量可以存放不同类型的值,例如数字或文本,而不需要你提前声明它的类型。

这让 JavaScript 灵活且容易上手,但也可能让某些编程错误更难被发现,尤其是在项目规模变大之后。

为了应对这些问题,微软在 2012 年推出了 TypeScript。

TypeScript 在 JavaScript 的基础上增加了静态类型检查,帮助开发者在运行代码之前发现许多常见错误。

例如,在 JavaScript 中,你可以这样写:

let age = 20;
age = "twenty"; // 合法的 JavaScript

之后,如果你尝试对 age 进行数学运算,就可能遇到困惑,因为它现在是字符串,而不是数字。

在 TypeScript 中,你可以指定预期的类型:

let age: number = 20;
age = "twenty"; // 类型错误:不能将 string 赋值给 number

当你尝试把字符串赋给 age 时,TypeScript 就会报错,帮助你提前发现问题。

需要注意的是 TypeScript 并不是用来取代 JavaScript 的。TypeScript 代码通常会先转换为 JavaScript,再在浏览器中执行。

Next.js 等现代 Web 框架鼓励使用 TypeScript,而不是纯 JavaScript,因为它可以帮助我们提前发现错误、提高代码质量。

等开始处理作品集的源代码时,我们会进一步了解 TypeScript。(我们的模板就是用 TypeScript 编写的!)

这些技术相互配合,构成了你每天浏览和使用的网页。

现在不用急着学习如何编写 HTML、CSS 或 JavaScript。我们的作品集模板已经包含了入门所需的内容,后续章节在自定义网站时,我们会逐步了解这些技术。

目前,你只需要记住:网站不是一张图片或一份文档,而是内容、资源和代码的集合,浏览器通过它们来显示网页。

3. Web 是如何工作的?

现在我们知道网站由什么组成了,接下来看看它是如何运行的。

假设你想访问某个人的作品集网站。你打开浏览器,在地址栏中输入 https://mironchen.me,然后按下回车。

片刻之后,网站就出现在屏幕上。

看起来很简单,但浏览器怎么知道去哪里寻找这个网站?网站的内容又是怎么传到你的电脑上的呢?

浏览器

浏览器是用来访问网站的应用程序,例如 Google Chrome、Safari 或 Firefox。它会请求网站资源,并将内容显示在屏幕上。

事实上,浏览器本身可能复杂到堪比一整个操作系统。

服务器是通过网络向其他设备提供资源或服务的计算机或软件系统。Web 服务器会响应请求,并返回网站内容,包括 HTML、CSS、JavaScript 和媒体资源。

你可以把这个过程想象成在餐厅点餐:

  • 你(浏览器) 从菜单上点餐。
  • 厨房(服务器) 准备并提供你点的食物。
  • 食物(响应) 被送到你面前。

这就是客户端–服务器模型(Client–Server Model)。浏览器充当客户端,向服务器发送请求;服务器处理请求,再返回响应。

IP 地址与域名 (Domain)

那么,浏览器怎么知道该联系哪台服务器呢?

在互联网上通信的设备使用 IP 地址(Internet Protocol address,互联网协议地址)来标识网络接口,并将数据传送到正确的目的地。

例如,一个 IPv4 地址可能长这样:203.0.113.10。

不过,对普通用户来说,为每个网站记住一长串数字并不方便。

因此,我们会使用域名,例如这个博客的域名 mironchen.me。

域名是一种方便人类阅读和记忆的名称,可以用来访问网站或其他互联网服务。你只需要在浏览器中输入域名,浏览器就会查找相应的服务器,为你获取内容。

DNS:互联网的地址簿

当你输入 mironchen.me 时,浏览器需要知道应该连接到哪里。

这时就需要 DNS(Domain Name System)了。

DNS 就像互联网的地址簿,帮助我们把域名转换成计算机可以用来建立连接的 IP 地址。

比如:

mironchen.me -> DNS -> 76.76.21.21

在这个例子中,mironchen.me 所对应的是 76.76.21.21 这 一台 服务器。在实际情况中,DNS 可能涉及多台服务器、缓存结果以及不同类型的记录。不过,目前你只需要记住一点:

DNS 帮助浏览器找到与域名对应的网络地址。

我们会在后续介绍如何为网站设置自定义域名时进一步了解 DNS。

HTTP 与 HTTPS:它们如何通信?

找到服务器只是其中一步。浏览器还需要请求网页,而服务器也需要知道应该返回什么。

这就是 HTTP(Hypertext Transfer Protocol,超文本传输协议)的作用。

HTTP 定义了浏览器与 Web 服务器如何交换请求和响应。

例如:

  1. 浏览器发送请求,获取某个网页。
  2. 服务器处理请求,并返回响应。
  3. 浏览器接收所需的资源,将网页渲染到屏幕上。

你可能也注意到,大多数网站地址以 https:// 开头,而不是 http://。

多出来的 S 代表 Secure(安全)。

安全?

可以说是,也可以说不是。

如果你在咖啡馆连接公共 Wi-Fi,HTTPS 有助于防止同一网络上的其他人截获并读取你的通信内容。在这种情况下,我们可以说你的连接受到保护。

但连接安全,并不意味着整个过程的其他部分都安全。

有几件事需要知道:

  • 钓鱼网站也可以使用 HTTPS。带有锁形图标或安全连接提示的网站,仍然可能是为了窃取你的个人信息而设计的。

  • 网站仍然可以看到你发送给它的数据。HTTPS 保护的是传输过程中的信息,但接收信息的网站通常仍然可以读取你提交的内容,包括登录凭据和表单数据。

  • HTTPS 无法防止所有安全漏洞。网站仍然可能包含恶意代码、不安全的依赖,或缺乏充分保护的数据库。

那么,HTTPS 到底能告诉我们什么?

假设浏览器成功验证了连接,它只能告诉我们:你与网站之间的连接经过加密,而且服务器提供了对你所访问域名有效的证书。

HTTPS 使用加密来保护浏览器与网站之间的通信。

不过,HTTPS 并不保证网站本身值得信任,也不保证它没有安全漏洞。

后续我们介绍如何为网站申请加密证书时会进一步了解 HTTPS。

把这些知识串起来

到这里,我们已经了解了网站由什么组成,以及它在背后是如何工作的。

我们知道了 HTML、CSS 和 JavaScript 是大多数网站的基础,也知道浏览器会与 Web 服务器通信,获取并显示网页。我们还了解了域名、DNS 和 HTTPS 如何帮助我们通过熟悉的地址访问网站,并保护通信安全。

你不需要记住这里介绍的每个细节。随着我们继续搭建和自定义作品集网站,我们会再次遇到这些概念,并在实践中了解它们的作用。

不过,还有一件事我们没有做:把自己的网站放到互联网上。

让网站在自己的电脑上运行是一回事,让任何人都能随时随地访问它,则是另一回事。

通常,这需要设置托管环境、做好网站部署的准备,并配置访问方式。幸运的是,现代托管平台可以替我们完成其中的大部分工作。

在下一部分,我们会使用 Vercel 和一键部署模板,让你的作品集上线,而不必自己配置服务器。

让我们把你的网站发布到网上吧!

检查一下:Web 基础 Quiz

共 8 道单选题。选择答案后将自动进入下一题,完成后你可以查看分数和解析。

第 1 / 8 题

1. 关于网站和网页,哪一项是正确的?

评论

想法、疑问,或不同的视角,都欢迎在这里分享。

正在加载评论…