AngularJS 的每个内容都需要一个单独的页面吗?

Do I need a separate page for each piece of content with AngularJS?

背景: 我正在创建一个股票市场应用程序,其中包含公司描述、历史、行业、股价等,并允许用户添加新公司随心所欲。当用户想要阅读有关特定公司的信息时,he/she 只需在搜索框中输入股票代码,页面就会更新为该公司的内容。我计划使用 MySQL 数据库来存储静态内容信息,例如描述,PHP 作为服务器端语言,API 用于动态数据(例如股票价格),AngularJS 用于前端-结束开发,特别是消除不断的页面重新加载并加快开发周期。

问题 1(1 个公司 = 1 个页面?): 最初,我打算通过 $ 创建 AJAX 请求http 然后简单地用生成的 {{content}} 填充 html 模板根据该请求,但后来我听说为每个内容创建一个单独的页面也是一种常用方法,并且是 SEO 的首选方法(本质上,URL 看起来像这样:www.mysite.com/#/main/page 对比 www.mysite.com/main/page/company1.php 分别用于第一种和第二种方法)。如果在这种情况下 none 这些方法是正确的,那么哪种方法确实是首选方法或最佳实践是什么?

问题 2 (SEO/Sitemap): 现在如果我坚持使用第一种方法 ($http),我意识到搜索引擎抓取工具将难以识别页面,因为,从技术上讲,没有任何包含内容的页面;它们都是动态生成的。搜索引擎是否真的找不到我的网页?如果是,是否有解决此问题的方法?

非常感谢!

Google 可以索引 javascript 网站(由 Google 2014 年 5 月宣布),但 Google 可能无法正确呈现或索引 angular 网站。需要技术 SEO 专业知识来确保您拥有一个 SEO 友好的站点架构,包括页面标题、元标记、h1 等,并针对正确的关键字。开发人员可能会发现他们的网站仅部分呈现和编入索引,或者根本没有。

您可以采取措施,例如使用 $locationProvider.html5Mode(true); 删除 AngularJS 的默认值 hashtagged-URLs。

人们还普遍认为,需要为爬虫提供 angular 网站的呈现版本才能实现良好的搜索性能。 (其中一项服务是 Prerender.io)。

使用 Angular,您可以轻松地为每段内容创建唯一的 URL。为此,您可以使用路由器(参见https://docs.angularjs.org/api/ngRoute or https://angular.github.io/router/getting-started)。它允许您的应用程序:

  • 当用户请求 URL、
  • 时加载并显示正确的内容
  • 当您的用户浏览网站时更新地址栏中的 URL。

因此,您的用户将能够共享链接、书签内容...

对于机器人,您需要提供 HTML 个快照。可以使用 SEO4Ajax. Alternatively, if you want to do it yourself, there is an excellent tutorial here.

之类的服务来完成