Asp.net core 2.0 spa angular 4 产生 2 <head> 部分
Asp.net core 2.0 spa angular 4 produces 2 <head> sections
我已经尝试了很长一段时间来让 angular 和 asp.net 核心发挥出色。我通过分离它们取得了巨大的成功,但问题是缺乏 SEO 所以我转向了内置 spa 模板的新 VS2017(我也尝试了以前的版本,但有其他问题)因为我知道他们使用 Angular 通用。
一切顺利,没有任何问题(除了 hmr 在重新加载时没有清除页面,所以我得到了 2 个副本)然后我想我会尝试 angular 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 模板的错误。我应该在哪里报告错误?
这是一个错误,它有一个解决方法,如下所示: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>', '')
});
这项变通办法可行,但如果您尝试添加元标签或标题等,您将无法做到,因为您已经删除了包含它们的 head 标签,而您制作的新标签将直接插入到 body 代替页面。 Asp.Net 核心 SPA / Javascript 服务尚未准备好生产,如果能够更新标题和描述对您很重要,并且查看 git 页面,生产可能还有很长的路要走关闭。
我已经尝试了很长一段时间来让 angular 和 asp.net 核心发挥出色。我通过分离它们取得了巨大的成功,但问题是缺乏 SEO 所以我转向了内置 spa 模板的新 VS2017(我也尝试了以前的版本,但有其他问题)因为我知道他们使用 Angular 通用。
一切顺利,没有任何问题(除了 hmr 在重新加载时没有清除页面,所以我得到了 2 个副本)然后我想我会尝试 angular 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 模板的错误。我应该在哪里报告错误?
这是一个错误,它有一个解决方法,如下所示: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>', '')
});
这项变通办法可行,但如果您尝试添加元标签或标题等,您将无法做到,因为您已经删除了包含它们的 head 标签,而您制作的新标签将直接插入到 body 代替页面。 Asp.Net 核心 SPA / Javascript 服务尚未准备好生产,如果能够更新标题和描述对您很重要,并且查看 git 页面,生产可能还有很长的路要走关闭。