我正试图找到一种方法在我的角2项目中导入Prismic.io javascript工具包。
是否有办法这样做?我试着理解他们的安古拉2-起动机,但在现有的项目上并没有记录下来。
我想知道是否有一种将节点模块直接导入Angular2的方法?
提前谢谢!
发布于 2016-07-18 15:13:57
您需要更具体地说,什么是直接将模块导入到角2中?
首先,在模块方面有共同点:模块是javascript的核心特性,无论是在ES6中还是在使用绑定器(例如WebPack、SystemJS等).导入模块与角2无关。
至于角2,如果直接使用意味着能够通过依赖注入注入服务,那么这只是在角中完成的配置操作。
在外部的第三方非角度库的情况下,您可能想用一个角服务包装它,然后注入它。
您所链接的初学者项目是这样做的,它定义了一个prismic-service类,它包装了原始的棱镜库,因此您只对包装器类工作。
您可以扩展这个类以支持更多的特性。
关于在角2和角1中扩展第3部分库的一些注释: AngularJS (1)开发人员谨慎地对待第三方库。由于AngularJS具有内部的变化检测机制,因此需要对其进行管理、执行和控制。任何修改直接或间接影响UI的数据的第三方库都必须以角度触发内部变化检测。
在Angular2中,更改检测是由事件、用户交互等通用异步操作触发的。角并不直接管理它,它是自动触发的,就好像它是魔法一样。这是可能的,因为Zones是一个概念和一个库。角实现NgZone。
基本上,它意味着你可以直接使用棱镜或包装的角度服务,这不重要,它只是工作。
我猜您的大部分问题都将集中在集成上,即如何从API中获取数据并从中生成UI。
立体式开发工具包提供了一个REST,用于检索有关UI元素及其包含的数据的元数据。
客户机(在SPA中,比如角2)需要从元数据中显示实际的UI组件。换句话说,您需要构建与棱镜中的组件相对应的角度2组件。
一个公共的JavaScript库在这里不能工作,它可以从棱镜REST数据构建一个UI。它将生成不属于角度应用程序的HTML代码,并且不参与更改检测、生命周期挂钩和路由。在使用离线编译器时,必须首先在引导或编译时编译角中的所有组件。
最小的方法是从服务器获取HTML标记,并将其注入作为包装器的角组件中。这允许控制页面的生命周期,并用于路由、页面转换动画等。
初学者项目提供了这样一个称为DocumentPage的包装器。DocumentPage有逻辑从prismic下载它的内容(通过路由参数),并将其显示为原始HTML。请参阅这里
从prismic检索到的html标记不可绑定,您不能在其中应用更改检测和表达式。如果你把它分成几块,你可以在中间应用一些角度魔法。
所以,这是相当简单的,实际上,初学者项目是一个简单的包装器,围绕着API和UI中的棱镜框架。角形在应用程序中只占很小的一部分,因为它充当一个简单的包装器/容器。实际内容是由棱镜驱动的。我不认为使用这样的方法有什么好处,它没有任何坏处,但它并不是一个真正的角度应用程序。
一个合适的angular2棱镜应用程序将建立在纯元数据表示的基础上,这些元数据是以角作为角分量实现的。这是一个非常高级的应用程序,它需要动态组件创建以及高级路由实现(动态引入新组件)。
https://stackoverflow.com/questions/38438811
复制相似问题