NGV:插件
在本集中,我们将了解 NGV(我们的现代 3D 查看器框架)的插件方法。这是 NGV 系列的一部分。
针对开发者
一种方法是通过“只需单击即可启用”解决方案来针对非开发人员最终用户。缺点是您需要编写和维护大量额外的代码、文档,这使得它既耗时又僵化。
因此,我们以开发人员为目标,专注于让他们轻松使用。实际上有很多关于插件和可重用代码的技术可供我们利用:git、ES 模块、docker...
另一项重大简化是没有外部插件:要扩展软件,用户应该分叉该项目并构建它。
可维护性/可重用性
插件非常适合可维护的解决方案。使用插件时,您被迫思考什么是核心,什么不是;什么应该是可扩展或可替换的。您需要引入抽象、接口,这使得代码更加孤立且更易于理解。此外,您还可以编写文档和说明来帮助核心开发人员之外的人员理解您的 API:这对每个人来说都变得更加容易。
举个例子,我们创建了插件 ngv-plugin-cesium-widget 来将低级 Cesium 代码与应用程序代码隔离。我们计划拥有数十个应用程序:在插件中使用通用代码使我们能够在应用程序之间共享代码和概念。该插件是通用的,我们公开了用于配置它的接口:该插件可以处理任何配置,它是面向未来的。
@customElement('ngv-plugin-cesium-widget') export class NgvPluginCesiumWidget extends LitElement { public viewer: CesiumWidget; @property({type: Object}) cesiumContext: IngvCesiumContext; @property({type: Object}) modelCallback: (name: string, model: Model) => void;
扩展/定制
通过插件系统,用户可以超越配置。该解决方案可以定制甚至扩展。
例如,所有地理空间应用程序都有一个搜索栏,但没有一个具有相同的功能:不同的后端、不同的格式、不同的功能。
搜索插件可以附带预定义的提供程序(例如:OpenstreetMap Nominatim),并允许您提供自己的提供程序(例如:Pelias、Photon,...)。
这些提供程序独立于该应用程序,可以轻松共享或向上游贡献。
此外,搜索插件可以完全替换为其他实现,只要它遵循底层接口即可。
for (const pc of descr.config.providers) { const initialize = providerInitializers[pc.name]; if (!initialize) { console.error("could not find provider", pc.name, "skipping it"); continue; } const provider = initialize(pc.config); this.providers.push(provider); } this.autocomplete = new Autocomplete(this.autocompleteRef.value, { search: this.search.bind(this), onSubmit: this.onSubmit.bind(this), renderResult: this.renderResult.bind(this), getResultValue: this.getResultValue.bind(this), });
标准
与“插件”的概念非常接近的是“模块”的概念。事实上,Ecmascript 模块是我们在 NGV 框架内部“打包”并提供插件的技术方式。
类似地,Web 组件是允许我们将 UI 插件暴露给 DOM 的技术标准。
我们还可以将 git 视为允许我们的插件策略的基本工具,通过授权用户分叉、适应、贡献。
结论
我们对插件问题的解决方案是一个依赖标准的架构,利用开发人员的专业知识和生态系统,它允许更容易理解、隔离和更易于维护的代码。
你设计过插件系统吗?或者你已经开始思考这个问题了吗?请在评论中告诉我您的反馈。
以上是NGV:插件的详细内容。更多信息请关注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)

JavaScript是现代Web开发的基石,它的主要功能包括事件驱动编程、动态内容生成和异步编程。1)事件驱动编程允许网页根据用户操作动态变化。2)动态内容生成使得页面内容可以根据条件调整。3)异步编程确保用户界面不被阻塞。JavaScript广泛应用于网页交互、单页面应用和服务器端开发,极大地提升了用户体验和跨平台开发的灵活性。

Python和JavaScript开发者的薪资没有绝对的高低,具体取决于技能和行业需求。1.Python在数据科学和机器学习领域可能薪资更高。2.JavaScript在前端和全栈开发中需求大,薪资也可观。3.影响因素包括经验、地理位置、公司规模和特定技能。

学习JavaScript不难,但有挑战。1)理解基础概念如变量、数据类型、函数等。2)掌握异步编程,通过事件循环实现。3)使用DOM操作和Promise处理异步请求。4)避免常见错误,使用调试技巧。5)优化性能,遵循最佳实践。

如何在JavaScript中将具有相同ID的数组元素合并到一个对象中?在处理数据时,我们常常会遇到需要将具有相同ID�...

实现视差滚动和元素动画效果的探讨本文将探讨如何实现类似资生堂官网(https://www.shiseido.co.jp/sb/wonderland/)中�...

JavaScript的最新趋势包括TypeScript的崛起、现代框架和库的流行以及WebAssembly的应用。未来前景涵盖更强大的类型系统、服务器端JavaScript的发展、人工智能和机器学习的扩展以及物联网和边缘计算的潜力。

深入探讨console.log输出差异的根源本文将分析一段代码中console.log函数输出结果的差异,并解释其背后的原因。�...
