{"id":1164472,"date":"2021-04-26T14:15:32","date_gmt":"2021-04-26T21:15:32","guid":{"rendered":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=1164472"},"modified":"2021-04-26T14:36:48","modified_gmt":"2021-04-26T21:36:48","slug":"javascript-just-works","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/javascript-just-works","title":{"rendered":"JavaScript Just Works"},"author":7531,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[22941],"tags":[96582,38851,27491,176452,36161],"industry":[],"product":[36831,36601],"class_list":["post-1164472","blog","type-blog","status-publish","format-standard","hentry","category-mapping","tag-arcgis-api-for-javascript","tag-developers","tag-jsapi4","tag-mapping","tag-web-development","product-js-api-arcgis","product-developers"],"acf":{"short_description":"It's never been easier to build modern web applications using the ArcGIS API for JavaScript. Trust me.","flexible_content":[{"acf_fc_layout":"content","content":"<p><span class=\"TextRun SCXW62481337 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW62481337 BCX0\">When I joined Esri, one of the first tasks I was given was to improve the integration of the ArcGIS API for JavaScript with Ember. <\/span><\/span><span class=\"TextRun SCXW62481337 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW62481337 BCX0\">This was a fun assignment that ended up becoming the <a href=\"https:\/\/github.com\/esri\/ember-cli-amd\">ember-cli-amd<\/a><\/span><\/span><span class=\"TextRun SCXW62481337 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SpellingErrorV2 SCXW62481337 BCX0\">\u00a0project<\/span><\/span><span class=\"TextRun SCXW62481337 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW62481337 BCX0\">. Since then, we\u2019ve worked on documentation and guides on integrating with other frameworks and build tools, including a <a href=\"https:\/\/github.com\/Esri\/arcgis-webpack-plugin\">webpack plugin<\/a><\/span><\/span><span class=\"TextRun SCXW62481337 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW62481337 BCX0\">.\u00a0<\/span><\/span><span class=\"TextRun SCXW62481337 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW62481337 BCX0\">All the while, the team was working hard on migrating the source of the API to <a href=\"https:\/\/www.typescriptlang.org\/\">TypeScript<\/a>.<\/span><\/span><span class=\"TextRun SCXW62481337 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW62481337 BCX0\">\u00a0There are numerous benefits<\/span><\/span><span class=\"TextRun SCXW62481337 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW62481337 BCX0\"> to a full TypeScript migration, but a key benefit to users is that the API can be deployed as <a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/es-modules-are-coming-soon-in-the-arcgis-api-for-javascript\/\">ES Modules<\/a> (ESM). This is available via <a href=\"https:\/\/www.npmjs.com\/package\/@arcgis\/core\">@arcgis\/core<\/a>. <span class=\"TextRun SCXW222410254 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW222410254 BCX0\">How\u00a0<\/span><\/span><span class=\"TextRun SCXW222410254 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW222410254 BCX0\">does this help users?<\/span><\/span><\/span><\/span><\/p>\n"},{"acf_fc_layout":"content","content":"<p>With the initial beta release of @arcgis\/core, the only requirement was that you copy the static assets locally. <span class=\"TextRun SCXW252708455 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW252708455 BCX0\">These assets include workers, web assembly, styles, fonts, images, and language files. <\/span><\/span><span class=\"TextRun SCXW252708455 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW252708455 BCX0\">At 4.19, copying these assets is now optional. By default, the static assets will be loaded via the CDN.<\/span><\/span><span class=\"TextRun SCXW252708455 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW252708455 BCX0\"> \u00a0<\/span><\/span><span class=\"TextRun SCXW252708455 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW252708455 BCX0\">If you want to completely create an isolated local build, such as for a local network with no outside in<\/span><\/span><span class=\"TextRun SCXW252708455 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW252708455 BCX0\">ternet access<\/span><\/span><span class=\"TextRun SCXW252708455 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW252708455 BCX0\">, you still have the option to copy the static assets. This makes building the API more flexible by default. It also makes the builds even easier than before.<\/span><\/span><\/p>\n"},{"acf_fc_layout":"content","content":"<p>Let\u2019s look at a couple of build tools.\u00a0Take this basic code snippet for example. How could we use various build tools to build it?<\/p>\n"},{"acf_fc_layout":"content","content":"<pre><code style=\"padding: 0.5em;color: #333;background: #f8f8f8\">\r\n<span style=\"color: #333;font-weight: bold\">import<\/span> WebMap <span style=\"color: #333;font-weight: bold\">from<\/span> <span style=\"color: #d14\">\"@arcgis\/core\/WebMap\"<\/span>;\r\n<span style=\"color: #333;font-weight: bold\">import<\/span> MapView <span style=\"color: #333;font-weight: bold\">from<\/span> <span style=\"color: #d14\">\"@arcgis\/core\/views\/MapView\"<\/span>;\r\n\r\n<span style=\"color: #333;font-weight: bold\">const<\/span> webMap = <span style=\"color: #333;font-weight: bold\">new<\/span> WebMap({\r\n    portalItem: {\r\n        id: <span style=\"color: #d14\">\"56b5bd522c52409c90d902285732e9f1\"<\/span>,\r\n    },\r\n});\r\n\r\n<span style=\"color: #333;font-weight: bold\">const<\/span> view = <span style=\"color: #333;font-weight: bold\">new<\/span> MapView({\r\n    container: <span style=\"color: #d14\">\"viewDiv\"<\/span>,\r\n    map: webMap\r\n});\r\n<\/code><\/pre>\n"},{"acf_fc_layout":"content","content":"<h3>Webpack<\/h3>\n<p><span class=\"TextRun SCXW209073227 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW209073227 BCX0\">One of the most popular build tools is <a href=\"https:\/\/webpack.js.org\/\">webpack<\/a>. Previously, if you wanted to use the ArcGIS API for JavaScript with webpack, you were required to use our <a href=\"https:\/\/github.com\/Esri\/arcgis-webpack-plugin\">webpack-plugin<\/a>.<\/span><\/span><span class=\"TextRun SCXW209073227 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW209073227 BCX0\"> With the ESM build, it\u2019s completely optional. You could use our webpack-plugin to help you copy over the assets if you want to use them locally, but even<\/span><\/span><span class=\"TextRun SCXW209073227 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW209073227 BCX0\">\u00a0that\u2019s not required.<\/span><\/span><span class=\"EOP SCXW209073227 BCX0\" data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n"},{"acf_fc_layout":"content","content":"<pre><code style=\"padding: 0.5em;color: #333;background: #f8f8f8\">\r\n<span style=\"color: #333;font-weight: bold\">const<\/span> HtmlWebPackPlugin = <span style=\"color: #0086b3\">require<\/span>(<span style=\"color: #d14\">\"html-webpack-plugin\"<\/span>);\r\n\r\n<span style=\"color: #0086b3\">module<\/span>.exports = {\r\n  entry: {\r\n    index: [<span style=\"color: #d14\">\".\/src\/index.js\"<\/span>],\r\n  },\r\n  plugins: [<span style=\"color: #333;font-weight: bold\">new<\/span> HtmlWebPackPlugin()]\r\n};\r\n<\/code><\/pre>\n"},{"acf_fc_layout":"content","content":"<p><span class=\"TextRun SCXW163896442 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW163896442 BCX0\">There\u2019s not much to this.<\/span><\/span><span class=\"TextRun SCXW163896442 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW163896442 BCX0\">\u00a0You just import and use.<\/span><\/span><span class=\"EOP SCXW163896442 BCX0\" data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n"},{"acf_fc_layout":"content","content":"<h3><span data-contrast=\"auto\">Rollup<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h3>\n<p><span data-contrast=\"auto\">Another popular build tool is <a href=\"https:\/\/www.rollupjs.org\/\">rollup<\/a>. It takes a little more work to set up, but once again, you don\u2019t need to do anything special to get the API to work.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n"},{"acf_fc_layout":"content","content":"<pre><code style=\"padding: 0.5em;color: #333;background: #f8f8f8\">\r\n<span style=\"color: #998;font-style: italic\">\/\/ rollup.config.js<\/span>\r\n<span style=\"color: #333;font-weight: bold\">import<\/span> commonjs <span style=\"color: #333;font-weight: bold\">from<\/span> <span style=\"color: #d14\">\"@rollup\/plugin-commonjs\"<\/span>;\r\n<span style=\"color: #333;font-weight: bold\">import<\/span> resolve <span style=\"color: #333;font-weight: bold\">from<\/span> <span style=\"color: #d14\">\"@rollup\/plugin-node-resolve\"<\/span>;\r\n<span style=\"color: #333;font-weight: bold\">import<\/span> { terser } <span style=\"color: #333;font-weight: bold\">from<\/span> <span style=\"color: #d14\">\"rollup-plugin-terser\"<\/span>;\r\n\r\n<span style=\"color: #333;font-weight: bold\">export<\/span> <span style=\"color: #333;font-weight: bold\">default<\/span> {\r\n    input: <span style=\"color: #d14\">\"src\/index.js\"<\/span>,\r\n    output: { format: \"es\" },\r\n    plugins: [ \r\n        resolve(),\r\n        commonjs(), \r\n        terser()\r\n    ],\r\n    preserveEntrySignatures: <span style=\"color: #333;font-weight: 500\">false<\/span>\r\n};\r\n<\/code><\/pre>\n"},{"acf_fc_layout":"content","content":"<h3><span data-contrast=\"auto\">Native ESM Build Tools<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h3>\n<p><span data-contrast=\"auto\">A couple of new build tools on the block are <a href=\"https:\/\/www.snowpack.dev\/\">Snowpack<\/a> and <a href=\"https:\/\/vitejs.dev\/\">Vite<\/a>. Both of these are very interesting as they handle native ESM, <em>even in development mode<\/em>. This means the incremental builds <\/span><span data-contrast=\"auto\">done during development are incredibly fast. These are probably my current favorite build tools to use today, so I highly recommend you try them out.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0 This is what a Snowpack configuration looks like.<\/span><\/p>\n"},{"acf_fc_layout":"content","content":"<pre><code style=\"padding: 0.5em;color: #333;background: #f8f8f8\">\r\n<span style=\"color: #998;font-style: italic\">\/\/ snowpack.config.js<\/span>\r\n<span style=\"color: #0086b3\">module<\/span>.exports = {\r\n    plugins: [[<span style=\"color: #d14\">\"@snowpack\/plugin-webpack\"<\/span>]]\r\n};\r\n<\/code><\/pre>\n"},{"acf_fc_layout":"content","content":"<p>By default, Vite doesn&#8217;t even need a configuration. That&#8217;s insane.<\/p>\n"},{"acf_fc_layout":"content","content":"<h3>Native ESM in the Browser<\/h3>\n<p>Another benefit of ESM is that it <a href=\"https:\/\/codepen.io\/odoe\/pen\/WNRRoEa?editors=0010\">works natively<\/a> in modern browsers via CDN. Before you get too excited and port all your web apps to work natively in the browser, please don&#8217;t. This is great for prototyping and working out some ideas, but it&#8217;s not optimized and you could possibly consume hundreds of JavaScript files. They&#8217;re small, but still, that&#8217;s a lot of network traffic. But still, great for testing some stuff.<\/p>\n"},{"acf_fc_layout":"content","content":"<pre><code style=\"padding: 0.5em;color: #333;background: #f8f8f8\">\r\n<span style=\"color: #333;font-weight: bold\">import<\/span> ArcGISMap <span style=\"color: #333;font-weight: bold\">from<\/span> <span style=\"color: #d14\">\"https:\/\/js.arcgis.com\/4.19\/@arcgis\/core\/Map.js\"<\/span>;\r\n<span style=\"color: #333;font-weight: bold\">import<\/span> MapView <span style=\"color: #333;font-weight: bold\">from<\/span> <span style=\"color: #d14\">\"https:\/\/js.arcgis.com\/4.19\/@arcgis\/core\/views\/MapView.js\"<\/span>;\r\n\r\n<span style=\"color: #333;font-weight: bold\">const<\/span> map = <span style=\"color: #333;font-weight: bold\">new<\/span> ArcGISMap({\r\n\tbasemap: <span style=\"color: #d14\">\"gray-vector\"<\/span>\r\n});\r\n\r\n<span style=\"color: #333;font-weight: bold\">const<\/span> view = <span style=\"color: #333;font-weight: bold\">new<\/span> MapView({\r\n\tcontainer: <span style=\"color: #d14\">\"viewDiv\"<\/span>,\r\n\tmap,\r\n\tzoom: <span style=\"color: #008080\">6<\/span>,\r\n\tcenter: [-<span style=\"color: #008080\">118<\/span>, <span style=\"color: #008080\">34<\/span>]\r\n});\r\n\r\n<\/code><\/pre>\n"},{"acf_fc_layout":"content","content":"<p>The truth is there is very little, if any, special configuration you need to do to start building awesome mapping applications with the ArcGIS API for JavaScript. Gone are the days of special plugins, mapping packages, or any other special build steps. <em>It just works.<\/em><\/p>\n<p><span class=\"TextRun SCXW74430502 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW74430502 BCX0\">Seriously, this is getting too easy. Maybe I should start working on Python or something.<\/span><\/span><span class=\"EOP SCXW74430502 BCX0\" data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p>You can find\u00a0 samples of using the ESM build with various build tools and frameworks on <a href=\"https:\/\/github.com\/Esri\/jsapi-resources\/tree\/master\/esm-samples\">github<\/a>.<\/p>\n"}],"authors":[{"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'\/>"}],"related_articles":[{"ID":360552,"post_author":"7531","post_date":"2018-12-04 09:28:23","post_date_gmt":"2018-12-04 17:28:23","post_content":"","post_title":"Using React with the ArcGIS API for JavaScript","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"using-react-with-the-arcgis-api-for-javascript","to_ping":"","pinged":"","post_modified":"2018-12-04 11:34:58","post_modified_gmt":"2018-12-04 19:34:58","post_content_filtered":"","post_parent":0,"guid":"http:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=360552","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"ID":79311,"post_author":"7251","post_date":"2017-09-08 00:43:06","post_date_gmt":"2017-09-08 00:43:06","post_content":"","post_title":"React Redux: Building Modern Web Apps with the ArcGIS JS API","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"react-redux-building-modern-web-apps-with-the-arcgis-js-api","to_ping":"","pinged":"","post_modified":"2020-02-18 09:36:47","post_modified_gmt":"2020-02-18 17:36:47","post_content_filtered":"","post_parent":0,"guid":"http:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/react-redux-building-modern-web-apps-with-the-arcgis-js-api\/","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"ID":1045791,"post_author":"3801","post_date":"2020-11-03 09:02:28","post_date_gmt":"2020-11-03 17:02:28","post_content":"","post_title":"ArcGIS API for JavaScript - Working with frameworks and build tools just got easier","post_excerpt":"","post_status":"publish","comment_status":"open","ping_status":"closed","post_password":"","post_name":"es-modules-are-coming-soon-in-the-arcgis-api-for-javascript","to_ping":"","pinged":"","post_modified":"2020-12-17 14:07:31","post_modified_gmt":"2020-12-17 22:07:31","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=1045791","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"2","filter":"raw"}],"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/03\/js-works-blog-card.jpg","wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/03\/js-works-blog.jpg"},"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>JavaScript Just Works<\/title>\n<meta name=\"description\" content=\"It&#039;s never been easier to use the ArcGIS API for JavaScript for building mapping applications!\" \/>\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\/js-api-arcgis\/mapping\/javascript-just-works\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JavaScript Just Works\" \/>\n<meta property=\"og:description\" content=\"It&#039;s never been easier to use the ArcGIS API for JavaScript for building mapping applications!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/javascript-just-works\" \/>\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=\"2021-04-26T21:36:48+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\/js-api-arcgis\/mapping\/javascript-just-works#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/javascript-just-works\"},\"author\":{\"name\":\"Rene Rubalcava\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/5e8200af39ef9d178ccabb08822d96cd\"},\"headline\":\"JavaScript Just Works\",\"datePublished\":\"2021-04-26T21:15:32+00:00\",\"dateModified\":\"2021-04-26T21:36:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/javascript-just-works\"},\"wordCount\":3,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"ArcGIS API for JavaScript\",\"Developers\",\"jsapi4\",\"mapping\",\"Web Development\"],\"articleSection\":[\"Mapping\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/javascript-just-works#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/javascript-just-works\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/javascript-just-works\",\"name\":\"JavaScript Just Works\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2021-04-26T21:15:32+00:00\",\"dateModified\":\"2021-04-26T21:36:48+00:00\",\"description\":\"It's never been easier to use the ArcGIS API for JavaScript for building mapping applications!\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/javascript-just-works#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/javascript-just-works\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/javascript-just-works#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript Just Works\"}]},{\"@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\/5e8200af39ef9d178ccabb08822d96cd\",\"name\":\"Rene Rubalcava\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/03\/ReneRubalcava-213x200.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/03\/ReneRubalcava-213x200.png\",\"caption\":\"Rene Rubalcava\"},\"description\":\"SoftWhere Developer, blogger, author, geodev, and connoisseur of programming languages and JavaScript frameworks. I blog at https:\/\/odoe.net and post videos at https:\/\/www.youtube.com\/c\/renerubalcava I write code, sometimes it even works.\",\"sameAs\":[\"http:\/\/odoe.net\/\",\"https:\/\/www.facebook.com\/odoenetgeo\/\",\"https:\/\/www.linkedin.com\/in\/renerubalcava\",\"https:\/\/x.com\/odoenet\"],\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/author\/r-rubalcava\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"JavaScript Just Works","description":"It's never been easier to use the ArcGIS API for JavaScript for building mapping applications!","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\/js-api-arcgis\/mapping\/javascript-just-works","og_locale":"en_US","og_type":"article","og_title":"JavaScript Just Works","og_description":"It's never been easier to use the ArcGIS API for JavaScript for building mapping applications!","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/javascript-just-works","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2021-04-26T21:36:48+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\/js-api-arcgis\/mapping\/javascript-just-works#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/javascript-just-works"},"author":{"name":"Rene Rubalcava","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/5e8200af39ef9d178ccabb08822d96cd"},"headline":"JavaScript Just Works","datePublished":"2021-04-26T21:15:32+00:00","dateModified":"2021-04-26T21:36:48+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/javascript-just-works"},"wordCount":3,"commentCount":0,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["ArcGIS API for JavaScript","Developers","jsapi4","mapping","Web Development"],"articleSection":["Mapping"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/javascript-just-works#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/javascript-just-works","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/javascript-just-works","name":"JavaScript Just Works","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2021-04-26T21:15:32+00:00","dateModified":"2021-04-26T21:36:48+00:00","description":"It's never been easier to use the ArcGIS API for JavaScript for building mapping applications!","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/javascript-just-works#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/javascript-just-works"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/javascript-just-works#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"JavaScript Just Works"}]},{"@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\/5e8200af39ef9d178ccabb08822d96cd","name":"Rene Rubalcava","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/03\/ReneRubalcava-213x200.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/03\/ReneRubalcava-213x200.png","caption":"Rene Rubalcava"},"description":"SoftWhere Developer, blogger, author, geodev, and connoisseur of programming languages and JavaScript frameworks. I blog at https:\/\/odoe.net and post videos at https:\/\/www.youtube.com\/c\/renerubalcava I write code, sometimes it even works.","sameAs":["http:\/\/odoe.net\/","https:\/\/www.facebook.com\/odoenetgeo\/","https:\/\/www.linkedin.com\/in\/renerubalcava","https:\/\/x.com\/odoenet"],"url":"https:\/\/www.esri.com\/arcgis-blog\/author\/r-rubalcava"}]}},"text_date":"April 26, 2021","author_name":"Rene Rubalcava","author_page":"https:\/\/www.esri.com\/arcgis-blog\/author\/r-rubalcava","custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/03\/js-works-blog.jpg","primary_product":"ArcGIS Maps SDK for JavaScript","tag_data":[{"term_id":96582,"name":"ArcGIS API for JavaScript","slug":"arcgis-api-for-javascript","term_group":0,"term_taxonomy_id":96582,"taxonomy":"post_tag","description":"","parent":0,"count":58,"filter":"raw"},{"term_id":38851,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":38851,"taxonomy":"post_tag","description":"","parent":0,"count":79,"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":176452,"name":"mapping","slug":"mapping","term_group":0,"term_taxonomy_id":176452,"taxonomy":"post_tag","description":"","parent":0,"count":60,"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":22941,"name":"Mapping","slug":"mapping","term_group":0,"term_taxonomy_id":22941,"taxonomy":"category","description":"","parent":0,"count":2706,"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":767,"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\/1164472","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\/7531"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=1164472"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/1164472\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=1164472"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=1164472"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=1164472"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=1164472"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=1164472"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}