{"id":27082,"date":"2015-10-05T11:02:09","date_gmt":"2015-10-05T05:32:09","guid":{"rendered":"http:\/\/www.tothenew.com\/blog\/?p=27082"},"modified":"2020-01-08T16:56:35","modified_gmt":"2020-01-08T11:26:35","slug":"angular-seo","status":"publish","type":"post","link":"https:\/\/www.tothenew.com\/blog\/angular-seo\/","title":{"rendered":"Angular + SEO"},"content":{"rendered":"<p>There&#8217;s a phase in every project when development reaches its completion and next step is to make it search engine friendly.<\/p>\n<p>When I had to do this task in my project, at that time I was a little bit confident that this is a very simple task and we just need to set meta tags and some other html tags so that google can crawl easily. But while setting these tags with the <a title=\"Building Intuitive Frontend Interfaces with AngularJS\" href=\"http:\/\/www.tothenew.com\/blog\/building-intuitive-frontend-interfaces-with-angularjs\/\">help of angular<\/a>, what we noticed was, crawled pages are not parsed \/rendered and have angular expressions ({{}}) for meta tags.<\/p>\n<p>Crawlers (or bots) are designed to crawl HTML content of web pages but due to AJAX operations for asynchronous data fetching, this became a problem as it takes sometime to render page and show dynamic content on it. Similarly, <a title=\"AngularJS development company\" href=\"http:\/\/www.tothenew.com\/front-end-angularjs-development\">AngularJS<\/a> also use asynchronous model, <a href=\"http:\/\/www.tothenew.com\/blog\/optimization-of-angularjs-single-page-applications-for-web-crawlers\/\">which creates a problem for Google crawlers<\/a>.<\/p>\n<p>Google looks for <strong>#!<\/strong> in our site urls and then takes everything after the #! and adds it in <strong>_escaped_fragment_<\/strong> query parameter. Some developers create basic html pages with real data and serve these pages from server side at the time of crawling. So we thought that, why not we render same pages with <strong>PhantomJS<\/strong> on serve side which has<strong> _escaped_fragment_<\/strong>.<\/p>\n<p>There are few steps which we followed in our application to make it crawlable.<\/p>\n<p><strong>Client Side : &#8211;<\/strong><\/p>\n<p>1. Adding meta tag to the head of your page.<\/p>\n<p>[js]<\/p>\n<p>&lt;meta name=&quot;fragment&quot; content=&quot;!&quot;&gt;<\/p>\n<p>[\/js]<\/p>\n<p>This helps search engine crawlers that this page has dynamic JavaScript content that needs to be crawled.<\/p>\n<p>2. If you use hash urls (#), change them to the hash-bang (#!) by \u00a0adding<\/p>\n<p>[js]<\/p>\n<p>$locationProvider.hashPrefix(&#8216;!&#8217;)<\/p>\n<p>[\/js]<\/p>\n<p>in your app.js.\u00a0You would not see any diffrence if you are using html5Mode.<\/p>\n<p>3. As each page may have different seo data so you can create a service or a util method to set <a title=\"SEO in 2020\" href=\"https:\/\/www.tothenew.com\/blog\/seo-in-2020-trends-predictions-tips-strategy\/\">SEO data<\/a> . I would prefer to use <strong>$rootScope<\/strong> to store <strong>SEO<\/strong>\u00a0data object so that it will be used in any controller and easily\u00a0bind in <strong>index.html<\/strong> page.<\/p>\n<p><strong>Util Service : &#8211;<\/strong><\/p>\n<p>[js]<\/p>\n<p>(function (window, angular) {<\/p>\n<p>angular.module(&#8216;myApp&#8217;).factory(&#8216;UtilService&#8217;, [&#8216;$rootScope&#8217;,\u00a0function ($rootScope) {<\/p>\n<p>\tvar seoInformation = function (seoData) {<\/p>\n<p>\t\t$rootScope.seoInformation = {};<\/p>\n<p>\t\tif (seoData) {<\/p>\n<p>\t\t\t$rootScope.seoInformation.pageTitle = seoData.pageTitle;<\/p>\n<p>\t\t\t$rootScope.seoInformation.metaKeywords = seoData.metaKeywords;<\/p>\n<p>\t\t\t$rootScope.seoInformation.metaDescription = seoData.metaDescription;<\/p>\n<p>\t\t}<\/p>\n<p>\t};<\/p>\n<p>\treturn {<\/p>\n<p>\t\tseoInformation: seoInformation<\/p>\n<p>\t};<\/p>\n<p>}]);<\/p>\n<p>})(window, angular);<\/p>\n<p>[\/js]<\/p>\n<p><strong>My Controller :-<\/strong><\/p>\n<p>[js]<\/p>\n<p>(function (jquery, angular) {<\/p>\n<p>angular.module(&#8216;myApp&#8217;).controller(&#8216;MyCtrl&#8217;, [&#8216;$state&#8217;, &#8216;UtilService&#8217;, function ($state, UtilService) {<\/p>\n<p>\tvar _that = this;<\/p>\n<p>\tvar _setSEOInformation = function() {<\/p>\n<p>\t\tvar seoInformation = {<\/p>\n<p>\t\t\tpageTitle : &#8216;My title&#8217;,<\/p>\n<p>\t\t\tmetaKeywords : &#8216;My meta keywords&#8217;,<\/p>\n<p>\t\t\tmetaDescription : &#8216;My meta Description&#8217;<\/p>\n<p>\t\t};<\/p>\n<p>\t\tUtilService.seoInformation(seoInformation);<\/p>\n<p>\t};<\/p>\n<p>\t_that.init = function () {<\/p>\n<p>\t\t\/\/ Set Seo Information<\/p>\n<p>\t\t_setSEOInformation();<\/p>\n<p>\t};<\/p>\n<p>}]);<\/p>\n<p>})(jQuery, angular);<\/p>\n<p>[\/js]<\/p>\n<p><strong>Server side : &#8211;<\/strong><\/p>\n<p>Because we serve our angular app using node server, we use <strong>node-phantom<\/strong> module to serve crawle pages by writting a middleware.<\/p>\n<p>1. Require node-phantom module in you file.<\/p>\n<p>[js]<\/p>\n<p>var phantom = require(&#8216;node-phantom&#8217;);<\/p>\n<p>[\/js]<\/p>\n<p>2. Write a middleware for any request and serve accordinglly.<\/p>\n<p>[js]<\/p>\n<p>app.use(function (request, response, next) {<\/p>\n<p>\tvar pageUrl = request.query[&quot;_escaped_fragment_&quot;];<\/p>\n<p>\tif (pageUrl !== undefined) {<\/p>\n<p>\t\tphantom.create(function (err, ph) {<\/p>\n<p>\t\treturn ph.createPage(function (err, page) {<\/p>\n<p>\t\t\tvar fullUrl = request.protocol + &#8216;:\/\/&#8217; + request.get(&#8216;host&#8217;) + pageUrl;<\/p>\n<p>\t\t\treturn page.open(fullUrl, function (err, status) {<\/p>\n<p>\t\t\tpage.get(&#8216;content&#8217;, function (err, html) {<\/p>\n<p>\t\t\t\tresponse.statusCode = 200;<\/p>\n<p>\t\t\t\tresponse.end(html);<\/p>\n<p>\t\t\t\tph.exit();<\/p>\n<p>\t\t\t});<\/p>\n<p>\t});<\/p>\n<p>});<\/p>\n<p>});<\/p>\n<p>} else {<\/p>\n<p>\tnext();<\/p>\n<p>}<\/p>\n<p>});<\/p>\n<p>[\/js]<\/p>\n<p>&nbsp;<\/p>\n<p>In this way we can make our webpages crawlable in Angular js. Hope this will help you!!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>There&#8217;s a phase in every project when development reaches its completion and next step is to make it search engine friendly. When I had to do this task in my project, at that time I was a little bit confident that this is a very simple task and we just need to set meta tags [&hellip;]<\/p>\n","protected":false},"author":146,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":11,"footnotes":""},"categories":[1439,3429,1185],"tags":[3955,1186,955,4697,1226,2409,55,2411,404],"class_list":["post-27082","post","type-post","status-publish","format-standard","hentry","category-angular","category-front-end-development","category-node-js-2","tag-angular-development","tag-angular-js","tag-angularjs","tag-angularjs-development-company","tag-angularjs-seo","tag-google-crawler","tag-javascript","tag-pre-render-your-angular-app","tag-seo"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"There&#039;s a phase in every project when development reaches its completion and next step is to make it search engine friendly. When I had to do this task in my project, at that time I was a little bit confident that this is a very simple task and we just need to set meta tags\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Rubi Saini\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.tothenew.com\/blog\/angular-seo\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"TO THE NEW BLOG\" \/>\n\t\t<meta property=\"og:type\" content=\"blog\" \/>\n\t\t<meta property=\"og:title\" content=\"Angular + SEO | TO THE NEW Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"There&#039;s a phase in every project when development reaches its completion and next step is to make it search engine friendly. When I had to do this task in my project, at that time I was a little bit confident that this is a very simple task and we just need to set meta tags\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.tothenew.com\/blog\/angular-seo\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/www.tothenew.com\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/www.tothenew.com\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@tothenew\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Angular + SEO | TO THE NEW Blog\" \/>\n\t\t<meta name=\"twitter:description\" content=\"There&#039;s a phase in every project when development reaches its completion and next step is to make it search engine friendly. When I had to do this task in my project, at that time I was a little bit confident that this is a very simple task and we just need to set meta tags\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/www.tothenew.com\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/angular-seo\\\/#article\",\"name\":\"Angular + SEO | TO THE NEW Blog\",\"headline\":\"Angular + SEO\",\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/rubi-saini\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\"},\"datePublished\":\"2015-10-05T11:02:09+05:30\",\"dateModified\":\"2020-01-08T16:56:35+05:30\",\"inLanguage\":\"en-US\",\"commentCount\":1,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/angular-seo\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/angular-seo\\\/#webpage\"},\"articleSection\":\"AngularJS, Front End Development, Node.js, angular development, Angular.js, AngularJS, AngularJS Development Company, angularjs seo, google crawler, javascript, Pre Render your angular app, SEO\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/angular-seo\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.tothenew.com\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/node-js-2\\\/#listItem\",\"name\":\"Node.js\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/node-js-2\\\/#listItem\",\"position\":2,\"name\":\"Node.js\",\"item\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/node-js-2\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/angular-seo\\\/#listItem\",\"name\":\"Angular + SEO\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/angular-seo\\\/#listItem\",\"position\":3,\"name\":\"Angular + SEO\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/node-js-2\\\/#listItem\",\"name\":\"Node.js\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\",\"name\":\"TO THE NEW Blog\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/rubi-saini\\\/#author\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/rubi-saini\\\/\",\"name\":\"Rubi Saini\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/angular-seo\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0669cc01fd681ba501b5f5ebc7746e47f4296bfc9a4f0ac2e789cee74fb675f5?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Rubi Saini\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/angular-seo\\\/#webpage\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/angular-seo\\\/\",\"name\":\"Angular + SEO | TO THE NEW Blog\",\"description\":\"There's a phase in every project when development reaches its completion and next step is to make it search engine friendly. When I had to do this task in my project, at that time I was a little bit confident that this is a very simple task and we just need to set meta tags\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/angular-seo\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/rubi-saini\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/rubi-saini\\\/#author\"},\"datePublished\":\"2015-10-05T11:02:09+05:30\",\"dateModified\":\"2020-01-08T16:56:35+05:30\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/\",\"name\":\"TO THE NEW Blog\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Angular + SEO | TO THE NEW Blog","description":"There's a phase in every project when development reaches its completion and next step is to make it search engine friendly. When I had to do this task in my project, at that time I was a little bit confident that this is a very simple task and we just need to set meta tags","canonical_url":"https:\/\/www.tothenew.com\/blog\/angular-seo\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.tothenew.com\/blog\/angular-seo\/#article","name":"Angular + SEO | TO THE NEW Blog","headline":"Angular + SEO","author":{"@id":"https:\/\/www.tothenew.com\/blog\/author\/rubi-saini\/#author"},"publisher":{"@id":"https:\/\/www.tothenew.com\/blog\/#organization"},"datePublished":"2015-10-05T11:02:09+05:30","dateModified":"2020-01-08T16:56:35+05:30","inLanguage":"en-US","commentCount":1,"mainEntityOfPage":{"@id":"https:\/\/www.tothenew.com\/blog\/angular-seo\/#webpage"},"isPartOf":{"@id":"https:\/\/www.tothenew.com\/blog\/angular-seo\/#webpage"},"articleSection":"AngularJS, Front End Development, Node.js, angular development, Angular.js, AngularJS, AngularJS Development Company, angularjs seo, google crawler, javascript, Pre Render your angular app, SEO"},{"@type":"BreadcrumbList","@id":"https:\/\/www.tothenew.com\/blog\/angular-seo\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.tothenew.com\/blog#listItem","position":1,"name":"Home","item":"https:\/\/www.tothenew.com\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/www.tothenew.com\/blog\/category\/node-js-2\/#listItem","name":"Node.js"}},{"@type":"ListItem","@id":"https:\/\/www.tothenew.com\/blog\/category\/node-js-2\/#listItem","position":2,"name":"Node.js","item":"https:\/\/www.tothenew.com\/blog\/category\/node-js-2\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.tothenew.com\/blog\/angular-seo\/#listItem","name":"Angular + SEO"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.tothenew.com\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.tothenew.com\/blog\/angular-seo\/#listItem","position":3,"name":"Angular + SEO","previousItem":{"@type":"ListItem","@id":"https:\/\/www.tothenew.com\/blog\/category\/node-js-2\/#listItem","name":"Node.js"}}]},{"@type":"Organization","@id":"https:\/\/www.tothenew.com\/blog\/#organization","name":"TO THE NEW Blog","url":"https:\/\/www.tothenew.com\/blog\/"},{"@type":"Person","@id":"https:\/\/www.tothenew.com\/blog\/author\/rubi-saini\/#author","url":"https:\/\/www.tothenew.com\/blog\/author\/rubi-saini\/","name":"Rubi Saini","image":{"@type":"ImageObject","@id":"https:\/\/www.tothenew.com\/blog\/angular-seo\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/0669cc01fd681ba501b5f5ebc7746e47f4296bfc9a4f0ac2e789cee74fb675f5?s=96&d=mm&r=g","width":96,"height":96,"caption":"Rubi Saini"}},{"@type":"WebPage","@id":"https:\/\/www.tothenew.com\/blog\/angular-seo\/#webpage","url":"https:\/\/www.tothenew.com\/blog\/angular-seo\/","name":"Angular + SEO | TO THE NEW Blog","description":"There's a phase in every project when development reaches its completion and next step is to make it search engine friendly. When I had to do this task in my project, at that time I was a little bit confident that this is a very simple task and we just need to set meta tags","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.tothenew.com\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.tothenew.com\/blog\/angular-seo\/#breadcrumblist"},"author":{"@id":"https:\/\/www.tothenew.com\/blog\/author\/rubi-saini\/#author"},"creator":{"@id":"https:\/\/www.tothenew.com\/blog\/author\/rubi-saini\/#author"},"datePublished":"2015-10-05T11:02:09+05:30","dateModified":"2020-01-08T16:56:35+05:30"},{"@type":"WebSite","@id":"https:\/\/www.tothenew.com\/blog\/#website","url":"https:\/\/www.tothenew.com\/blog\/","name":"TO THE NEW Blog","inLanguage":"en-US","publisher":{"@id":"https:\/\/www.tothenew.com\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"TO THE NEW BLOG","og:type":"blog","og:title":"Angular + SEO | TO THE NEW Blog","og:description":"There's a phase in every project when development reaches its completion and next step is to make it search engine friendly. When I had to do this task in my project, at that time I was a little bit confident that this is a very simple task and we just need to set meta tags","og:url":"https:\/\/www.tothenew.com\/blog\/angular-seo\/","og:image":"https:\/\/www.tothenew.com\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png","og:image:secure_url":"https:\/\/www.tothenew.com\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png","twitter:card":"summary","twitter:site":"@tothenew","twitter:title":"Angular + SEO | TO THE NEW Blog","twitter:description":"There's a phase in every project when development reaches its completion and next step is to make it search engine friendly. When I had to do this task in my project, at that time I was a little bit confident that this is a very simple task and we just need to set meta tags","twitter:image":"https:\/\/www.tothenew.com\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png"},"aioseo_meta_data":{"post_id":"27082","title":"Angular + SEO | #site_title","description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":"","og_description":"","og_object_type":"blog","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":"","og_article_tags":"","twitter_use_og":false,"twitter_card":"summary","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"created":"2021-04-29 12:20:25","updated":"2024-02-29 08:30:37","focus_keyword":null,"additional_keywords":null,"truseo_locale":null,"ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.tothenew.com\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.tothenew.com\/blog\/category\/node-js-2\/\" title=\"Node.js\">Node.js<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tAngular + SEO\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.tothenew.com\/blog"},{"label":"Node.js","link":"https:\/\/www.tothenew.com\/blog\/category\/node-js-2\/"},{"label":"Angular + SEO","link":"https:\/\/www.tothenew.com\/blog\/angular-seo\/"}],"_links":{"self":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/27082","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/users\/146"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/comments?post=27082"}],"version-history":[{"count":1,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/27082\/revisions"}],"predecessor-version":[{"id":53408,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/27082\/revisions\/53408"}],"wp:attachment":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/media?parent=27082"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/categories?post=27082"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/tags?post=27082"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}