{"id":82861,"date":"2018-02-26T08:10:48","date_gmt":"2018-02-26T08:10:48","guid":{"rendered":"http:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/maps-app-javascript\/"},"modified":"2018-04-25T20:42:44","modified_gmt":"2018-04-25T20:42:44","slug":"maps-app-javascript","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/maps-app-javascript","title":{"rendered":"Maps App JavaScript"},"author":7451,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[37101],"tags":[36401,24921,27491,34531,36161],"industry":[],"product":[36831,36601],"class_list":["post-82861","blog","type-blog","status-publish","format-standard","hentry","category-announcements","tag-example-apps","tag-javascript","tag-jsapi4","tag-unit-testing","tag-web-development","product-js-api-arcgis","product-developers"],"acf":{"short_description":"Example App: Maps App JavaScript\r\nThe ArcGIS for Developers Example Apps are a great way to start working with the ArcGIS Platform through...","flexible_content":[{"acf_fc_layout":"content","content":"<h1>Example App: Maps App JavaScript<\/h1>\n<p>The <a href=\"https:\/\/developers.arcgis.com\/example-apps\/\" target=\"_blank\" rel=\"noopener\">ArcGIS for Developers Example Apps<\/a> are a great way to start working with the <a href=\"http:\/\/www.esri.com\/arcgis\/about-arcgis\" target=\"_blank\" rel=\"noopener\">ArcGIS Platform<\/a> through the lens of a specific ArcGIS product. These example applications are designed to address real world needs, and go beyond what you might normally come across in standard tutorials or samples. The goal is to provide developers some guidance on best practices on building applications with the ArcGIS platform. You can read more details about the Example Apps in this <a href=\"https:\/\/community.esri.com\/groups\/arcgis-example-apps\/blog\/2017\/10\/25\/ive-heard-about-example-apps-before-but-what-are-they\" target=\"_blank\" rel=\"noopener\">blog post<\/a>.<\/p>\n<p>For you eager souls that have been looking for something written in JavaScript, we put together the <strong><a href=\"https:\/\/developers.arcgis.com\/example-apps\/maps-app-javascript\/\" target=\"_blank\" rel=\"noopener\">Maps App\u00a0JavaScript<\/a><\/strong> using the latest version of the <a href=\"https:\/\/developers.arcgis.com\/javascript\/\" target=\"_blank\" rel=\"noopener\">ArcGIS API for JavaScript<\/a>. The code is hosted on GitHub in the <a href=\"https:\/\/github.com\/Esri\/maps-app-javascript\" target=\"_blank\" rel=\"noopener\">maps-app-javascript repository<\/a>.<\/p>\n<p><a href=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/02\/javascript-maps-app1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-99385\" src=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/02\/javascript-maps-app1.png\" alt=\"\" width=\"1278\" height=\"838\" \/><\/a><\/p>\n<h1>Modern Development Tooling<\/h1>\n<p>The Maps App includes all the modern essentials you would need to get started to build a full-scale application using the 4.x version of the ArcGIS API for JavaScript. The entire application is written in <a href=\"http:\/\/www.typescriptlang.org\/\" target=\"_blank\" rel=\"noopener\">TypeScript<\/a>, and uses <a href=\"https:\/\/webpack.js.org\/\" target=\"_blank\" rel=\"noopener\">Webpack<\/a>\u00a0in combination with the <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/guide\/get-api\/index.html#cdn\" target=\"_blank\" rel=\"noopener\">ArcGIS API for JavaScript<\/a>. The Maps App also utilizes <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Service_Worker_API\" target=\"_blank\" rel=\"noopener\">Service Workers<\/a> to help enable caching of data and files for faster startup times of your application.\u00a0Styling is provided with\u00a0<a href=\"http:\/\/esri.github.io\/calcite-web\/\" target=\"_blank\" rel=\"noopener\">Calcite Web<\/a>,\u00a0and the CSS tooling uses\u00a0<a href=\"http:\/\/sass-lang.com\/\" target=\"_blank\" rel=\"noopener\">Sass<\/a>\u00a0and\u00a0<a href=\"http:\/\/postcss.org\/\" target=\"_blank\" rel=\"noopener\">PostCSS<\/a>.\u00a0The Maps App also uses a variety of Webpack plugins to build optimized files and images used when you deploy your application.<\/p>\n<p>In addition to using all of these development tools, we also include a handy testing process. The Maps App uses <a href=\"https:\/\/theintern.io\/\" target=\"_blank\" rel=\"noopener\">Intern 4<\/a> for unit testing and provides a number of example unit tests you can review. Unit testing is a way to test pieces of your application to help isolate the issue, and can be extremely useful to find problems early in the development process.<\/p>\n<p><a href=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/02\/unit-test-example.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-99386\" src=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/02\/unit-test-example.png\" alt=\"\" width=\"1018\" height=\"573\" \/><\/a><\/p>\n<h1>Functionality Showcased<\/h1>\n<p>While most samples or tutorials emphasize one area of functionality, the <strong><a href=\"https:\/\/developers.arcgis.com\/example-apps\/maps-app-javascript\/\" target=\"_blank\" rel=\"noopener\">Maps App\u00a0JavaScript<\/a><\/strong> includes the kinds of features you would expect to find in a production application. Here is an outline of what you can accomplish with this app:<\/p>\n<ul>\n<li>Switching basemaps<\/li>\n<li>Loading webmaps from an organization<\/li>\n<li>Searching for an address or place (geocoding)<\/li>\n<li>Searching for a location on the map (reverse geocoding)<\/li>\n<li>Routing and turn by turn directions<\/li>\n<li>Authentication using OAuth2<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/noashx.github.io\/blog\/maps-app-gif.gif\" alt=\"\" width=\"875\" height=\"557\" \/><\/p>\n<h1>Widgets<\/h1>\n<p>Using widgets in your application can ease the development process by giving you pre-built chunks of functionality that you only need to configure, and don&#8217;t need to create from scratch. Building off these widgets and customizing them to suit your specific needs is also a great way develop apps. The\u00a0<strong><a href=\"https:\/\/developers.arcgis.com\/example-apps\/maps-app-javascript\/\" target=\"_blank\" rel=\"noopener\">Maps App JavaScript<\/a><\/strong> provides patterns for creating your own <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/guide\/custom-widget\/index.html\" target=\"_blank\" rel=\"noopener\">custom widgets<\/a> with the ArcGIS API for JavaScript. Some of the custom widgets provided in the Maps App:<\/p>\n<ul>\n<li>Alert &#8211; A simple notification widget.<\/li>\n<li>Authenticate &#8211; An authentication widget to sign in and out of an ArcGIS portal.<\/li>\n<li>WebMapBrowser &#8211; A simple webmap browser widget to change the webmap used in your application.<\/li>\n<li>UserNav &#8211; A menu container widget used in conjunction with the Authenticate widget.<\/li>\n<\/ul>\n<p>All these widgets are built using <a href=\"http:\/\/esri.github.io\/calcite-web\/\" target=\"_blank\" rel=\"noopener\">Calcite Web<\/a> to provide a consistent user experience.<\/p>\n<h1>Build Awesome Apps<\/h1>\n<p>We often get questions on how to build <a href=\"https:\/\/developers.arcgis.com\/javascript\/\" target=\"_blank\" rel=\"noopener\">ArcGIS API for JavaScript<\/a> applications with various tools, from Webpack to unit testing, so we hope the <strong><a href=\"https:\/\/developers.arcgis.com\/example-apps\/maps-app-javascript\/\" target=\"_blank\" rel=\"noopener\">Maps App JavaScript<\/a><\/strong> helps provide you with some guidance. We avoided using any 3rd party JavaScript frameworks for this application to give you a framework agnostic foundation for building scalable apps with the ArcGIS API for JavaScript. Feel free to take the example application and use it to start your own projects.<\/p>\n<p>Hack it, pick and choose the pieces you&#8217;re interested in, do with it as you please. Go forth, and build some awesome apps!<\/p>\n"}],"related_articles":"","card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/02\/javascript-maps-app_card.png","wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/02\/unit-test-example_wide.png","authors":[{"ID":7451,"user_firstname":"Noah","user_lastname":"Sager","nickname":"Noah Sager","user_nicename":"noah-sager","display_name":"Noah Sager","user_email":"NSager@esri.com","user_url":"https:\/\/www.noahsager.net\/","user_registered":"2018-03-21 18:21:19","user_description":"Passionate about JavaScript, maps, and writing (not necessarily in that order). Big fan of squirrels. Journeyman mapper of Utility Lines and Public Restrooms. Product Engineer on the ArcGIS API for JavaScript team. In Noah\u2019s spare time, he also enjoys parenting.","user_avatar":"<img alt='' src='https:\/\/secure.gravatar.com\/avatar\/6807cdccf3ddd5b30b84cdf9368ce6736c3d0ff9bd0a09c1f5efc03253069b64?s=96&#038;d=blank&#038;r=g' srcset='https:\/\/secure.gravatar.com\/avatar\/6807cdccf3ddd5b30b84cdf9368ce6736c3d0ff9bd0a09c1f5efc03253069b64?s=192&#038;d=blank&#038;r=g 2x' class='avatar avatar-96 photo' height='96' width='96' loading='lazy' decoding='async'\/>"},{"ID":7531,"user_firstname":"Rene","user_lastname":"Rubalcava","nickname":"r.rubalcava","user_nicename":"r-rubalcava","display_name":"Rene Rubalcava","user_email":"RRubalcava@esri.com","user_url":"http:\/\/odoe.net\/","user_registered":"2018-03-21 18:21:22","user_description":"SoftWhere Developer, blogger, author, geodev, and connoisseur of programming languages and JavaScript frameworks.\r\n\r\nI blog at https:\/\/odoe.net and post videos at https:\/\/www.youtube.com\/c\/renerubalcava\r\n\r\nI write code, sometimes it even works.","user_avatar":"<img data-del=\"avatar\" src='https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/03\/ReneRubalcava-213x200.png' class='avatar pp-user-avatar avatar-96 photo ' height='96' width='96'\/>"}]},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Maps App JavaScript<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/maps-app-javascript\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Maps App JavaScript\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/maps-app-javascript\" \/>\n<meta property=\"og:site_name\" content=\"ArcGIS Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/esrigis\/\" \/>\n<meta property=\"article:modified_time\" content=\"2018-04-25T20:42:44+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@ESRI\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/maps-app-javascript#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/maps-app-javascript\"},\"author\":{\"name\":\"Noah Sager\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/31358cd525c152696fcd5fe96f49e068\"},\"headline\":\"Maps App JavaScript\",\"datePublished\":\"2018-02-26T08:10:48+00:00\",\"dateModified\":\"2018-04-25T20:42:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/maps-app-javascript\"},\"wordCount\":3,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"Example Apps\",\"JavaScript\",\"jsapi4\",\"Unit Testing\",\"Web Development\"],\"articleSection\":[\"Announcements\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/maps-app-javascript\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/maps-app-javascript\",\"name\":\"Maps App JavaScript\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2018-02-26T08:10:48+00:00\",\"dateModified\":\"2018-04-25T20:42:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/maps-app-javascript#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/maps-app-javascript\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/maps-app-javascript#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Maps App JavaScript\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"name\":\"ArcGIS Blog\",\"description\":\"Get insider info from Esri product teams\",\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\",\"name\":\"Esri\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"width\":400,\"height\":400,\"caption\":\"Esri\"},\"image\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/esrigis\/\",\"https:\/\/x.com\/ESRI\",\"https:\/\/www.linkedin.com\/company\/5311\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/31358cd525c152696fcd5fe96f49e068\",\"name\":\"Noah Sager\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6807cdccf3ddd5b30b84cdf9368ce6736c3d0ff9bd0a09c1f5efc03253069b64?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6807cdccf3ddd5b30b84cdf9368ce6736c3d0ff9bd0a09c1f5efc03253069b64?s=96&d=blank&r=g\",\"caption\":\"Noah Sager\"},\"description\":\"Passionate about JavaScript, maps, and writing (not necessarily in that order). Big fan of squirrels. Journeyman mapper of Utility Lines and Public Restrooms. Product Engineer on the ArcGIS API for JavaScript team. In Noah\u2019s spare time, he also enjoys parenting.\",\"sameAs\":[\"https:\/\/www.noahsager.net\/\",\"https:\/\/www.linkedin.com\/in\/noah-sager\",\"https:\/\/x.com\/noashx\"],\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/author\/noah-sager\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Maps App JavaScript","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/maps-app-javascript","og_locale":"en_US","og_type":"article","og_title":"Maps App JavaScript","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/maps-app-javascript","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2018-04-25T20:42:44+00:00","twitter_card":"summary_large_image","twitter_site":"@ESRI","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/maps-app-javascript#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/maps-app-javascript"},"author":{"name":"Noah Sager","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/31358cd525c152696fcd5fe96f49e068"},"headline":"Maps App JavaScript","datePublished":"2018-02-26T08:10:48+00:00","dateModified":"2018-04-25T20:42:44+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/maps-app-javascript"},"wordCount":3,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["Example Apps","JavaScript","jsapi4","Unit Testing","Web Development"],"articleSection":["Announcements"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/maps-app-javascript","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/maps-app-javascript","name":"Maps App JavaScript","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2018-02-26T08:10:48+00:00","dateModified":"2018-04-25T20:42:44+00:00","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/maps-app-javascript#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/maps-app-javascript"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/maps-app-javascript#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"Maps App JavaScript"}]},{"@type":"WebSite","@id":"https:\/\/www.esri.com\/arcgis-blog\/#website","url":"https:\/\/www.esri.com\/arcgis-blog\/","name":"ArcGIS Blog","description":"Get insider info from Esri product teams","publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization","name":"Esri","url":"https:\/\/www.esri.com\/arcgis-blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","width":400,"height":400,"caption":"Esri"},"image":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/esrigis\/","https:\/\/x.com\/ESRI","https:\/\/www.linkedin.com\/company\/5311\/"]},{"@type":"Person","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/31358cd525c152696fcd5fe96f49e068","name":"Noah Sager","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6807cdccf3ddd5b30b84cdf9368ce6736c3d0ff9bd0a09c1f5efc03253069b64?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6807cdccf3ddd5b30b84cdf9368ce6736c3d0ff9bd0a09c1f5efc03253069b64?s=96&d=blank&r=g","caption":"Noah Sager"},"description":"Passionate about JavaScript, maps, and writing (not necessarily in that order). Big fan of squirrels. Journeyman mapper of Utility Lines and Public Restrooms. Product Engineer on the ArcGIS API for JavaScript team. In Noah\u2019s spare time, he also enjoys parenting.","sameAs":["https:\/\/www.noahsager.net\/","https:\/\/www.linkedin.com\/in\/noah-sager","https:\/\/x.com\/noashx"],"url":"https:\/\/www.esri.com\/arcgis-blog\/author\/noah-sager"}]}},"text_date":"February 26, 2018","author_name":"Multiple Authors","author_page":"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/maps-app-javascript","custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/02\/unit-test-example_wide.png","primary_product":"ArcGIS Maps SDK for JavaScript","tag_data":[{"term_id":36401,"name":"Example Apps","slug":"example-apps","term_group":0,"term_taxonomy_id":36401,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":24921,"name":"JavaScript","slug":"javascript","term_group":0,"term_taxonomy_id":24921,"taxonomy":"post_tag","description":"","parent":0,"count":151,"filter":"raw"},{"term_id":27491,"name":"jsapi4","slug":"jsapi4","term_group":0,"term_taxonomy_id":27491,"taxonomy":"post_tag","description":"","parent":0,"count":111,"filter":"raw"},{"term_id":34531,"name":"Unit Testing","slug":"unit-testing","term_group":0,"term_taxonomy_id":34531,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":36161,"name":"Web Development","slug":"web-development","term_group":0,"term_taxonomy_id":36161,"taxonomy":"post_tag","description":"","parent":0,"count":19,"filter":"raw"}],"category_data":[{"term_id":37101,"name":"Announcements","slug":"announcements","term_group":0,"term_taxonomy_id":37101,"taxonomy":"category","description":"","parent":0,"count":2011,"filter":"raw"}],"product_data":[{"term_id":36831,"name":"ArcGIS Maps SDK for JavaScript","slug":"js-api-arcgis","term_group":0,"term_taxonomy_id":36831,"taxonomy":"product","description":"","parent":36601,"count":364,"filter":"raw"},{"term_id":36601,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":36601,"taxonomy":"product","description":"","parent":0,"count":770,"filter":"raw"}],"primary_product_link":"https:\/\/www.esri.com\/arcgis-blog\/?s=#&products=js-api-arcgis","_links":{"self":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/82861","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/users\/7451"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=82861"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/82861\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=82861"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=82861"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=82861"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=82861"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=82861"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}