Meteor 中的head
标记中可以包含哪些内容,哪些内容可以包含。
我可以在head
中包含所有标记,就像通常使用静态 .html 一样吗?
例如:
meta
:viewport, description, keywords, author, charset, http-equiv
link
:canonical, favicons(icon,apple-touch-icon..), manifest, mask-icon...
open:graph, twitter:cards
我读到我不应在script
中直接包含 GA script
和 FB pixel head
。 2016年还是这样吗?
答案 0 :(得分:1)
道歉,如果这有点罗嗦
简短回答:静态应用广泛的元标记很好,动态/每页不是,分析 - 除非是单页网站否则
<强>元强>
如果你有一个路由器和多个页面你不能在<head>
模板中包含正常的元标记,如果你想让它们在每个页面上改变SEO机器人,这意味着一个明确的不seo / og / twitter标签只是将它们放在标题中(unles你是一个单页网站)。
原因是,一旦完成初始页面加载,头部在Meteor上是静态的,因此总是会有你指定的标签。当您定义多个<head>
标签时,Meteor会将所有这些标签捆绑在一起,从而导致机器人访问您的页面时遇到问题,例如重复的og标签。没有把手支持元标记,因此您无法动态设置它们。
您可以将头部用于视口和所有页面中静态的内容。
您可以动态更改页面标题,但这对于SEO标签来说并不是很好,因为机器人通常只能看到第一次点击(标题未在此时加载),然后加载链接而不是点击应用程序。
onAfterAction: function(){
document.title = "My pages name";
}
<强>跟踪强>
对于分析,您可以在头部加载脚本,但是您希望从路由器执行跟踪事件。从GA Universal Analytics页面获取代码
//GOES IN HEAD
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
//GOES IN ROUTER
ga('create', 'UA-XXXXX-Y', 'auto');
ga('send', 'pageview');
你可能想要使用一个软件包来避免所有正确设置的复杂问题 - 很多都是here但是我不能说哪些支持fb像素但是大多数支持ga开箱即用。我一直在使用reywood,看起来很稳固
如果您使用的是移动应用,请记住为所有跟踪域设置允许规则。
meta的解决方法
你需要实现类似spiderable的东西来加载页面服务器端的静态实例以发送给机器人 - 这对于搜索引擎非常有用,如果你的页面内容不匹配,可能会对你造成伤害。
如果你更关心facebook / twitter能够在没有服务器创建静态页面的情况下刮掉,那么有一个软件包允许你在第一页加载时将元数据直接注入你的脑袋,但它与Iron路由器相关联所以,如果不是你的路由器,那就没多大了...... initial-iron-meta(免责声明 - 我确实制作了这个软件包,但它确实解决了这个问题,而不必在服务器端渲染时精神错乱,所以我认为我&#39; d扔掉那里)
流量路由器 如果您使用的是flow-router我认为您可以使用kadira:dochead package来设置元而不是使用服务器端呈现