2017-09-02 71 views
0

我的问题是关于很好的做法写角4Angular4 - 干净的代码,如何不重复的代码

干净的代码,我有两个组成部分 - 客户端和主机,它们很相似,都有一些<video>元素,并且两者都具有类似的代码来处理这个<video>元素。

那么,什么是实现这一点没有在这两个组件重复代码的最佳方式?

请记住,如果我将创建例如视频分量另一个组件,然后我会在这<video>我必须提供一些公共功能开启,关闭摄像头,麦克风,开始流,关闭流,等... 我必须在我的新视频组件中从客户端/主机组件运行一些功能。在角

+0

如果您使用的是打字稿,您可以创建一个基类和两个派生类。 – dkarchmer

+1

这是一个非常普遍的问题。但是如果你有一个或多或少在多个地方使用过的组件,比如具有增强功能的视频播放器,那么你应该创建一个包装它的组件,以便它可以被重用和定制到一般的输入中(比如源url)并广播消费者处理的一般输出事件(如视频暂停或某事)。您还可以直接或通过共享服务公开消费者可以使用的功能。 – bryan60

回答

2

重用代码通过服务完成。您可以通过在组件的构造函数中列出其他组件中的注入服务。

角将寻找通过服务提供商树和注入服务的实例为您服务。根据您是否想要单个服务或每个组件实例的单独服务实例,您可以在模块或组件中提供服务。

组件中的代码应该是非常精简,只包含很琐碎的功能和一些状态变量(虽然连州是首选与obserbavles取代但那是另一个话题)。

这种模式有利于在组成传承与它在一个基于原型语言的效果要好得多,至少如JavaScript(和打字稿)等。它允许您从多个服务中构建功能,而不仅仅是一个基类。

2

角度是关于粒度。你应该建立类似“共同框架”为你的应用程序,你将包括通用组件服务为整个应用程序。通用组件被称为嵌套组件示例:视频播放器,投票星等您specyfi所有常见的嵌套组件和服务,你只需通过在角依赖注入容器中建立来解决它们,以便随时使用它们。 (就像@LazarLjubenović写道)。

第二种类型的组件被称为可路由组件当您希望拥有应用程序的重要组成部分时,您正在使用它们。 对于例如:欢迎页面,详细信息页面等

除此之外你应该首先检查是Angular2 style guide。你可以找到有关良好实践的非常重要的信息。