[译] 正在消失的小型网站

网站正在日益增大,JavaScript 也在飞速发展、升级,为了能跟上时代,你须要将你的代码从最新的版本转译成浏览器兼容的模式(尽管这很是复杂,但相信 babel 能搞定)。此外,你也可使用其余语言编写网页,好比 typescript。而在 typescript 以前,已经有过不少相关尝试(123 等等),但一个重要的事实是,typescript 被建议要普遍应用于专门处理大型应用的场景。html

单页面应用(SPA)之路

在历史上,小型页面是由静态 HTML 和一些零散的 JavaScript 组成的。我敢打赌如今不少传统的服务端渲染应用(好比 Django 或者 Ruby on Rails)仍是这样作的,可是这样的方式一点也不酷了,因此就算还有人使用它们,可能也仅仅是 API。这些页面(不论是静态页面或者服务端渲染页面)都有不少特设脚本,它们看上去都一团糟。维护和测试就更像是噩梦,这些代码要么就是很是长,要么就是以某种奇怪的方式链接起来。前端

而当这样的脚本转变成了单页应用,这绝对是一件好事 —— 如今,至少咱们的应用是部分可维护的了,使用了合适的模块引入,以及许多容许开发者处理复杂接口,路由,多屏数据共享,跨应用甚至整个网站(例如开源组件)的 UI 元素复用的闪亮框架。可是,本篇文章并非关于它们的 —— 我已经吐槽过如今人们已经将 SPA 做为全部项目的默认选项;这篇文章是关于小型网站的。vue

jQuery 的兴衰

在这以前,jQuery仍是主宰,它有庞大的插件生态圈,提供滑动窗口,图片展现以及丰富的动态效果等等。同时,它的集成简单,一般只是用某些参数(甚至是默认值就能够)初始化一些插件,并提供元素 id。其余内容一般都在标记中指定(或须要特定的标记规则),HTML 做为一种声明式语言,彻底能够辨认出指定的内容。事实上,jQuery 使用范围如此之广,不少人们都很奇怪为何不把 jQuery 默认的加载到浏览器中。jQuery 也有不少很方便的功能(甚至能够称为 DOM 缺失的标准库),它让已经简单的交互变得极其简单。react

事实上,我相信 jQuery 依旧在被普遍的使用着(我没有任何数据,只是我本身的直觉),可是有了很重要的改变。现在,jQuery 已经不那么让人满意,你也不会发现有不少教程,教你如何不用很了解 JavaScript 就快速写出一个页面小脚本。同时,大约五年前,库的标准就是:jquery

  • 在一些 CDN 上存储最小化后的代码
  • 把它提供的功能绑定在全局变量上(好比 window.Backbone)

如今一些库依旧会打包构建全局模块定义(UMD),它其实就是一个加载库的全局变量版,可是不少库已经不这样作了。如今,出现了更多的新的框架,这些小插件都是专门服务于框架的了,而你不只仅是须要它们(若是你须要 jQuery 插件,那么你也须要 jQuery 这个库),而是须要用这个框架来完成你全部的页面!android

现代解决方案

固然,这个问题已经解决,解决方法就是在已有基础上提供启动方式或者特定框架,而后你就可使用这些小插件并编译为一个静态网站。此外,它们会在后台使用上述工具加载模块或者编译代码,因此你可使用 JavaScript 的最新版本,并将逻辑拆分为最佳可复用的单元。这种方式的一个很好的例子就是 GatsbyJSNuxt.js。启动方式一般是命令行,例如 create-react-app,它将繁琐的步骤都隐藏了起来,而且仅仅须要给应用一个指令 —— “只管运行”,而后你就能够开始编写组件了。webpack

尽管如此,这种变化带来了哪些问题呢?代码的维护性更高了(这都多亏了模块),你可使用最新版的 JavaScript,还能保证全部不支持的功能都有能够替代的补丁,这在以前是很容易出现问题的地方。可是其实,问题有不少,在我看来:ios

  • 如今你必须很是了解 JavaScript(须要比以前更深的理解)
  • 不只是 JavaScript,你可能还须要知道 webpack(为了处理静态资源加载 —— 想象一下你突然发现代码中在引用图像)
  • 如今,你的工做包括了使用大约 200MB 的文件构建应用(而不是编写文档)。
  • 让你的小应用膨胀起来是像滑下坡那么容易的事情。

我认为最后一部分是最值得关注的。不少教程都会建议你添加一些高级数据管理库,用某些特定的,“更声明式”的方法重构你的代码(想一想那些人常常试图说服你重构 HTML 结构),而后不少人就会按照教程建议的作了!这些建议是好的,可是可能只适用于大型网站,而不是那种小型的,用 5 个 .html 文件就能完成的。是的,你不能复用这个菜单,可是你能够直接复制它们(同时 CSS 类让它在某种形式上能复用了)。git

总结

也许我是错的,也许并无那么糟糕。可是使用互联网、阅读博客、查看网页时,我以为这些曾经每一个人只要有 HTML 的只是和极少的 JS 技术就能完成的小型网站,正在慢慢消失,如今更多的网站被替换为更加“可扩展”的应用了。github

若是发现译文存在错误或其余须要改进的地方,欢迎到 掘金翻译计划 对译文进行修改并 PR,也可得到相应奖励积分。文章开头的 本文永久连接 即为本文在 GitHub 上的 MarkDown 连接。


掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 AndroidiOS前端后端区块链产品设计人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划官方微博知乎专栏

相关文章
相关标签/搜索