扩展html aurelia.io方法
钥匙要点
-
现代JavaScript框架Aurelia.io,允许开发人员在HTML中创建自定义元素和属性,从而增强了Web应用程序的灵活性和功能。
Aurelia.io中的自定义属性可用于包装现有插件,提供常见绑定的快捷方式或更改现有的HTML元素,而无需直接代码访问。这使得在现有元素中添加新功能变得更加容易。
- 在Aurelia.io中创建新元素涉及为元素定义一个类,并为其HTML表示形式定义一个视图。这使创建具有自定义行为和结构的全新元素,改进代码重复使用和模块化设计。
-
- >教老狗HTML新技巧是当今现代JavaScript框架的主要重点。无论是遵循诸如WebComponents之类的潜在标准,创建自定义指令还是扩展现有类,您的选择框架很可能会提供一种扩展HTML标记本身的方法。在上一篇由布拉德·巴罗(Brad Barrow)撰写的文章中,您被介绍给了一个新玩家:Aurelia。本文将基于Brad的文章和代码,并向您展示如何通过遵循Aurelia的惯例来创建自定义元素以及自定义属性。
>- >本文的完整代码可以在我们的github repo上找到,您可以在此处看到我们要在此构建的内容(请花一些时间以使应用程序初始化)。
为什么需要更多标记?
通过查看视图,我们可以看到数据采集以及渲染与一个VM/视图对紧密耦合。
>这可能不是一个简单的示例,但随着系统的增长和越来越多的要求,可能会变成主要缺点。
>
使用自定义属性增强现有元素
想象一下,我们得到了为每个有趣的页面帖子提供弹出窗口的请求。为此,我们可以通过放置必要的数据属性,然后在我们的Funnyvm内部进行初始化,从而轻松地将Bootstrap的功能直接连接到标记中。但是,如果我们也需要在另一页上突然进行操作怎么办?通过声明自定义属性来提供功能可以使我们的生活更加轻松。这些在以下方案中特别有用:
- >包装现有插件
- >用于常见绑定的快捷方式,例如样式或类
- 更改现有的HTML元素 /自定义元素,而无需直接代码访问
>现在让我们弄脏双手,看看构建我们的第一个自定义属性所需的内容。
创建弹出
>让我们从头开始看看我们要实现的目标。新属性弹出案应接受弹出窗口的位置,标题和内容的参数。放置位于右侧,因此一个简单的字符串,因为值就足够了。对于其他两个属性,我们将使用Aurelia的数据绑定来映射迭代值。为了加载文件,我们使用Aurelia的需求功能。来自属性包含要导入资源的相对路径。
<span><span><span><template</span>></span> </span> <span><span><span><ul</span> class<span>="list-group"</span>></span> </span> <span><span><span><li</span> class<span>="list-group-item"</span> repeat.for<span>="p of posts"</span>></span> </span> <span><span><span><img</span> src.bind<span>="p.data.thumbnail"</span> /></span> </span> <span><span><span><a</span> href<span>="http://reddit.com${p.data.permalink}"</span>></span> </span> ${p.data.title} <span><span><span></a</span>></span> </span> <span><span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span><span><span><span></template</span>></span></span>
与其他框架相比,Aurelia通过通过元数据描述了构建体。但是,Aurelia不使用静态功能或复杂的API,而是利用了前沿ES7装饰器来实现这一目标。我们将从Aurelia-Framework包装中导入必要的装饰器。至于控件本身,我们将使用Twitter Bootstrap提供的弹出式JavaScript控件。因此,我们导入jQuery hander $和Bootstrap,以便初始化引导程序的JavaScript代码。
<span><span><span><require</span> from<span>="./popover"</span>></span><span><span></require</span>></span> </span>... <span><span><span><img</span> src.bind<span>="p.data.thumbnail"</span> </span></span><span> <span>popover<span>="placement: 'right'; </span></span></span><span><span> title.bind: p.data.url; </span></span><span><span> content.bind: p.data.title<span>"</span> /></span></span>
>第一个注入装饰器会处理实际的DOM元素作为我们构造方法的参数,然后存储以供以后使用。
<span><span><span><template</span>></span> </span> <span><span><span><ul</span> class<span>="list-group"</span>></span> </span> <span><span><span><li</span> class<span>="list-group-item"</span> repeat.for<span>="p of posts"</span>></span> </span> <span><span><span><img</span> src.bind<span>="p.data.thumbnail"</span> /></span> </span> <span><span><span><a</span> href<span>="http://reddit.com${p.data.permalink}"</span>></span> </span> ${p.data.title} <span><span><span></a</span>></span> </span> <span><span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span><span><span><span></template</span>></span></span>
最后但并非最不重要的一点是,我们添加了更改的处理程序。请注意,在我们的示例中,这些实际上并未执行,因为绑定源不会随着时间的流逝而变化。
<span><span><span><require</span> from<span>="./popover"</span>></span><span><span></require</span>></span> </span>... <span><span><span><img</span> src.bind<span>="p.data.thumbnail"</span> </span></span><span> <span>popover<span>="placement: 'right'; </span></span></span><span><span> title.bind: p.data.url; </span></span><span><span> content.bind: p.data.title<span>"</span> /></span></span>
在github上查看完整的文件
<span>import <span>{customAttribute, bindable, inject}</span> from 'aurelia-framework'; </span><span>import $ from 'bootstrap'; </span><span>import bootstrap from 'bootstrap'; </span><span>...</span>
>现在我们已经看到了如何通过向现有元素提供属性来添加新功能,让我们继续并开始编写自己的自定义元素。
>>创建具有自定义元素的新标签
为了创建全新的元素,Aurelia利用了一种非常相似的方法来定制属性。例如,我们将重新构建GIF页面的帖子,该帖子由称为Reddit-GIF的自定义元素表示,并提供了打开实际视频的可能性。我们认为的结果标记应该是:>
您可以看到,我们使用了新标签,并通过数据绑定到数据属性提供必要的信息。
@<span>inject(Element) </span>@<span>customAttribute('popover') </span>@<span>bindable('title') </span>@<span>bindable('content') </span>@<span>bindable('placement') </span><span>export class Popover { </span><span>...</span>
>查看VM部分,我们确实遵循与创建自定义属性时相似的过程。但是这一次,我们利用了一个不同的装饰仪,该装饰器将告诉Aurelia我们将仅使用一个名为Data的属性来创建一个自定义元素。
。
<span>constructor(element) { </span> <span>this.element = element; </span><span>}</span>
<span>bind() { </span> <span>// initialize the popover </span> <span>$(this.element).popover({ </span> <span>title: this.title, </span> <span>placement: this.placement, </span> <span>content: this.content, </span> <span>trigger: 'hover' }); </span><span>}</span>
<span>titleChanged(newValue){ </span> <span>$(this.element).data('bs.popover').options.title = newValue; </span><span>} </span> <span>contentChanged(newValue){ </span> <span>$(this.element).data('bs.popover').options.content = newValue; </span><span>} </span> <span>placementChanged(newValue){ </span> <span>$(this.element).data('bs.popover').options.placement = newValue; </span><span>}</span>
用约定的代码数量
降低代码量 Aurelia<span><span><span><require</span> from<span>="./reddit-gif"</span>></span><span><span></require</span>></span> </span>... <span><span><span><ul</span> class<span>="list-group"</span>></span> </span> <span><span><span><li</span> class<span>="list-group-item"</span> repeat.for<span>="p of posts"</span>></span> </span> <span><span><span><reddit-gif</span> data.bind<span>="p.data"</span>></span><span><span></reddit-gif</span>></span> </span> <span><span><span></li</span>></span> </span><span><span><span></ul</span>></span></span>
>
<span><span><span><template</span>></span> </span> <span><span><span><ul</span> class<span>="list-group"</span>></span> </span> <span><span><span><li</span> class<span>="list-group-item"</span> repeat.for<span>="p of posts"</span>></span> </span> <span><span><span><img</span> src.bind<span>="p.data.thumbnail"</span> /></span> </span> <span><span><span><a</span> href<span>="http://reddit.com${p.data.permalink}"</span>></span> </span> ${p.data.title} <span><span><span></a</span>></span> </span> <span><span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span><span><span><span></template</span>></span></span>
>要查看的另一件事是如何缩短对多个属性的使用。因此,我们还可以告诉我们的自定义属性可以期望动态属性。为此,我们使用Dynamicoptions Decorator装饰班级。现在,我们仍然可以重复使用相同的视图标记,但不必手动定义所有属性声明,顾名思义,这些声明在动态上下文中非常有帮助。这意味着我们可以编写一个名为dynamicpropertychanged的通用更换手,每当任何绑定属性更改时都会被调用。
<span><span><span><require</span> from<span>="./popover"</span>></span><span><span></require</span>></span> </span>... <span><span><span><img</span> src.bind<span>="p.data.thumbnail"</span> </span></span><span> <span>popover<span>="placement: 'right'; </span></span></span><span><span> title.bind: p.data.url; </span></span><span><span> content.bind: p.data.title<span>"</span> /></span></span>
结论
我们是Aurelia团队,希望您能为您提供如何通过利用自定义元素和属性来扩展HTML本身的快速概述。在整个示例中,我们希望您能够通过为您提供一种灵活而易于使用的框架来看到我们对开发人员体验的关注,而框架不会阻碍您阻碍或使您使用奇怪的API。如果您有任何疑问,我们想邀请您加入我们的Gitter频道。当您编写您的第一个自定义元素和属性时,我们也很想听听您的经历。
>
经常询问的问题(常见问题解答)有关使用Aurelia.io扩展HTML
什么是aurelia.io,它如何扩展html?aurelia.io是一个现代化的开源JavaScript框架,用于网络,移动设备和桌面开发。它通过允许开发人员创建自定义的HTML元素,将自定义属性添加到现有的HTML元素并控制HTML渲染的流程来扩展HTML。这是通过Aurelia功能强大的模板引擎来实现的,该引擎可以解释自定义元素和属性,并将其作为标准HTML。这允许在维护干净,可读的代码的同时提供更动态,交互式和复杂的Web应用程序。aurelia.io与其他JavaScript框架相比如何? aurelia.io由于关注Web标准,简单性和可扩展性而在其他JavaScript框架中脱颖而出。与许多框架不同,Aurelia.io被设计为合作库的集合,这意味着您可以根据需要使用尽可能多或少的框架。它还强调了基于常规的编码,减少了所需的样板代码量。此外,Aurelia.io对遵循Web标准的承诺意味着您的代码将在未来和即将到来的Web Technologies中兼容。
>我如何在aurelia.io?
中创建自定义元素? aurelia.io中的自定义元素涉及为元素定义一个类,以及其HTML表示的视图。该类包含该元素的逻辑,而视图定义了其HTML结构。定义后,可以像标准HTML元素一样在任何Aurelia.io应用程序中使用自定义元素。这允许代码重复使用和模块化设计,使您的应用程序更易于开发和维护。
> aurelia.io中的自定义属性是什么,我如何使用它们? IO是将自定义行为添加到现有HTML元素中的一种方法。它们以类似于自定义元素的方式定义,其中属性逻辑的类和其HTML表示的视图。定义后,可以将自定义属性添加到aurelia.io应用程序中的任何HTML元素,扩展其功能而无需创建一个全新的元素。
>> aurelia.io如何处理数据绑定?
aurelia.io支持双向数据绑定,这意味着模型的变化自动更新视图,反之亦然。这是通过Aurelia.io的可观察性系统来实现的,该系统跟踪数据的变化并更新视图的相关部分。这使得创建动态的,交互式应用程序变得容易,在其中UI始终反映了数据的当前状态。
>>我可以将Aurelia.io与其他JavaScript库和框架一起使用吗? .IO被设计为与其他JavaScript库和框架兼容。它使用模块化体系结构,这意味着您可以选择使用框架的哪些部分。这使得将Aurelia.io集成到现有项目中变得容易,或将其他库和框架与Aurelia.io。包括一个强大的路由器,允许复杂的导航方案。路由器支持嵌套路由,可选参数和动态路由等功能。这使得使用aurelia.io创建单页应用程序变得容易,在该应用程序中,用户可以在不同的视图之间导航而无需刷新页面。
> aurelia.io?
aurelia.io的学习曲线是什么,旨在易于学习,重点是简单性和惯例而不是配置。如果您熟悉JavaScript和HTML,则应该能够快速购买Aurelia.io。该框架的文档是全面的,包含大量示例可以帮助您入门。> Aurelia.io如何测试?它的性能是什么样的?
aurelia.io。可靠性和性能。它结合了单元测试,集成测试和端到端测试,以涵盖框架的各个方面。在性能方面,Aurelia.io的设计为快速有效,具有最小的足迹和优化的渲染。>
> aurelia.io有哪种支持和社区? IO拥有一个充满活力的开发人员社区,他们为框架做出了贡献并相互支持。有许多可用的资源,包括社区论坛,吉特聊天室和堆栈溢出标签。此外,Aurelia.io团队还提供专业的支持和培训服务。
aurelia.io由于关注Web标准,简单性和可扩展性而在其他JavaScript框架中脱颖而出。与许多框架不同,Aurelia.io被设计为合作库的集合,这意味着您可以根据需要使用尽可能多或少的框架。它还强调了基于常规的编码,减少了所需的样板代码量。此外,Aurelia.io对遵循Web标准的承诺意味着您的代码将在未来和即将到来的Web Technologies中兼容。
>我如何在aurelia.io?
中创建自定义元素? aurelia.io中的自定义元素涉及为元素定义一个类,以及其HTML表示的视图。该类包含该元素的逻辑,而视图定义了其HTML结构。定义后,可以像标准HTML元素一样在任何Aurelia.io应用程序中使用自定义元素。这允许代码重复使用和模块化设计,使您的应用程序更易于开发和维护。
> aurelia.io中的自定义属性是什么,我如何使用它们? IO是将自定义行为添加到现有HTML元素中的一种方法。它们以类似于自定义元素的方式定义,其中属性逻辑的类和其HTML表示的视图。定义后,可以将自定义属性添加到aurelia.io应用程序中的任何HTML元素,扩展其功能而无需创建一个全新的元素。
>> aurelia.io如何处理数据绑定?
aurelia.io支持双向数据绑定,这意味着模型的变化自动更新视图,反之亦然。这是通过Aurelia.io的可观察性系统来实现的,该系统跟踪数据的变化并更新视图的相关部分。这使得创建动态的,交互式应用程序变得容易,在其中UI始终反映了数据的当前状态。
>>我可以将Aurelia.io与其他JavaScript库和框架一起使用吗? .IO被设计为与其他JavaScript库和框架兼容。它使用模块化体系结构,这意味着您可以选择使用框架的哪些部分。这使得将Aurelia.io集成到现有项目中变得容易,或将其他库和框架与Aurelia.io。包括一个强大的路由器,允许复杂的导航方案。路由器支持嵌套路由,可选参数和动态路由等功能。这使得使用aurelia.io创建单页应用程序变得容易,在该应用程序中,用户可以在不同的视图之间导航而无需刷新页面。
> aurelia.io?
aurelia.io的学习曲线是什么,旨在易于学习,重点是简单性和惯例而不是配置。如果您熟悉JavaScript和HTML,则应该能够快速购买Aurelia.io。该框架的文档是全面的,包含大量示例可以帮助您入门。> Aurelia.io如何测试?它的性能是什么样的? aurelia.io。可靠性和性能。它结合了单元测试,集成测试和端到端测试,以涵盖框架的各个方面。在性能方面,Aurelia.io的设计为快速有效,具有最小的足迹和优化的渲染。>
> aurelia.io有哪种支持和社区? IO拥有一个充满活力的开发人员社区,他们为框架做出了贡献并相互支持。有许多可用的资源,包括社区论坛,吉特聊天室和堆栈溢出标签。此外,Aurelia.io团队还提供专业的支持和培训服务。以上是扩展html aurelia.io方法的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

从C/C 转向JavaScript需要适应动态类型、垃圾回收和异步编程等特点。1)C/C 是静态类型语言,需手动管理内存,而JavaScript是动态类型,垃圾回收自动处理。2)C/C 需编译成机器码,JavaScript则为解释型语言。3)JavaScript引入闭包、原型链和Promise等概念,增强了灵活性和异步编程能力。

JavaScript在Web开发中的主要用途包括客户端交互、表单验证和异步通信。1)通过DOM操作实现动态内容更新和用户交互;2)在用户提交数据前进行客户端验证,提高用户体验;3)通过AJAX技术实现与服务器的无刷新通信。

JavaScript在现实世界中的应用包括前端和后端开发。1)通过构建TODO列表应用展示前端应用,涉及DOM操作和事件处理。2)通过Node.js和Express构建RESTfulAPI展示后端应用。

理解JavaScript引擎内部工作原理对开发者重要,因为它能帮助编写更高效的代码并理解性能瓶颈和优化策略。1)引擎的工作流程包括解析、编译和执行三个阶段;2)执行过程中,引擎会进行动态优化,如内联缓存和隐藏类;3)最佳实践包括避免全局变量、优化循环、使用const和let,以及避免过度使用闭包。

Python和JavaScript在社区、库和资源方面的对比各有优劣。1)Python社区友好,适合初学者,但前端开发资源不如JavaScript丰富。2)Python在数据科学和机器学习库方面强大,JavaScript则在前端开发库和框架上更胜一筹。3)两者的学习资源都丰富,但Python适合从官方文档开始,JavaScript则以MDNWebDocs为佳。选择应基于项目需求和个人兴趣。

Python和JavaScript在开发环境上的选择都很重要。1)Python的开发环境包括PyCharm、JupyterNotebook和Anaconda,适合数据科学和快速原型开发。2)JavaScript的开发环境包括Node.js、VSCode和Webpack,适用于前端和后端开发。根据项目需求选择合适的工具可以提高开发效率和项目成功率。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。 1)C 用于解析JavaScript源码并生成抽象语法树。 2)C 负责生成和执行字节码。 3)C 实现JIT编译器,在运行时优化和编译热点代码,显着提高JavaScript的执行效率。
