“音乐之声”可能会说:“让我们从头开始,这是一个很好的起点。” 但是几乎每个开发人员都知道这是一个愚蠢的计划。 正确的起点是由一支伟大的开源开发人员团队建立的坚实基础。 克隆他们的辛苦工作,然后添加足够的代码以使其成为您自己的代码。 无需重复每个人以前所做的事情。
这是一个简单的计划-只要您选择即可。 不幸的是,选择该基础几乎像刚开始一样困难。 Web框架世界是一个非常活跃的开发领域,可能会有许多优秀的开源项目对您的项目来说是一个很好的开端。
更糟糕的是,创建这些不同项目的不同团队在不同的道路上出发,因为他们与其他选择在理念上存在严重分歧。 他们研究了其他框架,并决定可以做得更好。 换句话说,他们这样做是有原因的,您可能同意也可能不同意。
下面列出的好地方列表有意让市场领导者React,Angular和Vue离开,只是为了使事情变得更简单。 这并不意味着三巨头都不好。 它们可能仍然是您的正确选择。 只是他们经常被谈论,而这些讨论却忽略了其他一些不错的选择。
有很多充分的理由选择最受欢迎的。 您穿鞋的许多人环顾四周,其中许多人有充分的理由选择React , Angular或Vue 。 但是那是那时。 同时,一些聪明的人已经创建了更新的框架,这些框架更快,更简单,更强大,或者是任何最高级的框架。
在下面的大多数情况下,这些团队通过重新构想框架的本质来创建有趣而强大的功能。 这是一种花哨的说法,他们最终删除了一个功能,从而使框架更加高效,从而减少了所需的内存量,加快了启动时间,或者通常使它更加灵活。 或者在某些情况下,他们添加了新的想法,这些想法将来可能会成为标准。
如果您有时间进行投资,这里列出了其他一些有趣的选择。 它们不一定适合某些人,也不是所有人的最佳选择,但对于您来说可能是更好的选择。 您的工作(如果选择接受)是为Web应用程序创建一个完整的描述,写下有关不同用例的相对牢固的描述,然后牢记这些工具进行评估。
也许您喜欢一种设计代码的特殊方法。 也许您的应用程序不需要胖的,更流行的框架中的某些功能。 有许多其他理由可以选择其中一条途径进行投资。 您可能会发现其中之一为您的应用程序创造了奇迹。
小DOM
如果您喜欢虚拟DOM的想法,但是您不希望采用React,Vue或其他大牌框架的人们的思维方式带来的所有限制,那么Petit DOM是解决之道。 您将获得少量的代码,这些代码将使您可以操纵标签的虚拟集合,然后将其迁移到真实的DOM。 有关组件结构和渲染的所有其他事情都由您决定。 如果您的组件很简单,或者要创建仅由您自己创建的一些超级复杂的呈现层次结构,那么这可能是您的基础,因为它所提供的全部只是用于虚拟化DOM的工具。
剩余
虚拟DOM可能并不适合所有人。 它占用空间,因此,如果您的操作不太复杂,则最好将指令直接传递到官方DOM。 剩余库就是这样做的。 它采用了每个人都喜欢的标记JSX,并将其编译为一些将操纵真实DOM的代码。 正如他们在广告业务中所说的那样,它削减了中间商。 没有差别。 没有秘密的额外层。 只是对真实DOM的纯粹操纵。 如果您的代码简单而直接,足以对DOM做几件事,那么为什么还要打扰虚拟的注意力呢?
RE:DOM
对于那些不想在虚拟Dom中投入任何内存的人来说,另一个选择是一个名为RE:DOM的小型库(2KB)。 RE:DOM包含一些基本例程,使您可以通过一些简单JavaScript调用来创建所有标记和组件。 语法更接近CSS,因此您只需几次击键就可以指定带有ID和类的相当复杂的标签。 您的“小于”(<)和“大于”(>)键将表示感谢。
秘银
并非所有替代方案都是微小且极简的。 在这种情况下, 秘银可能被称为“中型”框架,尽管它的大小只有8KB左右。 所有这些代码都使用其他有效代码来构建具有有效更新机制的虚拟DOM,但同时还提供了一套标准化的工具来应对许多标准挑战,例如路由和XMLHttpRequest调用。 项目设计者希望Mithril项目相对标准化,他们认为将此代码添加到主库中可以提高标准化程度。 如果这还不够的话,他们还会推出一些标准格式和惯用结构。
鲍勃里尔
如果您喜欢React的虚拟DOM和有状态组件,并且喜欢使用TypeScript进行编程,那么Bobril或它的对Angular友好的表亲ngBobril可能只是门票。 在某些基准测试中,该框架始终比React或Angular快得多,这可能是因为diff算法更快并且缺乏对同构JavaScript的支持。 如果需要,还有一些CSS操作的速记功能和一个完整的状态管理层BobX 。
马可
如果您一直在花时间竞标Pez分配器或其他收藏品,那么您会体验到Marko的强大功能。Marko是一个纤巧,快速的框架,eBay通过开放源代码许可证共享了该框架。 最好的部分可能是非常轻量级的模板语法,该语法巧妙地从HTML中删除了大多数多余的脂肪,因此该结构是由缩进定义的,而没有其他内容。 而且渲染引擎非常快速,能够驱动更新速度超过60fps的精致舞蹈DIV星座。
斯维尔特
您的标准Web框架附带一个编译器和一个下载的库,该库在运行时处理编译器生成的内容。 这个分两步的过程允许编写非常复杂的代码,但要以每次打开页面时等待下载和解析运行时库为代价。 Svelte编译器通过吐出几乎可以独立运行的纯JavaScript来摆脱这种复杂性,尽管它仅在某些较新的浏览器(例如Chrome,Firefox,Opera和IE10)中运行。 这是一个聪明的建筑技巧,可以产生占用很少内存的非常轻量级的网站。
地狱
Inferno是另一个框架,旨在执行React的大部分工作,但下载量较小,运行时间更快。 它通过放弃复杂的综合事件机制,而只专注于最基本的事件(如onClick)来实现上述目标 。 该API的许多其他部分都是相似的(如果不是相同的话),如果不需要事件优化层,则使代码移入相对简单。
事前
最小的React后代之一是Preact ,它提供了大多数最有价值的功能,例如虚拟DOM和复杂的组件,但剥夺了合成事件处理程序和一些props继承。 尽管Inferno尝试仅实现最重要的事件(如onClick
,但Preact不会尝试对事件做任何事情,而使您只能依赖浏览器的本机addEventListener
。 排除功能并没有增加太多(他们认为)的是如何使下载量变得更小。 这有点折衷,因为基准测试表明Preact比Inferno慢一些。 当然,您的应用程序可能会有所不同,并且里程可能会有所不同。 如果您确实需要与React的纯粹兼容性,甚至还有一个库( preact-compat )可以解决构建期间的大多数问题。
哈皮
许多框架合而为一。 Hapi不仅是插件的集合,还包含几十个代码位,您可以根据需要将其混合到堆栈中。 身份验证,授权和日志记录是繁琐的工作,可以通过许多选项解决。 如果您要构建一个包含API的微服务架构,那么标准化的Swagger插件将自动从您的基本代码生成Swagger文档。
考阿
有时,您需要一个相当复杂的例程集合,这些例程可以处理传入的请求并将其转换为多个更改,其中一些操作很复杂。 Koa旨在使所有这些工作的组织变得更加简单。 它的秘密在于,它将通常控制JavaScript的回调函数转变为一组异步函数,这些异步函数将在适当的时候触发。 嵌套的意大利面条回调堆栈变成了更干净的东西。
巢
降低服务器复杂性的另一种选择来自Nest团队,他们提供了一种架构,其中填充了控制器,管道和提供程序,并提供了一些防护,拦截器和异常过滤器以保持秩序。 该框架是现代的,随时可以从一开始就处理GraphQL和微服务请求。
Drupal,WordPress和Rails
这些天来,用JavaScript内置并在Node.js之上运行的框架充斥着Web开发世界的心理中心。 但是,如果忽略上一代基于PHP的上一代,这可能是一个错误,该基础比以往任何时候都快,而且还具有像JavaScript这样的即时编译器。 Ruby及其Rails框架继续充当坚如磐石的网站的基石。
经过十多年的不断发展和努力,上一代人备受打击,并且经受了考验。 有经验丰富的设计师可以为应用程序制作主题和外观。 很有可能有人已经用您需要的功能构建了模块。 因此,在探索一个聪明的Node.js框架之前,请考虑其中一项旧有的东西是否已经可以做很多甚至不需要的事情。
香草JS
您可能会认为这是对“皇帝的新装”的刻薄挖掘或讽刺,但很难与它的成功争论。 Vanilla JS是一个自吹自that的网站,其网站使用的网站数量超过了“ jQuery,Prototype JS,MooTools,YUI和Google Web Toolkit的总和 。” 考虑到jQuery的泛滥,这可能是正确的,也可能不是正确的,但让我们笑一笑。 该站点还带有一个可爱的小选择器,使您可以将不同组件的自定义归档捆绑在一起,例如Math,DOM,闭包或正则表达式。 无论您选择什么,结果都是令人难以置信的零字节长。 尝试击败那个!
开玩笑的意思是,有时仅使用JavaScript中的一些标准元素并跳过多余的部分是有道理的。 诸如jQuery或React之类的库和框架之所以开始,部分是由于浏览器之间的疯狂差异。 由于标准化,许多差异已经消失了。
当然,香草JS支持者不会面对这样的事实: $()
类的速记函数不仅方便,而且还节省了我们自己代码中的空间。 但是,如果您只是偶尔使用document.getElementById
,则可能无关紧要。 如果您只是要在网页上添加一些功能,而这些功能将做一些基本的事情,那么纯净的原始JavaScript可能是您最快的框架。
From: https://www.infoworld.com/article/3300156/15-great-alternatives-to-react-angular-and-vue.html