在这个通过Angular Universal控制SSR的旅程中,我每天都会在工作日结束,面对新的问题,这些问题一直阻止我的SPA被搜索引擎正确编入索引.
我在同一版本中使用Angular 5.2.11和所有依赖项.此外,我正在使用传输状态模块来阻止浏览器应用程序中的其他http调用.
我注意到的问题是,当我执行检索结果数组的http get/post请求时,我将此数组分配给组件变量,以使用*ngFor指令呈现为列表,服务器将此列表不完整.每次重新加载页面时,渲染结果的数量是随机的,从几乎3到小于整个数组长度.
这很糟糕,因为谷歌不会知道我现有的所有网址,因为在每次尝试时都会看到一个不完整的,随机数量的结果列表.
我在ngOnInit中发出此请求并从服务中调用它,在组件中订阅它并在收到成功响应时将响应分配给组件变量.
据我所知,Angular Universal中的*ngFor应该等待所有异步调用完成.我没有使用带有Observable的异步管道,因为我需要在我的应用程序架构中手动触发此请求,但我已经测试了这种方法,它也无法工作.
有谁知道如何使通用服务器应用程序始终从http异步调用呈现完整列表?
谢谢!
我目前正在使用 Angular 5 应用程序,该应用程序将在 ngrx-store 中使用一些缓存策略,以允许用户查看项目并返回主列表,而无需再次发出请求。
我正在使用 Effect 请求数据并使用 reducer 根据我的 htp 响应更新我的全局状态。如您所见,成功触发 RequestPartnersSuccess 操作,错误触发 RequestPartnersFail 操作。
我的全局状态中的属性“internalAppDynamic.searchPartners.recoverLatest”指示我是否应该从缓存中恢复我的列表,在这种情况下,效果应该在这个“if”语句中返回一个方法并完成我的流。
@Effect()
loadPartners$ = this.actions$
.ofType(SearchPartnersActions.REQUEST_PARTNERS)
.withLatestFrom(this.store$, (action, state) => {
action = Object.assign(action, {recoverLatest: state.internalAppDynamic.searchPartners.recoverLatest})
return action
})
.pipe(switchMap((action: any) => {
if (action.recoverLatest) {
return new SearchPartnersActions.RequestPartnersRecoverCache()
}
return this.internalPartnersService.getPartners(action.payload).pipe(
map(partners => new SearchPartnersActions.RequestPartnersSuccess(partners)),
catchError(error => of(new SearchPartnersActions.RequestPartnersFail(error)))
)
}))
Run Code Online (Sandbox Code Playgroud)
这是我的服务中的 getPartners() 函数:
getPartners (body): Observable<any> {
return this.http
.post(this._baseUrl + 'internal-app/get-partners', body, this.httpOptions)
.pipe(catchError((error: any) => this.errorHandler(error)))
}
Run Code Online (Sandbox Code Playgroud)
问题是我找不到实现这个结果的方法。我是 rxjs …
我当前正在使用express-rate-limit模块来阻止来自ip节点服务器中相同或已登录用户帐户的多个请求,这对于抵御DoS攻击非常有效。该服务器是一家小型本地企业,只需要一个实例,因为它没有太多的用户,并且其计算要求也不太高。
nginx最近,我读了很多书,很多人建议在节点服务器中使用它,但是我看不到在这种应用程序中使用它的主要优点。
怎么会nginx是我的应用程序更好?就npm modules单个服务器应用程序的安全性而言,其他功能无法做到?
我正在尝试将查询参数(而不是路由参数)传递给我的每一条辅助路由。
我想要实现的目标是拥有 3 个兄弟组件,每个组件都从其自己的辅助路由中订阅和使用查询参数,并使用 3 个不同的数据源填充我的页面,使分页/查询成为可能,并且每个数据源都是独立的。
我的 url 应如下所示,遵循 Angular 的辅助路由模式:
然后,在我的每个组件中,我都可以订阅它的特定辅助路由更改,并在导航时触发对我的 API 的请求。
我知道这可以通过路由参数实现,但我希望能够灵活地仅输入所需的查询参数。这可以在 Angular 中实现吗?
谢谢!
routes angular angular-router angular5 angular-auxiliary-routes
在v1.32.0更新之后,atom刚刚停止检测匹配的html标签,并且更改了javascript/typescript颜色方案(变量,函数,类,对象键等等).
是否有可能重新激活匹配的html标签突出显示并使用我之前已经习惯的以前的javascript颜色方案?
谢谢!