近年来,网站建设趋势:越来越多的静态网站而非动态网站,静态网站越来越受到一些大公司做小网站时的青睐。
关于静态网站和动态网站的 5 个事实:
- 动态网页由服务器在检索期间生成,例如使用像 WordPress(PHP / MySQL)这样的 CMS
- 静态网页仅包含 HTML / CSS / Javascript
- 静态站点生成器提前生成静态网站,提供布局和内容的分离
- 两种解决方案都有优点和缺点,并且必须在项目之间平衡使用
- 大型公司已经将静态站点生成器用于微型网站等中小型网站
什么是动态和静态
什么是动态网页?
动态网页是在服务器调用时动态生成内容的网页。大多数内容管理系统(CMS)都是这种情况。 最著名的例子:WordPress。每次打开页面都使用服务器端编程语言 PHP 从数据库中提取内容并将其组装到页面中。如果配置了缓存,则仅部分重新生成。
什么是静态网站?
静态网页由 HTML,CSS 和可选的 Javascript 组成。该页面不必由服务器端编程语言按需生成。
什么是静态网站生成器?
静态 Web 页面生成器在本地计算机或云中生成完整的静态 Web 页面。然后,这些可以存储在服务器或内容分发网络(CDN)中。
与内容管理系统类似,生成器提供了使用布局模板,分离内容和页面框架,在某些情况下甚至可以从外部 CMS 中提取内容。
静态网站的优缺点
优点
- 更安全,因为没有数据库和服务器
- 更快,因为不再需要执行服务器端代码,网站速度是搜索排名的一个重要因素
- 更好扩展
- 可以放入内容交付网络(CDN),提高全球可用性和页面加载速度
- 可以通过 Git 对整个网站进行版本控制和备份
缺点
- 更多适用于程序员或者其他技术人员
- 适合中小型网站(微型网站,博客,企业网站)
- 需要会使用 Git(GitHub,Gitlab)的工作流,推荐:史上最浅显易懂的Git教程!
- 需要额外的 JavaScript 才能实现站内搜索,价格更新等
- 没有 CMS,主要是以 Markdown 文件的形式创建内容
- 没有足够强大的 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 基于编程语言 Go,它以非常非常快的速度而着称。简单的说,Hugo 是迄今为止最快的静态站点生成器。当然,具有许多独立页面的网站利用静态站点生成器最为受益。
Hugo 目前的开发进度非常的好,并且开源以及下面提到的所有其他静态站点生成器,并提供开箱即用的各种功能。不太好的地方在于:在 Go 的模板语言中,不是每个人都能找到正确的方法,到目前为止,没有可能通过插件进行扩展。
虽然目前大多数开发人员都会在使用 Node.js,Python 或 Ruby 时很顺手,但基于 Go 的静态站点生成器 Hugo 却因其出色的速度而获得了足够高的分数。
适用于:具有大量单个页面和许多分类(类别,标签等)的网站,例如中型博客
2. 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 在 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 中慢得多。
静态网站的优缺点都很突出,没有那种方案更好,只有哪种方案更适合。
总结一句话:为不同的工作需求选择合适的工具!
如果你对静态网站生成器有什么疑问、或其他想法,欢迎留言一起交流~