小编Sam*_*eri的帖子

无法从大括号括起来的初始化列表转换为std元组

作为一个更大项目的一部分,我正在玩std::tuple模板; 考虑以下代码:

template <typename ...T> void foo(tuple<T...> t) {}
void bar(tuple<int, char> t) {}
tuple<int, char> quxx() { return {1, 'S'}; }

int main(int argc, char const *argv[])
{
    foo({1, 'S'});           // error
    foo(make_tuple(1, 'S')); // ok
    bar({1, 'S'});           // ok
    quxx();                  // ok
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

根据这个答案, C++ 17支持从复制列表初始化开始的元组初始化,但是由于我得到以下错误(GCC 7.2.0),所以似乎这种支持是有限的:

main.cpp: In function 'int main(int, const char**)':
main.cpp:14:17: error: could not convert '{1, 'S'}' from '<brace-enclosed initializer list>' to 'std::tuple<>'
     foo({1, 'S'}); // error …
Run Code Online (Sandbox Code Playgroud)

c++ initializer-list variadic-templates uniform-initialization c++17

8
推荐指数
1
解决办法
3227
查看次数

AngularJS和SEO - 单页应用程序中的404错误

我正在使用Express和AngularJS构建一个网站,但我对这项技术还不熟悉,而且我来自旧的普通PHP/HTML/JS.我理解这种新方法的基础知识,但我对SEO的最佳实践感到好奇.

假设我有一个像这样构建的网站:

  • REST ish API与之交互,负责身份验证,会话和提供正确的数据
  • 首页加载并静态提供的单页应用程序,负责使用AngularJS加载内容

这是一个草案:

- /api (dynamic content returns JSON)
  |
  + /login
  + /logout
  + /register
  + /music/:title
  + /music/:title/upvote
  + /user/:name
  + /user/:name/subscribe
  + /tag/:name
  + /search/:query
  + ...
- / (everything is static here)
  |
  + index.html
  + /templates
    |
    + music.html
    + user.html
    + search.html
  + ...
Run Code Online (Sandbox Code Playgroud)

现在,每当用户访问页面时,index.html返回该页面然后继续使用Angular"组合"自己.

因此,如果找不到资源(404 NOT FOUND由API使用JSON),或者.otherwise将调用AngularJS 但是爬虫如何理解它是404(死链接)并在第一页返回时删除链接打开URL是索引,状态代码是200?

手动解决方案可能是在首次需要索引时解析URL,调用API以查看资源是否有效并在必要时抛出错误,但在这种情况下,如果请求的资源有效则会有一个双重打电话给API,这不好.

处理此问题和其他类似SEO相关的最佳实践最先进的是什么?

我已经阅读了大量有关它的文章,但它们都被弃用或基于预渲染(我想避免).

非常感谢你给我的任何帮助和建议.

seo html5 express angularjs single-page-application

5
推荐指数
0
解决办法
404
查看次数