Javascript 如何使用ms seo包在Meteor中实现更好的seo?

Javascript 如何使用ms seo包在Meteor中实现更好的seo?,javascript,meteor,Javascript,Meteor,这个软件包在各个方面都很好,但遗憾的是,它的作者在编写自述时忘记了像我这样的新手。无论如何,作为一个从未对任何编码社区做出过任何贡献的人,我确信我的批评毫无价值,所以让我们继续前进 这位作者随软件包提供了一篇博文,这是一篇有趣的文章,但大部分内容与自述文件本身直接矛盾,因此我无法配置设置 这篇博文说: 您只需要在以下模式中添加seo数据: 我的猜测是,这个包为您创建了一个集合SeoCollection,所以我只需要用一些种子数据填充它,为我的应用程序的每个路径插入一个。酷 哦,但是等等。。。自述

这个软件包在各个方面都很好,但遗憾的是,它的作者在编写自述时忘记了像我这样的新手。无论如何,作为一个从未对任何编码社区做出过任何贡献的人,我确信我的批评毫无价值,所以让我们继续前进

这位作者随软件包提供了一篇博文,这是一篇有趣的文章,但大部分内容与自述文件本身直接矛盾,因此我无法配置设置

这篇博文说:

您只需要在以下模式中添加seo数据:

我的猜测是,这个包为您创建了一个集合
SeoCollection
,所以我只需要用一些种子数据填充它,为我的应用程序的每个路径插入一个。酷

哦,但是等等。。。自述文件说明了一些不同的内容:

您可以设置一些标准值。如果没有其他设置,则将设置此选项 可用

他是说,如果我不提供任何配置,即我的站点将被称为“Manuel Schoebel-MVP开发”,那么这些实际值将被设置吗?这和我必须做的插页有什么关系?为什么这会出现在客户机中?为什么没有路线名称

自述文件继续,并为
SeoCollection.update
提供了一些示例代码,似乎也做了同样的事情!所以我应该使用
update
,而不是
insert
?我到底在哪里做这件事

但随后他谈到在Iron Router中使用onAfterHooks代替动态数据。所以我应该用它来代替上面的一些吗


我很想澄清一下。安装软件包后我需要做什么?

我从未使用过此软件包,但这是我从阅读文档/代码中学到的:

SEO.config 包能够为不同的路由呈现不同的头标签。因此,当您插入一个新的ms seo配置时,您通常会通过一个路由。但您也可以配置默认配置。这就是整个Meteor.startup
SEO.config
业务的内容

SeoCollection.update 文档中的
update
调用将选项
upsert
设置为
true
。此选项使查询更新数据库条目(如果存在),并在不存在时插入它。这使得更改变得更容易,有了这一点,当您执行meteor reset时,ms seo的状态保持不变。上次他没有更新博客帖子

因此,我建议您使用文档化的
update
语句。甚至,使用

配置可能是在客户端完成的,以便于更新

SEO.set 最后使用
onAfterAction
钩子,这样您就不必手动指定当前路由。你可以从中看出这一点。
SEO.set
调用与
upsert
基本相同,它只是检查由
iron:router
指定的路由。
SEO.set
函数不会将设置保存到集合中。这意味着,它必须在每次加载站点时执行

总结 所以,如果你使用iron:router肯定会使用
onAfterAction
SEO.set
。当然,您仍然需要使用
SEO.config
函数来设置默认设置


希望对您有所帮助。

了解更新的自述非常有用!然而,你接着开始迷惑我!如果一件事和另一件事是一样的,为什么我需要两者都用呢?还是我?有趣的是,你说“当然你还想要……”而这对我来说离“当然”很远!(我的意思是,如果要覆盖它们,为什么我需要设置默认设置?)。对于某些页面,您可能无法或忘记编写描述。这就是为什么我会使用
SEO.config
。但据我从文件中所知,你不必使用它。你必须重写很多。这是一个非常糟糕的文件包。如果你不介意的话,我想问你最后一个问题:是否有任何方法可以检查这些方法是否有效?请查看。它可以为你做一些很酷的事情。顺便说一句,我同意,它的文档是可怕的,事实上,它是用咖啡脚本写的没有帮助。因此,对您来说,这可能是一个很好的第一个开源贡献,可以让文档变得更漂亮。这个软件包相当受欢迎,因此它会让你获得一些严肃的互联网信誉
SeoCollection.insert({
    "route_name" : "home", // the name of the Iron-Router route
    "title" : "Title of your home site",
    "meta" : [
        {"description": "This is the description of the document"},
        // add more meta tags
    ],
    "og" : [
        { "image": "http://your-domain.com/images/image.jpg" },
        // add more open graph tags
    ]
})
Meteor.startup(function() {
    if (Meteor.isClient) {
        return SEO.config({
            title: 'Manuel Schoebel - MVP Development',
            meta: {
                'description': 'Manuel Schoebel develops Minimal Viable Producs (MVP) for Startups'
            },
            og: {
                'image': 'http://manuel-schoebel.com/images/authors/manuel-schoebel.jpg' 
           }
        });
    }
});
SeoCollection.upsert(
  {
    route_name: 'aboutMe'
  },
  {
    $set: {
      route_name: 'aboutMe',
      title: 'About - Manuel Schoebel',
      meta: {
        'description': 'Manuel Schoebel is an experienced web developer and startup founder. He develops but also consults startups about internet topics.'
      },
      og: {
        'title': 'About - Manuel Schoebel',
        'image': 'http://manuel-schoebel.com/images/authors/manuel-schoebel.jpg'
      }
    }
  }
);