我已经尝试了很长一段时间来获得角度和asp.net核心玩得很好。我通过分离它取得了很大的成功,但问题是缺乏搜索引擎优化,所以我转向使用内置spa模板的新VS2017(我也尝试过以前的版本,但还有其他问题),因为我知道他们使用的是Angular Universal。 / p>
一切进展顺利,没有任何问题(除了hmr没有清除重装页面,所以我得到2份)然后我想我会尝试角度4中的元模块添加标题和描述,检查后页面源我注意到标签已添加,但还有第二部分。我不知道是什么导致了这个!我删除了Meta模块,以防出现问题,但显然不是!这是渲染源,
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Home Page - AngularMaterial</title>
<base href="/" />
<link href="/dist/toastr.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/hammerjs/2.0.8/hammer.min.js"></script>
<link rel="stylesheet" href="/dist/vendor.css?v=bzqEeKYfqu58ed-dtQv6xARrcvfdhL8uYPo7HpPskds" />
</head>
<body>
<app><html><head><style>.....styles removed...</style></head><body><app _nghost-c0="" ng-version="4.2.5"><nav-menu _ngcontent-c0="" _nghost-c1="">
如果您需要查看更多代码,请与我们联系。
编辑:
我刚刚制作了一个空白项目,这似乎是spa模板的一个错误。我在哪里报告错误?
答案 0 :(得分:0)
这是一个错误,它有一个解决方法:https://github.com/aspnet/JavaScriptServices/issues/1233 在boot.server.ts中你需要添加:
resolve({
html: state.renderToString()
.replace('<html><head>', '')
.replace('</head><body>', '')
.replace(/<\s*app.*?>/,'')
.replace('</app></body></html>', '')
});
这项工作有效,但是你应该尝试添加你不能使用的元标记或标题等,因为你已经删除了包含它们的头标记,而你制作的新标记只会被插入到主体中。而是页面。 Asp.Net Core SPA / Javascript服务尚未准备就绪,如果能够更新标题和描述对您来说很重要,并且查看git页面,生产可能还有很长的路要走。