近年来,网站建设趋势:越来越多的静态网站而非动态网站,静态网站越来越受到一些大公司做小网站时的青睐。

关于静态网站和动态网站的 5 个事实:

  1. 动态网页由服务器在检索期间生成,例如使用像 WordPress(PHP / MySQL)这样的 CMS
  2. 静态网页仅包含 HTML / CSS / Javascript
  3. 静态站点生成器提前生成静态网站,提供布局和内容的分离
  4. 两种解决方案都有优点和缺点,并且必须在项目之间平衡使用
  5. 大型公司已经将静态站点生成器用于微型网站等中小型网站

什么是动态和静态

什么是动态网页?

动态网页是在服务器调用时动态生成内容的网页。大多数内容管理系统(CMS)都是这种情况。 最著名的例子:WordPress。每次打开页面都使用服务器端编程语言 PHP 从数据库中提取内容并将其组装到页面中。如果配置了缓存,则仅部分重新生成。

什么是静态网站?

静态网页由 HTML,CSS 和可选的 Javascript 组成。该页面不必由服务器端编程语言按需生成。

什么是静态网站生成器?

静态 Web 页面生成器在本地计算机或云中生成完整的静态 Web 页面。然后,这些可以存储在服务器或内容分发网络(CDN)中。

与内容管理系统类似,生成器提供了使用布局模板,分离内容和页面框架,在某些情况下甚至可以从外部 CMS 中提取内容。

静态网站的优缺点

优点

  1. 更安全,因为没有数据库和服务器
  2. 更快,因为不再需要执行服务器端代码,网站速度是搜索排名的一个重要因素
  3. 更好扩展
  4. 可以放入内容交付网络(CDN),提高全球可用性和页面加载速度
  5. 可以通过 Git 对整个网站进行版本控制和备份

缺点

  1. 更多适用于程序员或者其他技术人员
  2. 适合中小型网站(微型网站,博客,企业网站)
  3. 需要会使用 Git(GitHub,Gitlab)的工作流,推荐:史上最浅显易懂的Git教程!
  4. 需要额外的 JavaScript 才能实现站内搜索,价格更新等
  5. 没有 CMS,主要是以 Markdown 文件的形式创建内容
  6. 没有足够强大的 SEO 插件

正如上面说到那样,其中许多缺点是可以解决的,但与已知的 CMS (比如:WordPress)相比,需要做的工作要多得多。

静态网站生成器在我看来还处于起步阶段,但有潜力!

CMS 成为 Headless(Headless CMS),即它们仅提供内容创建界面,并且通过 API 提供内容。然后,静态网站生成器,Javascript 应用程序或移动应用程序可以访问此 API。

WordPress.com 最近将 PHP 的界面更改为 Node.js 并提供了这样的 API。 Contentful 等其他提供商已经将 Headless CMS 作为商业模式。不过这种趋势需要一段时间,才能成为主流。

强烈推荐的 3 个静态站点生成器

下面我给介绍 3 个我已经在使用的静态网站的生成器。它们只是现有解决方案的一小部分。可以在网站 StaticGen(在 GitHub Stars 之后排名)上找到全部的介绍。

1. Hugo

Hugo 静态网站生成器

Hugo 基于编程语言 Go,它以非常非常快的速度而着称。简单的说,Hugo 是迄今为止最快的静态站点生成器。当然,具有许多独立页面的网站利用静态站点生成器最为受益。

Hugo 目前的开发进度非常的好,并且开源以及下面提到的所有其他静态站点生成器,并提供开箱即用的各种功能。不太好的地方在于:在 Go 的模板语言中,不是每个人都能找到正确的方法,到目前为止,没有可能通过插件进行扩展。

虽然目前大多数开发人员都会在使用 Node.js,Python 或 Ruby 时很顺手,但基于 Go 的静态站点生成器 Hugo 却因其出色的速度而获得了足够高的分数。

你可能感兴趣:利用 Gitlab + Hugo + Netify 搭建一个自动部署的静态网站教程

适用于:具有大量单个页面和许多分类(类别,标签等)的网站,例如中型博客

2. Hexo

Hexo 静态网站框架

Hexo 是一个基于 Node.js 的快速、简洁且高效的博客框架。Hexo 使用 Markdown(也可以使用其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。

这使得 Hexo 成为更简单,更快速的解决方案之一,一旦安装在本地机器上,就可以轻松操作。这使得创建较小的网站,如微型网站时十分的方便。Sass,Less,Markdown,Pug 等会自动转换为 HTML,CSS 和 Javascript。它比 Grunt,Gulp 更容易。

Hexo 是一位叫 Tommy Chen 的台湾开发者在 2012 年开发的产品,由于语言的优势,所以 Hexo 在国内有非常多的用户,文档以及社区都非常的完善。有足够多的示例可以参考学习,这是我推荐 Hexo 的重要原因之一。

Hexo 自身的功能非常的简单,也就是说如果你需要做一些 站内SEO优化 的话,还需要寻找安装一些 Hexo 插件,或者自己开发相关的插件。

Hexo 适用于:微型网站,博客网站,小型产品网站

你可能会感兴趣:10个适合个人博客网站推广的高佣金联盟

3. Next.js

Next.js 介绍

Next.js 在 StaticGen 上总排名第一位,足以说明它有多好用了。配置简单,服务端渲染,代码分离,SEO Friendly,内置零配置 TypeScript 支持等等优点。

而且世界一流的大厂们也都在用它做大型的网站,在 Next.js 的 ShowCase 里面有腾讯、Uber、Hulu、Netlify、Nike 这些一流大厂。而且腾讯新闻就是利用 Next.js 开发的。

这些都足以说明 Next.js 有多么的优秀!

但是,它被我排在了 Hugo 和 Hexo 之后,是因为它是基于 React 框架开发的。也就是你需要一些 React 的代码基础才能利用它搭建一个静态网站。

如果你是一个开发者的话,那么我强烈建议你试试用 Next.js 来搭建静态网站!

适合:React 开发人员、可搭建中大型网站

总结

上面推荐的三个静态站点生成器分别是基于 Go、Node.js 还有 React 的,当然还有其他语言的静态网站生成器,可以去 StaticGen 上查看更多。

尽管 Php 在各大中小公司中都有广泛使用,但我认为它并不适合作为静态站点生成器。为什么?因为在 Php 中读取、操作和保存文件比在 Node.js 或 Go 中慢得多。

静态网站的优缺点都很突出,没有那种方案更好,只有哪种方案更适合。

总结一句话:为不同的工作需求选择合适的工具!

如果你对静态网站生成器有什么疑问、或其他想法,欢迎留言一起交流~