为什么我使用 Surge 而不是 GitHub Pages

2025-06-04

为什么我使用 Surge 而不是 GitHub Pages

更新:
这里先声明一下,Surge 的仓库最近更新不多,请注意。目前使用起来肯定安全(目前没有发现任何漏洞警告),但未来还是值得关注的。如果这个项目最终走向衰落,NetlifyZeit Now也是不错的选择,它们能提供与 GitHub Pages 类似的优势👍

嗯,那么“激增”到底是什么?🤔

GitHub Pages 目前功能如此丰富,可能无需赘述。而Surge则是一个低调得多的项目。它实现了与 GitHub Pages 相同的目标,允许用户将静态网站发布到可访问的 URL 上,URL 名称随意,并带有“https”。Surge 的不同之处在于网站如何发布到万维网上。

Surge 让您无需任何额外设置,即可在命令行中从零开始发布。安装软件包后,您可以在项目目录中使用其 CLI 创建一个帐户……

👉 surge

    Welcome to surge!
    Please login or create an account by entering email and password:

    email: jamesKPolk@napoleonofthestump.gov
    password: 
Enter fullscreen mode Exit fullscreen mode

输入要部署到的域名...

    domain: forgottenpresidents.club
Enter fullscreen mode Exit fullscreen mode

轰隆隆💥!您已启动并运行。注意,我在这里也使用了自定义 URL 扩展名。如果您拥有该域名的权限,当然可以指定它,但您可以省略扩展名以使用完全免费的surge.sh

看起来很简单,但是我的 git hooks 在哪里?

GitHub Pages 的妙处在于,它会简单地跟踪你的 master 分支,并在每次更新时重建/发布你的网站。值得庆幸的是,surge 提供了钩住推送和提交的选项,只需在你的package.json.gitignore 文件中添加一点代码即可。下面的代码片段可以实现推送时重新部署的功能:

"devDependencies": { "surge": "latest", "git-scripts": "0.2.1" },
    "git": { 
        "scripts": { "pre-push": "surge --project ./ 
        --domain forgottenpresidents.surge.sh" }
       }
Enter fullscreen mode Exit fullscreen mode

太棒了。但具体有什么好处呢?

Surge 提供了一些 GitHub Pages 无法提供的便利。首先,你显然不需要使用 GitHub 来管理你的版本控制,因此你可以使用任何你想要的自定义解决方案,并且仍然使用相同的surge命令进行部署。

另一个优点是Zeit Now也未能解决:客户端路由回退。

扩展我们的James K. Polk示例,假设我们部署了一个包含几个html文件的简单项目文件夹:

    ./build
      - index.html
      - what_i_stand_for.html
      - donate_now.html
      - 200.html
Enter fullscreen mode Exit fullscreen mode

注意200.html底部添加的 。这充当了备用方案,当给定的路由无效时,它会立即提供服务。假设这些是html我们构建中的所有文件,我们知道有人访问,比如说,forgottenpresidents.club/sendfanmail,会得到一个404,因为该文件不存在。但是,由于我们有一个200.html,Surge 知道只提供这个页面,因为它是一个备用方案。这比传统的404.html错误捕获方法更灵活,因为我们有时不希望某些路径导致404,例如 URL 中的动态用户名,它会在 JavaScript 中处理,但应该始终路由到同一个基页。无论您是使用像 React router 这样的库,还是只是自己利用浏览器的历史记录 API,这都会使路由更加简洁,因为我们不再需要处理重定向了 🎉

最后一个主要优势是 Zeit Now 分享的:只需几秒钟即可随时部署。无需弄脏提交历史记录,您可以立即部署更改并查看其效果。最近,当我测试正在开发的网站的移动布局时,这一点非常有用,因为移动版 Safari 浏览器比 Chrome 浏览器更复杂一些。我可以将更改部署到我选择的任意 URL,并在刷新页面后立即看到我的编辑!

好的,我开始明白了。有什么限制吗?

所以,Surge 的设计初衷是专门处理一些非常具体的任务。如果你拥有的不仅仅是静态站点或客户端应用程序,那么很遗憾,这款工具能做的事情并不多。任何复杂的后端都需要单独部署,或者你可以使用前面提到的 Zeit Now 将所有内容集中部署到一处。Now 是一款更加灵活的工具,并且正在迅速获得关注,但我依然忠于 Surge,因为它的路由机制非常精细,而且不需要任何必要的config文件。

当然,你应该使用最适合你工作流程的工具。不过下次你构建作品集网站 v175 版本时,不妨试试 Surge 😊

学到一点东西吗?

太棒了!万一你错过了,我特意开通了“网络魔法”简报,来探索更多类似的知识!

这东西探讨的是Web 开发的“首要原则”。换句话说,究竟是哪些糟糕的浏览器 API、扭曲的 CSS 规则以及半无障碍的 HTML 支撑着我们所有的 Web 项目?如果你想要超越框架,那么亲爱的 Web 魔法师,这东西就是为你准备的🔮

赶紧在这里订阅吧!我保证永远教书,绝不会发垃圾信息❤️

文章来源:https://dev.to/bholmesdev/why-im-using-surge-and-not-github-pages-4lf5
PREV
提高开发人员效率的 10 个技巧
NEXT
了解单页应用程序和客户端路由