Angular 2 的 CRUD 组件的不同方法
A different approach to CRUD components with Angular 2
我目前正在开发一系列带有Angular 2的增删改查组件。目前我在网上找到的所有示例都在组件内部提供了Http
服务。换句话说,创建资源的组件(我们称之为 ResourceCreate
)包括使用 Http
class 在远程服务器上创建资源的代码。同样,显示包含所有资源的列表的组件(我们称之为 ResourceList
)包含使用 Http
class 从服务器获取资源列表的代码。
除非您想要使用 ResourceList
来呈现尚未位于服务器上但在客户端临时生成的资源列表,否则它工作得很好。另一个示例是使用 ResourceCreate
仅键入资源信息,但将其保存在本地而不是服务器上。以上两种情况,组件中有Http
服务是多余的。
所以我对这些组件的想法如下:
- 创建父组件并附加所有 CRUD 子组件(例如,
ResourceCreate
、ResourceList
)。
- 不使用
Http
提交或接收数据,而是让父组件将数据传递给Input()s
或监听CRUD子组件的Output()
事件。例如,让父组件执行 Http
请求以获取资源列表,然后将该列表传递给 ResourcetList
组件。另一个示例可能是让 ResourceCreate
组件发出一个 submit
事件以及资源描述。该事件将被父组件捕获,然后父组件将其提交给服务器。
通过使用该方法,CRUD 组件对资源存储一无所知。因此,如果我们的资源位于本地或文件中,我们唯一需要更改的是父组件而不是 CRUD 组件 themselves.This 使 CRUD 组件更可重用。
我想了解这种方法是否有缺点。为什么我在 Internet 上找到的 none 个 CRUD 示例不使用这种方法,而是将 Http
服务嵌入到 CRUD 组件中?有什么想法吗?
提前致谢。
A Component controls a patch of screen real estate that we could call a view
这意味着理想情况下,我们应该创建具有关联视图的组件。您的方法的缺点是您创建的组件将经历完整的组件生命周期,这将是您的情况的开销,因为您没有任何关联的视图。
此外,如果不在视图中放置元素,就无法创建架构。任何组件的通信部分都应该独立于视图。
更好的选择是创建一个包装存储机制(http/ 本地)并将其注入 CRUD 组件的服务。这允许将 CRUD 组件与数据存储隔离。
我目前正在开发一系列带有Angular 2的增删改查组件。目前我在网上找到的所有示例都在组件内部提供了Http
服务。换句话说,创建资源的组件(我们称之为 ResourceCreate
)包括使用 Http
class 在远程服务器上创建资源的代码。同样,显示包含所有资源的列表的组件(我们称之为 ResourceList
)包含使用 Http
class 从服务器获取资源列表的代码。
除非您想要使用 ResourceList
来呈现尚未位于服务器上但在客户端临时生成的资源列表,否则它工作得很好。另一个示例是使用 ResourceCreate
仅键入资源信息,但将其保存在本地而不是服务器上。以上两种情况,组件中有Http
服务是多余的。
所以我对这些组件的想法如下:
- 创建父组件并附加所有 CRUD 子组件(例如,
ResourceCreate
、ResourceList
)。 - 不使用
Http
提交或接收数据,而是让父组件将数据传递给Input()s
或监听CRUD子组件的Output()
事件。例如,让父组件执行Http
请求以获取资源列表,然后将该列表传递给ResourcetList
组件。另一个示例可能是让ResourceCreate
组件发出一个submit
事件以及资源描述。该事件将被父组件捕获,然后父组件将其提交给服务器。
通过使用该方法,CRUD 组件对资源存储一无所知。因此,如果我们的资源位于本地或文件中,我们唯一需要更改的是父组件而不是 CRUD 组件 themselves.This 使 CRUD 组件更可重用。
我想了解这种方法是否有缺点。为什么我在 Internet 上找到的 none 个 CRUD 示例不使用这种方法,而是将 Http
服务嵌入到 CRUD 组件中?有什么想法吗?
提前致谢。
A Component controls a patch of screen real estate that we could call a view
这意味着理想情况下,我们应该创建具有关联视图的组件。您的方法的缺点是您创建的组件将经历完整的组件生命周期,这将是您的情况的开销,因为您没有任何关联的视图。
此外,如果不在视图中放置元素,就无法创建架构。任何组件的通信部分都应该独立于视图。
更好的选择是创建一个包装存储机制(http/ 本地)并将其注入 CRUD 组件的服务。这允许将 CRUD 组件与数据存储隔离。