”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > Aurelia对JavaScript框架有了新鲜的看法

Aurelia对JavaScript框架有了新鲜的看法

发布于2025-03-24
浏览:964

Aurelia A Fresh Take on JavaScript Frameworks最近,关于JavaScript Frameworks的对话已由流行名称(例如React(技术上是库),Next.js,Svelte,Svelte,Angular等)主导。

这些都是很棒的工具,但是您听说过Aurelia 2吗?

当我第一次遇到Aurelia时,我的反应是:“那是什么?”但是经过两年的工作,我现在相信它是那里最好的框架之一,即使不是最好的框架。

为什么我这样认为?

让我解释一下。我从react.js过渡到Aurelia,最初,我认为这只是另一个JavaScript框架。但是,随着我更深入的研究,我开始意识到它的真正潜力和力量。

本文将作为Aurelia 2的介绍,我将在其中展示其一些强大的概念以及为什么脱颖而出。

1。事件聚合

首先是事件聚合器,如果您在C#生态系统中工作,您可能会熟悉这一概念,但是以下是Aurelia的工作方式:

事件聚合器的功能与C#中常用的基于事件的消息模式相似。这是一个酒吧/子系统,可让您在Aurelia应用程序中发布并订阅自定义事件。

这有助于您应用程序的不同部分之间的脱钩通信。就像在C#中一样,事件聚合器或调解器用于简化事件处理,Aurelia的事件聚合器被框架本身利用,以在应用程序生命周期的各个阶段和特定操作中发布事件。 导入{ieventaggregator,从'aurelia''; lanesolve}; 导出类FirstComponent { ReadOnly EA:ieventAggregator = resolve(ieventaggregator); 边界() { this.ea.publish('ea_channel',“有效载荷”) } }

导入{ieventaggregator,从'aurelia''; lanesolve}; 导出类secondcomponent { ReadOnly EA:ieventAggregator = resolve(ieventaggregator); 边界() { this.ea.subscribe('ea_channel',有效载荷=> { //在此回调的内部做事 }); } }

这样,我们可以毫不费力地实现事件驱动的体系结构,解决和解决与React和类似框架经常遇到的耦合头痛。

2。 依赖项注入

import { IEventAggregator, resolve } from 'aurelia';

export class FirstComponent{

    readonly ea: IEventAggregator = resolve(IEventAggregator);

    bound() {
        this.ea.publish('ea_channel', ‘PAYLOAD’)
    }
 }

Aurelia提供了一个功能强大且灵活的DI系统,可简化接线应用程序的不同部分。借助Aurelia的DI,管理和注入依赖项变得无缝,导致更清洁,更可维护的代码。
import { IEventAggregator, resolve } from 'aurelia';

export class SecondComponent {

    readonly ea: IEventAggregator = resolve(IEventAggregator);

    bound() {
        this.ea.subscribe('ea_channel', payload => {
            // Do stuff inside of this callback
        });
    }
 }
此外,此方法使测试驱动的开发(TDD)变得更加容易,因为它可以直接对单个组件进行嘲弄和测试,而无需复杂的设置或紧密耦合的依赖项。

3。动态构图

aurelia的元素可以使视图和视图模型的动态组成。它的作用为自定义元素,但不需要特定的标签名称,可以灵活和可重复使用的UI组件。 在使用的视图模型中,您可以访问Aurelia的所有标准生命周期事件,以及可用于初始化或传递参数到视图模型的附加激活方法。 在实践中使用

主应用程序

[2

传递parameters

:the Model.bind属性将参数传递到动态组成的视图模型中的激活方法。

[2

我喜欢Aurelia 2的原因之一是通过MVVM(Model-view-viewModel)模式对关注点的干净分离。 view :UI结构完全与逻辑解耦。它只需绑定到ViewModel即可显示数据并捕获用户交互。

:这是所有逻辑发生的地方。它可以控制数据,处理业务规则并更新视图,而不必担心它的显示方式。
模型

:Aurelia将核心应用程序数据与视图和ViewModel分开,保持清晰度和焦点。

此分离使应用程序高度模块化,更易于维护,并且更易于测试,从而可以更灵活,可扩展的代码。 结论


Aurelia 2具有有助于构建干净,可扩展和可维护的应用程序的功能。 要获得完整的图片并深入研究其功能,我强烈鼓励您探索Aurelia 2文档,以提供更全面的理解。

版本声明 本文转载于:https://dev.to/hdzcalmir/aurelia-2-a-fresh-take-on-javascript-frameworks-3h20?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 为什么PHP的DateTime :: Modify('+1个月')会产生意外的结果?
    为什么PHP的DateTime :: Modify('+1个月')会产生意外的结果?
    使用php dateTime修改月份:发现预期的行为在使用PHP的DateTime类时,添加或减去几个月可能并不总是会产生预期的结果。正如文档所警告的那样,“当心”这些操作的“不像看起来那样直观。 考虑文档中给出的示例:这是内部发生的事情: 现在在3月3日添加另一个月,因为2月在2001年只有2...
    编程 发布于2025-03-26
  • 在GO中构造SQL查询时,如何安全地加入文本和值?
    在GO中构造SQL查询时,如何安全地加入文本和值?
    在go中构造文本sql查询时,在go sql queries 中,在使用conting and contement和contement consem per时,尤其是在使用integer per当per当per时,per per per当per. [&​​&&&&&&&&&&&&&&&默元组方法在...
    编程 发布于2025-03-26
  • 如何使用FormData()处理多个文件上传?
    如何使用FormData()处理多个文件上传?
    )处理多个文件输入时,通常需要处理多个文件上传时,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    编程 发布于2025-03-26
  • 如何使用Java.net.urlConnection和Multipart/form-data编码使用其他参数上传文件?
    如何使用Java.net.urlConnection和Multipart/form-data编码使用其他参数上传文件?
    使用http request 上传文件上传到http server,同时也提交其他参数,java.net.net.urlconnection and Multipart/form-data Encoding是普遍的。 Here's a breakdown of the process:Mu...
    编程 发布于2025-03-26
  • PHP阵列键值异常:了解07和08的好奇情况
    PHP阵列键值异常:了解07和08的好奇情况
    PHP数组键值问题,使用07&08 在给定数月的数组中,键值07和08呈现令人困惑的行为时,就会出现一个不寻常的问题。运行print_r($月份)返回意外结果:键“ 07”丢失,而键“ 08”分配给了9月的值。此问题源于PHP对领先零的解释。当一个数字带有0(例如07或08)的前缀时,PHP将...
    编程 发布于2025-03-26
  • 如何使用Python理解有效地创建字典?
    如何使用Python理解有效地创建字典?
    在python中,词典综合提供了一种生成新词典的简洁方法。尽管它们与列表综合相似,但存在一些显着差异。与问题所暗示的不同,您无法为钥匙创建字典理解。您必须明确指定键和值。 For example:d = {n: n**2 for n in range(5)}This creates a dicti...
    编程 发布于2025-03-26
  • HTML格式标签
    HTML格式标签
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    编程 发布于2025-03-26
  • 为什么我会收到MySQL错误#1089:错误的前缀密钥?
    为什么我会收到MySQL错误#1089:错误的前缀密钥?
    mySQL错误#1089:错误的前缀键错误descript [#1089-不正确的前缀键在尝试在表中创建一个prefix键时会出现。前缀键旨在索引字符串列的特定前缀长度长度,可以更快地搜索这些前缀。了解prefix keys `这将在整个Movie_ID列上创建标准主键。主密钥对于唯一识别...
    编程 发布于2025-03-26
  • 为什么不````''{margin:0; }`始终删除CSS中的最高边距?
    为什么不````''{margin:0; }`始终删除CSS中的最高边距?
    在CSS 问题:不正确的代码: 全球范围将所有余量重置为零,如提供的代码所建议的,可能会导致意外的副作用。解决特定的保证金问题是更建议的。 例如,在提供的示例中,将以下代码添加到CSS中,将解决余量问题: body H1 { 保证金顶:-40px; } 此方法更精确,避免了由全局保证金重置引...
    编程 发布于2025-03-26
  • 如何配置Pytesseract以使用数字输出的单位数字识别?
    如何配置Pytesseract以使用数字输出的单位数字识别?
    Pytesseract OCR具有单位数字识别和仅数字约束 在pytesseract的上下文中,在配置tesseract以识别单位数字和限制单个数字和限制输出对数字可能会提出质疑。 To address this issue, we delve into the specifics of Te...
    编程 发布于2025-03-26
  • 如何在Java字符串中有效替换多个子字符串?
    如何在Java字符串中有效替换多个子字符串?
    在java 中有效地替换多个substring,需要在需要替换一个字符串中的多个substring的情况下,很容易求助于重复应用字符串的刺激力量。 However, this can be inefficient for large strings or when working with nu...
    编程 发布于2025-03-26
  • 如何使用PHP从XML文件中有效地检索属性值?
    如何使用PHP从XML文件中有效地检索属性值?
    从php $xml = simplexml_load_file($file); foreach ($xml->Var[0]->attributes() as $attributeName => $attributeValue) { echo $attributeName,...
    编程 发布于2025-03-26
  • 如何使用Regex在PHP中有效地提取括号内的文本
    如何使用Regex在PHP中有效地提取括号内的文本
    php:在括号内提取文本在处理括号内的文本时,找到最有效的解决方案是必不可少的。一种方法是利用PHP的字符串操作函数,如下所示: 作为替代 $ text ='忽略除此之外的一切(text)'; preg_match('#((。 &&& [Regex使用模式来搜索特...
    编程 发布于2025-03-26
  • 如何在Java中执行命令提示命令,包括目录更改,包括目录更改?
    如何在Java中执行命令提示命令,包括目录更改,包括目录更改?
    在java 通过Java通过Java运行命令命令可能很具有挑战性。尽管您可能会找到打开命令提示符的代码段,但他们通常缺乏更改目录并执行其他命令的能力。 solution:使用Java使用Java,使用processBuilder。这种方法允许您:启动一个过程,然后将其标准错误重定向到其标准输出。...
    编程 发布于2025-03-26
  • 如何解决由于Android的内容安全策略而拒绝加载脚本... \”错误?
    如何解决由于Android的内容安全策略而拒绝加载脚本... \”错误?
    Unveiling the Mystery: Content Security Policy Directive ErrorsEncountering the enigmatic error "Refused to load the script..." when deployi...
    编程 发布于2025-03-26

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3