由于我是ember的新手,所以在应用程序初始化程序和服务之间感到困惑。据我所知,他们两个都在做同样的工作,并且都拥有应用程序的生命周期。谁能用一个清晰的例子解释它们之间的区别?
答案 0 :(得分:4)
服务可以注入到应用程序的其他区域,而应用程序初始化程序则不能。
当您要跟踪应用程序级别状态(例如,边栏是否打开/关闭)或要管理模式的打开/关闭状态时,或者如果您想要管理websocket连接。由于服务是可注入的,因此它们允许应用程序的其他区域与服务的功能,属性等进行交互。
应用程序初始化程序实际上仅在_application的初始化引导期间运行。这是一种常见的模式,如果您想将服务注入所有路线或其他任何东西。
有关初始化程序的文档:https://guides.emberjs.com/release/applications/initializers/
有关服务的文档:https://guides.emberjs.com/release/applications/services/
答案 1 :(得分:2)
Application Initializer是我们初始化,注册或注入新工厂类或任何服务的地方。 而且,服务和Application Initializer初始化的类(工厂)都可以将它们的状态像单例一样共享到所使用的每个路由。 使用applicationInstance.lookup()方法,我们甚至可以使用任何Application Initializer初始化的类,这些类在创建时不会在最初被注入,也可以共享其状态