前端和后端生锈

2021-05-15 00:42:49

浏览器中的后端语言很长一段时间。 Google Web Toolkit将Java应用程序编译为JavaScript,我相信(虽然我可能被误读这1).NET有一个功能,您可以在那里基本上代码,就好像您在C#中编写表单应用程序一样,它将编译为Web表格和连接JavaScript,HTML和CSS,因此您从未学习过网站技术的任何内容。

当Mozilla创建ASM.JS时,事情发生了一对夫妇的方式(后面导致webassembly)。除了Emscripten之外,您现在可以编译C和C ++进入JavaScript的子集,这些javascript的子集非常有效地执行,并提供了C后续期望的线性存储器模型的那种。生成的JavaScript可以具有相当糟糕的性能特征,因此能够利用数十年的研究,在优化C的编译器中为C,C ++在浏览器中是一个很大的前进。

Rust使用LLVM,Emscripten编译成网页装配,所以在创建WebAsseMbly后,人们正在移植Rust才能在浏览器中工作。很快就在此之后,有铁缘框架。

Rust Frontend代码有什么区别,并说,Flash,这是在浏览器中执行的编译二进制文件?除了使用浏览器的插件不发货,主要区别在于Web上的RUDE旨在与浏览器中的其他API集成。具体而言,DOM。前几代框架试图在网上纸张纸张,假装它就像任何其他GUI应用程序一样。

虽然前端框架现在正在认真地服用Web技术,但它也是WebasseMbly的情况是Web 2认真使用JavaScript以外的语言的结果。我个人在“JavaScript的类别”中的类型粉丝粉丝,但如果您已经陷入了编译步骤,为什么要如此关注输入语言是否类似于JavaScript? 3.

Rust在具有高级别语言功能的低级性能的声誉。这是否转化为网上的一个大优势?是的,有一些性能效益,但重要的是不要夸大他们。前端的最大成本较少“我每秒可以做多少循环迭代”,更像是“如何避免回流和批量我的DOM更新”。这取决于您正在编写的什么样的应用程序,但就像在后端一样,如果您绑定了语言开销,如果您受到io绑定,则在前端运行更有效的语言不会给您买如果你的所有时间都花在DOM上被堵住了。

框架在网上减轻了这一点。他们照顾讨论您的DOM更新并计算需要插入的最小事件侦听器等。我稍后会在这些事情上写一个更好的帖子,但这些技术的出血边缘由Svelte开创,需要汇编步骤。我们现在的技术与The Matrida athard库中的rust类似,Moonzoon在其前端利用它来获得性能。

我与MartinKavík谈过,当前的Seed Frontend框架和一个名为Moonzoon的新的全堆栈框架的创造者的现有维护者。我们谈论他如何选择生锈,成为种子框架的维护者以及他在月亮中制造的一些建筑和设计决策。

接下来的面试是为长度和清晰度编辑的,并包含一些我问他的后续问题。

是的,我正在捷克共和国布拉格的一些机构工作,我正在使用PHP和C / C ++等等。而且很危险。当我们的应用程序部署到生产时,由于语言功能丢失,我们经常会发现一些非常令人惊讶的错误。

所以我试图找到更好的语言来消除这些错误,我试图学习榆树,伊瑞克斯,去等等。但我只是不喜欢这些语言。有一些非常聪明的东西和美好的东西,但它们是非常严格的或过于普遍的或为初学者设计(例如,去)。但后来我发现了生锈,就是这样。

这是最好的语言(我认为),所以我想用Rust写作,而不是使用任何其他语言。

你是种子的主要维护者,你是如何参与这个项目的?

我是一年的前端开发人员,但只有javascript在那里,所以我搬到了后端。但经过多年的代理商和银行和类似公司工作,我想搬回前端,因为我有点厌倦了Devops和MicroServices。

我正试图找到像榆树这样的东西,但在锈症中。我尝试了一个新的框架,yew 4和一些类似的框架,但他们感到有点太难了解,有点太繁琐,我不喜欢API或他们缺少文件。然后我发现了种子,我真的没有真正喜欢这个代码,但API非常好。

所以,我向种子写了一些拉出请求,而主人非常乐意合并它们。这是我对GitHub的第一次生锈贡献,并在锈病中开源。然后我看到了重写和改进码级和API的机会,因为之前的维护者让我成为临时贡献者。由于简单性,他非常擅长设计API。

在种子上可能两年的发展之后,我能够自信地写真。我想知道,RURE中的JavaScript架构中的一些问题并不是真正可解决,而没有种子用户应用中的许多破坏变化。

所以,我有两个选择。第一个是重构,并在种子的代码比和API中引入许多变化。或者我可以更好地编写另一个框架(或至少的概念证明),其中没有榆树的影响,具有更新,更生锈的架构。这是月亮的前端部分的Zoon动机。

第二个问题是我收到了关于Seeg聊天的前端和后端集成的许多问题,我真的无法回答它们,因为后端侧有太多框架和架构。种子或任何其他前端框架,必须足够灵活地支持所有这些框架。

所以,我正在考虑如何解决一次,而且为所有后端和一个前端的想法出生。月亮正在解决整合问题,基本上。这个想法是开发人员在月亮中写下应用程序,它只是有效,因为它对于你在哪里编写前端并立即后端的小范围进行了优化。

我正在考虑他们设计硬件和软件的苹果技术,因此他们可以优于例如窗户来优化它,以便他们必须处理多种硬件。这是基本的想法。

Rust是一种难以学习的语言,这具有一些优缺点。优点是它自动过滤,呃......,脚本小胆,基本上。所以,如果你想雇用某人为你写生锈,那就太安全了。他们已经知道如何编程,因为它很难。

特别是特定的锈,我正在与借用检查员和寿命等标准的东西进行争斗。然后,您可以使用特征或语言中的一些新功能发现一些功能,并且有点像重新安装语言。所以你必须经常学习。

例如,当Async / .awit语法是新的,我们必须重写种子代码库,尤其是fetch api。我们遇到了一些奇怪的问题,因为我们的浪费太大,因为我们添加了一个像标准URL等一些依赖关系。依赖太大了,所以我们必须删除它并基本上从头开始重写它。问题或错误,文化,而是语言,但在依赖性和生态系统中是最痛苦的解决问题。

种子用户或种子应用中的错误的大多数问题不是由于语言本身;像空或未确定的东西。它们只是来自语义错误:他们只是不能使它编译。

我认为Rust与JavaScript或PHP有相当不同的问题。所以,你解释说,他们考虑到这一点,我们必须依靠编译器。对于来自其他语言和背景的许多人来说,这是新的思考。

你早些时候提到过你刚刚从现在开始尸体中的代码,你的意思是字面意思,或者你认为有一些地方你仍然会在生锈中使用另一种语言吗?

也许还有一些地方,其他语言会更好,但对我来说有两个问题。第一个是我的大脑对铁锈感到舒适。我不尝试在我的脑海里做编译器的工作。因此,例如,当我在他们使用的公司工作的几个月里工作时。我会有一切奔跑和工作,我会收到关于缺少引用的代码审查评论,或者“这可能是工作,或者由于x而不起作用。

RUTR消除了其特征的这些错误。在其他语言中,没有这种安全网,所以我有这些语言的问题。之后,我想在Rust中写一切,因为它基本上是一个非常低级别的系统语言,但我们也能够用它写非常好的抽象。您可以将其编译为本地或其他任何东西。

我正在写下月亮的“zoon”部分,所以我最终为zoon 5写了一个JS基准榜样应用程序。我已经看到了种子和zoon之间的差异,例如,在屏幕上显示数千行。单击一行时,它基本上在Zoon应用程序中立即更改,但在SEED应用程序中,您需要等待它呈现整个页面。有一些建筑功能,我已经看到了,所以对我来说非常令人兴奋。这可能是几个月的几个月。

“月亮”部分,后端,这对我来说基本上是一个新世界,因为我在过去几年里致力于种子。我没有能够找到另一个锈虚拟演员框架6。 java和C#中有一些虚拟演员的框架,但这是遗漏的东西。所以它会从头开始,我会读白皮书并试图实施它。目标是使其可扩展并在没有数据库的情况下使其工作。所以我很兴奋,因为它允许我在没有Postgres和迁移和DB-OP和类似的东西的情况下编写Web应用程序。

演员模型:演员是一个与世界和其他演员使用异步消息进行交互的对象。

标准演员:必须由开发人员或演员' S父(AKA Supervisor)明确地创建和删除该演员。

虚拟演员:运行时系统管理演员。它创建,删除或移动服务器之间的演员。所有演员始终处于活动状态,无法从开发人员的角度失败。在硬件故障的情况下,丢失的演员在另一台服务器上自动重新创建并转发给它们的消息。

这很有意思,所以换句话说它会将数据库拉入框架本身,所以它不是与外部服务交谈?

当您使用后端写一个小应用程序时,您将能够使用虚拟actor。但我知道许多应用程序将需要与某些自定义API(微兽人或云API)进行一些通信。因此,将有一些库与经典标准API通信,但如果您不需要它,您只需使用虚拟演员,您将具有可扩展性和基本内容,内置了身份验证。它应该使您的发展更快,更少复杂。较少为您的本地机器设置,生产应不那么痛苦。

您认为真正有趣的生态生态系统中是否有任何项目,但也许没有足够的关注?

第一个是躯干。这就像铁锈应用的网克。维护者是种子用户,所以我们从聊天中互相了解。我已经为客户提供了生产应用程序中的Trunk,所以它已经工作和可用种子和yew(以及可能其他框架)。

最后,FST非常令人叹为观止。我正在努力为锈病客户的前端,核心基于这个图书馆。我能够在几毫秒的标题中搜索20,000部电影。当我与一些JavaScript图书馆进行比较时,他们可能需要数十万分之一。所以这是一个非常好的榜样,铁锈和webassembly要更快,允许您更改前端架构。您可以将搜索从后端移动到前端并省下一些钱!

如果您有付费订阅,并且尚未在生锈贴纸上持续下注,请不要担心,我本周派出休息。

此外,如果您认识某人在有趣的生锈项目上工作,您认为会发出好帖子,请告诉我。我有一个新的采访管道,但到目前为止我所得到的建议很大。

1如果有人能告诉我什么是我在这里记得的东西,请平我

2谁是“网络”? UH,标准机构的复杂互动系统,Web开发人员和浏览器制造商,以某种方式在某种技术应存在于应该存在的分布式共识,并得到很好的支持。 加上Brendan Eich。 好的,我这样做了。 3这种方法实际上有益于,这是浏览器JITS对JavaScript和JavaScript的模式非常优化。 此外,您可以免费获得高质量的垃圾收集器,Webassembly不给您。 5 Rust有几个演员框架,如Actix和Bastion,但虚拟行为者是Microsoft这个白皮书中描述的特定类型的演员框架。