作为一个更大项目的一部分,我正在玩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
我正在使用Express和AngularJS构建一个网站,但我对这项技术还不熟悉,而且我来自旧的普通PHP/HTML/JS.我理解这种新方法的基础知识,但我对SEO的最佳实践感到好奇.
假设我有一个像这样构建的网站:
这是一个草案:
- /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相关的最佳实践最先进的是什么?
我已经阅读了大量有关它的文章,但它们都被弃用或基于预渲染(我想避免).
非常感谢你给我的任何帮助和建议.