2017-08-01 134 views
-2

我试图理解这个,所以如果有人可以请给我解释,我会非常感激。Angular 4懒加载

我的理解是,我们不能在没有node.js的情况下在角度上进行延迟加载。真的吗?如果没有,请您指点我可以了解如何在没有node.js的情况下进行操作的地方?

请和谢谢。

+1

你真的用Google吗? – Milad

+0

https://namitamalik.github.io/Lazy-Loading-with-Angular2-Routing/ – Milad

+1

有一百万篇关于这方面的文章,wtf – Milad

回答

1

这是不正确的。虽然两者都是使用Javascript,但Angular和Node.js是两个独立的技术,有两个独立的关注点。 Node.js是一个后端架构,用于处理和传递数据,而Angular是一种前端技术,主要关注如何为用户提供一个网关来与通过GUI提供数据的服务进行交互。

在Angular懒加载模块通过路由器as documented here完成。基本上你不导入你要延迟加载,直到该模块的路径已被激活的模块,例如:

export const routes: Routes = [ 
    { path: '', redirectTo: 'contact', pathMatch: 'full'}, 
    { path: 'crisis', loadChildren: 'app/crisis/crisis.module#CrisisModule' }, 
    { path: 'heroes', loadChildren: 'app/hero/hero.module#HeroModule' } 
]; 

要小心,并阅读角文档仔细,因为有不少“陷阱“与延迟加载。我能想到的一些:

  1. 您只需要在路由中加载模块。尝试将其导入父模块将会否定模块的“懒惰”,并且在某些情况下会导致错误。

  2. 延迟加载模块导致依赖注入树被拆分。换句话说,如果您在父模块和子模块中调用相同的服务,它们将处于不同的上下文中,因此它们不一定会彼此知晓,除非您声明服务为forRoot(), more on that here.

总的来说,这样做很简单。只需按照文档。

+0

感谢您的回应。我都知道这一点。有一点我有它实现,它工作正常。为什么我认为它没有node.js是行不通的,它在我的开发机器上工作得很好,但是一旦我将它发布到我的托管站点(没有node.js),应用程序就停止工作全部一起。我发布应用程序时是否缺少我需要的东西? – Samkan

0

在我看来你需要使用角CLI来建立你的角度应用:ng build --prod --env=prod 然后在src文件夹角CLI会生成此文件夹dist文件夹中的应用程序准备上传到服务器。