Loc*_*tKs 14 javascript angular ng-packagr
我有一个纯 javascript 库,用户可以通过 npm 安装。我想向这个库添加/创建一个 Angular“包装器”,以便它可以在 Angular 项目中无缝使用,但我不知道如何做到这一点。我正在使用 Angular-cli v6。
这与如何为现有 Javascript 库创建 Angular 库包装器非常相似?,但是唯一的响应是指向 ng-packagr 的链接。我已经完成了一些关于使用 ng-packagr 创建库的教程,但是它们没有描述(并且我在其他地方找不到示例)如何围绕非 Angular JS 库创建包装器。
任何帮助是极大的赞赏!:)
一个老问题,但我喜欢它。没有一个简单的答案,所以我是这样做的:
了解内部结构以及我如何包装 Google Maps Javascript API 库
以下是非常抽象的,但这是一个抽象的问题,所以这里......
您可能需要实现的基本内容是:
NgZone.其他考虑因素可能是性能、可伸缩性、在现有工具上添加新工具等。无论您正在处理什么库,您最终都可能会用函数包装一个函数,用一个类包装一个类,用一个模块包装一个模块等。
问题出现了:“我是否应该手动编写所有这些代码?我是否真的要为每个本地方法编写一个方法?当本地库更改实现时会发生什么?我将不得不在任何地方更改我的代码......“
为了简化和使您的包装库可扩展,您可以自动化包装机制(一种方法是使用 Javascript Proxy)对象。将它与 TypeScript 的实用程序类型和扩展接口相结合,您可以创建一个自动将调用委托给相关本机对象/函数的类,并且您将获得智能感知(对于您不需要在包装器中手动实现的方法! )。
对于事件委托,您可以创建一种机制,为您的原生事件生成可观察对象(或 EventEmitters)。
在某些情况下,您应该考虑使用NgZone.runOutsideAngular()来防止对在本机库中执行的代码运行不必要的更改检测。另一方面,NgZone.run()当运行应该进入并影响变更检测周期的本机代码时,您应该考虑使用将执行带入 Angular 的区域。
我的 Angular 谷歌地图库是开源的,你可以看看。我在其中实现了一些非常有趣的架构机制。欢迎任何遇到这篇文章并想要更多详细信息或帮助的人与我联系。
干杯
| 归档时间: | 
 | 
| 查看次数: | 773 次 | 
| 最近记录: |