网络正在大规模增长,JavaScript是正在迅速发展和提高,跟上,你需要transpile从最新版本的代码,任何(原因很复杂,只是相信我们)。此外,您可以完全使用其他语言。但是这笔交易是什么?有很多的尝试(的1,2,3,等等),但什么重要的是要注意的是,他们试图明确解决大应用,而现在它常建议在任何地方使用它的事实。
SPA之路
历史上,小页面是由静态HTML构成的,其中包含一些JavaScript。我敢打赌它仍然是传统服务器端应用程序(如Django或Ruby on Rails)的方式,但它不再酷,所以即使人们仍然使用它们,通常它只是一个API。这些页面(无论是静态还是服务器端渲染)都有很多特殊的脚本,看起来像疯狂的混乱。这是一个维持和测试的噩梦,它们要么很长,要么以某种奇怪的方式连接起来。
对于这种类型的脚本移动到单页面应用程序绝对是一件好事 - 现在我们得到至少部分可维护的应用程序,正确的模块导入,以及新的闪亮 框架,允许处理复杂的交互,路由,跨屏幕的共享数据,重用跨应用程序(!)或甚至整个Web(作为开源组件)的UI元素。然而,这篇文章并不是关于他们的 - 我已经抱怨 SPA现在是一个默认的选择,几乎所有东西; 这篇文章是关于小型网站的。
jQuery的兴衰
在此之前,jQuery及其庞大的插件生态系统占主导地位,有各种各样的滑块,图像画廊和丰富的动画。此外,集成它非常简单,通常只是用参数初始化一些插件(甚至是默认值)并提供元素id。其他所有内容通常都在标记中指定(或者它需要某些标记规则),而HTML作为一种声明性语言,很容易弄明白。事实上,jQuery是如此之大,以至于人们真的想知道为什么不默认将它包含在浏览器中。jQuery还包含了许多方便的功能(人们可能称之为“缺少”stdlib for DOM),这使得简单的交互变得非常简单。
我实际上相信jQuery仍然很大(不能真正提供任何数据,只是我的直觉),但有一个重要的转变。jQuery 现在很不满意,你不会发现很多教程如何在不了解JavaScript的情况下为你的页面快速编写一个小脚本。此外,大约5年前,图书馆的标准是:
在某些CDN上托管他们的缩小代码
将所有功能附加到某个全局变量(例如window.Backbone)
现在一些库仍然包含UMD构建,它本质上是加载库的全局变量版本,但是很多它们没有。此外,现在还有更多的框架,所有这些小部件都只是特定于框架,不仅要求使用它们(对于jQuery插件,您也需要使用库),但通常需要使用整个页面那个框架!
现代解决方案
当然,这个问题已得到解决,它是通过在现有的基础上提供启动器或特殊框架来完成的,您可以在这些框架中使用这些小部件并编译静态站点。此外,在引擎盖下,他们使用已经提到的模块加载和代码转换工具,因此您可以使用最新版本的JavaScript并将您的逻辑分离成可靠的可重用逻辑部分。这样apporach的突出的例子是GatsbyJS和Nuxt.js。启动程序通常以CLI的形式存在,例如create-react-app,隐藏所有复杂性,只是提供“正常工作”的应用程序,因此您编写组件。
但是,这种变化有什么问题?代码更易于维护(感谢模块),您可以使用最新的JavaScript版本,并确保丢失的所有内容都是polyfilled,这是以前常见的错误来源。嗯,从我的观点来看,有很多这些:
你这次真的必须了解JavaScript(你必须了解更多)
不仅是JavaScript,而且您可能必须了解webpack(对于静态资源加载 - 想象您在源代码中看到需要图像的惊喜!)
您的工作流现在包括使用~200MB文件构建应用程序(而不是编辑文本文件)
这是一个滑坡,当你的小应用程序更加膨胀是非常容易的
我认为最后一部分是最糟糕的部分。所有这些教程都会建议添加一些高级数据管理库,以一些特殊的,“更具声明性”的方式重构代码(想想有人试图说服重构HTML的频率),有些人会遵循这一点!现在,这个建议很好,但可能仅适用于大型应用程序,而不适用于GatsbyJS小型网站,这是一个包含5个.html文件的完美文件夹。是的,你将无法再使用这个菜单,但你可以复制它(和CSS类可以排序的可重复使用)。
结论 也许我错了,并没有那么糟糕。但是使用互联网,阅读博客,查看登陆页面,我觉得这些小网站,以前每个人都可以通过HTML知识和最小的JS技能访问,现在越来越多,现在越来越多地被更多“可扩展”的应用程序所取代。
本文由 芒果雪花汁 发布
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Aug 9, 2019 at 03:35 pm