{"id":1205532,"date":"2021-04-22T11:09:42","date_gmt":"2021-04-22T18:09:42","guid":{"rendered":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=1205532"},"modified":"2024-04-12T04:02:37","modified_gmt":"2024-04-12T11:02:37","slug":"arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2","title":{"rendered":"ArcGIS API for JavaScript &#8211; Working with frameworks and build tools just got easier &#8211; Part 2"},"author":3801,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[37101,738191],"tags":[96582,757301,757291,24921],"industry":[],"product":[761642,36831],"class_list":["post-1205532","blog","type-blog","status-publish","format-standard","hentry","category-announcements","category-developers","tag-arcgis-api-for-javascript","tag-es-modules","tag-esm","tag-javascript","product-platform","product-js-api-arcgis"],"acf":{"short_description":"The JS APIs ES modules modernize the experience of working with JS frameworks and build tools.","flexible_content":[{"acf_fc_layout":"content","content":"<p>Do you use the ArcGIS API for JavaScript with a 3<sup>rd<\/sup>\u00a0party framework and\/or create local builds? If so, then you\u2019ll want to check out the API\u2019s ES modules, also referred to as <a href=\"https:\/\/www.npmjs.com\/package\/@arcgis\/core\">@arcgis\/core<\/a>.<\/p>\n<p>At version 4.18 we <a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/es-modules-are-coming-soon-in-the-arcgis-api-for-javascript\/\">introduced ES modules as beta<\/a> with the intention of making it significantly easier to integrate the API with frameworks and build tools. At 4.19 we are excited to announce that these modules are now ready for production use! For a brief overview of installing the ES modules see the <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/es-modules\/\">Build with ES modules<\/a> guide topic in the API documentation.<\/p>\n<p><strong>Why ES modules?<\/strong><\/p>\n<p>For most local builds the ES modules should just work. Local builds refer to installing, consuming and compiling the API modules along with the application code. Keep reading to learn more about what this means.<\/p>\n<p>Here is a recap of the benefits:<\/p>\n<ul>\n<li>Simplified code<\/li>\n<li>Native support in modern browsers<\/li>\n<li>Minimal configuration<\/li>\n<li>Seamless integration with modern frameworks and build tools<\/li>\n<\/ul>\n<p>ES modules are easier to use than AMD modules because you don\u2019t need to wrap your API code in a <em>require()<\/em> statement. They are referenced in your application through native <em>import<\/em> statements, which is made possible because the <a href=\"https:\/\/tc39.github.io\/ecma262\/#sec-modules\">ECMA 2015 (ES6) specification<\/a> was adopted by <a href=\"https:\/\/caniuse.com\/?search=es6\">all major browser vendors<\/a>. And, ES modules are supported by most modern frameworks by default.<\/p>\n<p>Here are two code snippets that show an ES module next to an AMD module:<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":1209562,"id":1209562,"title":"amd-esm-compare-5","filename":"amd-esm-compare-5.png","filesize":32400,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/04\/amd-esm-compare-5.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2\/amd-esm-compare-5","alt":"","author":"3801","description":"","caption":"","name":"amd-esm-compare-5","status":"inherit","uploaded_to":1205532,"date":"2021-04-22 14:53:36","modified":"2021-04-22 14:53:36","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":750,"height":287,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/04\/amd-esm-compare-5-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/04\/amd-esm-compare-5.png","medium-width":464,"medium-height":178,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/04\/amd-esm-compare-5.png","medium_large-width":750,"medium_large-height":287,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/04\/amd-esm-compare-5.png","large-width":750,"large-height":287,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/04\/amd-esm-compare-5.png","1536x1536-width":750,"1536x1536-height":287,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/04\/amd-esm-compare-5.png","2048x2048-width":750,"2048x2048-height":287,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/04\/amd-esm-compare-5.png","card_image-width":750,"card_image-height":287,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/04\/amd-esm-compare-5.png","wide_image-width":750,"wide_image-height":287}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>In comparison, AMD is based on an <a href=\"https:\/\/github.com\/amdjs\/amdjs-api\/wiki\/AMD\">API specification<\/a> rather than an ECMA standard. Because it isn\u2019t natively supported by browsers, AMD requires a separate module loader, such as Dojo or RequireJS. A major side-effect of this is special configuration, helper libraries and additional plugins, such as <a href=\"https:\/\/github.com\/Esri\/esri-loader\"><em>esri-loader<\/em><\/a> and <em><a href=\"https:\/\/github.com\/Esri\/arcgis-webpack-plugin\">arcgis-webpack-plugin<\/a><\/em>, are required when working with frameworks.<\/p>\n<p><strong>What\u2019s new at 4.19?<\/strong><\/p>\n<p>At 4.19, in addition to a number of under-the-hood improvements, we\u2019ve simplified installation and setup. NPM installs of @arcgis\/core now use a CDN as the default way to retrieve assets used by the API at runtime. You no longer need to copy the API\u2019s assets from <em>node_modules<\/em> into your project. The assets include styles, images, web workers, web assembly and localization files. You can still override the default with <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-config.html#assetsPath\">config.assetsPath<\/a> when requirements call for working with the assets locally, for example if you are running the app on a private network.<\/p>\n<p><strong>Where can I find samples?<\/strong><\/p>\n<p>We have a variety of basic getting started samples at <a href=\"https:\/\/github.com\/Esri\/jsapi-resources\/tree\/master\/esm-samples\">https:\/\/github.com\/Esri\/jsapi-resources\/tree\/master\/esm-samples<\/a>. There are examples of using the API&#8217;s ES modules with React, Angular, webpack, rollup.js and more. If you have questions about using the samples or other questions about ES modules, you can post them in the repository\u2019s <a href=\"https:\/\/github.com\/Esri\/jsapi-resources\/issues\">issue page<\/a>.<\/p>\n<p><strong>I\u2019m using the AMD modules; do I need to switch?<\/strong><\/p>\n<p>If you are using the AMD modules without a JavaScript framework or you are not creating local builds, there\u2019s no need for you to migrate.<\/p>\n<p>If you are using a framework or already using <em>esri-loader<\/em> or <em>arcgis-webpack-plugin<\/em>, then we recommend migrating to ES modules.<\/p>\n<p>We get many questions about the differences between the two module types. It\u2019s important to note that the underlying API functionality is exactly the same between AMD and ES modules. What\u2019s significantly different is how browsers, frameworks and build tools work with the modules.<\/p>\n<p><strong>Should I consider using a framework or doing local builds?<\/strong><\/p>\n<p>As your JavaScript application grows larger, it will eventually reach a point where adding new functionality becomes challenging. Using a framework is about gaining scalability, productivity and performance in front-end apps when compared to apps built in vanilla HTML\/JavaScript.<\/p>\n<p>Frameworks provide the scaffolding required for creating scalable applications. All the major frameworks including Angular, React and VueJS have been tested in the real world by organizations building large, performant applications. They provide boilerplate code and components, built-in unit testing, state management and design systems for frequently used workflows, as well as a world-wide community to help support all of it. If you consider how many hours were put into building the underpinnings of frameworks and maintaining them, that is time you don\u2019t have to spend trying to recreate the same thing.<\/p>\n<p>Frameworks come with a module bundler such as <a href=\"https:\/\/webpack.js.org\/\">webpack<\/a> or <a href=\"https:\/\/rollupjs.org\/guide\/en\/\">rollup.js<\/a>. These bundlers can also be used by themselves without a framework. The bundler\u2019s job is to compile the application\u2019s code and dependencies and <a href=\"https:\/\/webpack.js.org\/guides\/code-splitting\/\">split<\/a> them into optimized chunks, or bundles, that can then be pushed into a production environment. The goal of this optimization step is to provide the fastest loading performance possible. Here is a screenshot of what the bundles look like on-disk:<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":1207512,"id":1207512,"title":"bundles3","filename":"bundles3.png","filesize":22194,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/04\/bundles3.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2\/bundles3","alt":"","author":"3801","description":"","caption":"","name":"bundles3","status":"inherit","uploaded_to":1205532,"date":"2021-04-21 20:04:59","modified":"2021-04-21 20:04:59","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":250,"height":267,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/04\/bundles3-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/04\/bundles3.png","medium-width":244,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/04\/bundles3.png","medium_large-width":250,"medium_large-height":267,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/04\/bundles3.png","large-width":250,"large-height":267,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/04\/bundles3.png","1536x1536-width":250,"1536x1536-height":267,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/04\/bundles3.png","2048x2048-width":250,"2048x2048-height":267,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/04\/bundles3.png","card_image-width":250,"card_image-height":267,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/04\/bundles3.png","wide_image-width":250,"wide_image-height":267}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p><strong>Can I use ES modules in my HTML app?<\/strong><\/p>\n<p>The ES modules are available via CDN for testing and prototyping, only. This is due to performance reasons, the ES modules CDN build isn\u2019t optimized for fast loading. We recommend using local builds-only for production deployments because you have much greater control over optimization. Our samples repository has an <a href=\"https:\/\/github.com\/Esri\/jsapi-resources\/tree\/master\/esm-samples\/jsapi-esm-cdn\">ES modules CDN example<\/a>.<\/p>\n<p><strong>Wrap-up!<\/strong><\/p>\n<p>We are excited about the new ES modules and we hope you are too! We encourage you to try them out. Here\u2019s a basic getting started guide: <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/es-modules\/\">ArcGIS API for JavaScript SDK Guide Topic \u2013 Build with ES modules<\/a>, and here are the <a href=\"https:\/\/github.com\/Esri\/jsapi-resources\/tree\/master\/esm-samples\">sample apps<\/a>.<\/p>\n<p>Last, be sure to check out the <a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/whats-new-in-arcgis-api-for-javascript-version-4-19\/\">What&#8217;s New in the ArcGIS API for JavaScript (version 4.19)<\/a> blog and see what other great, new functionality you can use in your apps.<\/p>\n"}],"authors":[{"ID":3801,"user_firstname":"Andy","user_lastname":"Gup","nickname":"andygup","user_nicename":"andygup","display_name":"Andy Gup","user_email":"agup@esri.com","user_url":"http:\/\/www.andygup.net","user_registered":"2018-03-02 00:15:25","user_description":"I spend a ton of time outdoors and when not on a mountain somewhere I'm a Sr. Product Engineer for the ArcGIS Maps SDK for JavaScript. I work on ES modules, 3rd party JavaScript frameworks, and other cool mapping-related goodies.","user_avatar":"<img data-del=\"avatar\" src='https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/andy_gup_thumb4-1.png' class='avatar pp-user-avatar avatar-96 photo ' height='96' width='96'\/>"}],"related_articles":[{"ID":1206032,"post_author":"4271","post_date":"2021-04-22 11:17:22","post_date_gmt":"2021-04-22 18:17:22","post_content":"","post_title":"What's New in ArcGIS API for JavaScript (version 4.19)","post_excerpt":"","post_status":"publish","comment_status":"open","ping_status":"closed","post_password":"","post_name":"whats-new-in-arcgis-api-for-javascript-version-4-19","to_ping":"","pinged":"","post_modified":"2024-04-12 04:02:30","post_modified_gmt":"2024-04-12 11:02:30","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=1206032","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"}],"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/04\/esm-angular-card.png","wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/04\/esm-angular1.png"},"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>ArcGIS API for JavaScript - Working with frameworks and build tools just got easier - Part 2<\/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\/js-api-arcgis\/announcements\/arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ArcGIS API for JavaScript - Working with frameworks and build tools just got easier - Part 2\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2\" \/>\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=\"2024-04-12T11:02:37+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\/announcements\/arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2\"},\"author\":{\"name\":\"Andy Gup\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/15927797a6b3b3750014fb54da60503a\"},\"headline\":\"ArcGIS API for JavaScript &#8211; Working with frameworks and build tools just got easier &#8211; Part 2\",\"datePublished\":\"2021-04-22T18:09:42+00:00\",\"dateModified\":\"2024-04-12T11:02:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2\"},\"wordCount\":16,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"ArcGIS API for JavaScript\",\"ES Modules\",\"esm\",\"JavaScript\"],\"articleSection\":[\"Announcements\",\"Developers\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2\",\"name\":\"ArcGIS API for JavaScript - Working with frameworks and build tools just got easier - Part 2\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2021-04-22T18:09:42+00:00\",\"dateModified\":\"2024-04-12T11:02:37+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ArcGIS API for JavaScript &#8211; Working with frameworks and build tools just got easier &#8211; Part 2\"}]},{\"@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\/15927797a6b3b3750014fb54da60503a\",\"name\":\"Andy Gup\",\"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\/2018\/07\/andy_gup_thumb4-1.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/andy_gup_thumb4-1.png\",\"caption\":\"Andy Gup\"},\"description\":\"I spend a ton of time outdoors and when not on a mountain somewhere I'm a Sr. Product Engineer for the ArcGIS Maps SDK for JavaScript. I work on ES modules, 3rd party JavaScript frameworks, and other cool mapping-related goodies.\",\"sameAs\":[\"http:\/\/www.andygup.net\",\"https:\/\/x.com\/agup\"],\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/author\/andygup\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"ArcGIS API for JavaScript - Working with frameworks and build tools just got easier - Part 2","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\/announcements\/arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2","og_locale":"en_US","og_type":"article","og_title":"ArcGIS API for JavaScript - Working with frameworks and build tools just got easier - Part 2","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2024-04-12T11:02:37+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\/announcements\/arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2"},"author":{"name":"Andy Gup","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/15927797a6b3b3750014fb54da60503a"},"headline":"ArcGIS API for JavaScript &#8211; Working with frameworks and build tools just got easier &#8211; Part 2","datePublished":"2021-04-22T18:09:42+00:00","dateModified":"2024-04-12T11:02:37+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2"},"wordCount":16,"commentCount":0,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["ArcGIS API for JavaScript","ES Modules","esm","JavaScript"],"articleSection":["Announcements","Developers"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2","name":"ArcGIS API for JavaScript - Working with frameworks and build tools just got easier - Part 2","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2021-04-22T18:09:42+00:00","dateModified":"2024-04-12T11:02:37+00:00","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/arcgis-api-for-javascript-working-with-frameworks-and-build-tools-just-got-easier-part-2#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"ArcGIS API for JavaScript &#8211; Working with frameworks and build tools just got easier &#8211; Part 2"}]},{"@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\/15927797a6b3b3750014fb54da60503a","name":"Andy Gup","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\/2018\/07\/andy_gup_thumb4-1.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/andy_gup_thumb4-1.png","caption":"Andy Gup"},"description":"I spend a ton of time outdoors and when not on a mountain somewhere I'm a Sr. Product Engineer for the ArcGIS Maps SDK for JavaScript. I work on ES modules, 3rd party JavaScript frameworks, and other cool mapping-related goodies.","sameAs":["http:\/\/www.andygup.net","https:\/\/x.com\/agup"],"url":"https:\/\/www.esri.com\/arcgis-blog\/author\/andygup"}]}},"text_date":"April 22, 2021","author_name":"Andy Gup","author_page":"https:\/\/www.esri.com\/arcgis-blog\/author\/andygup","custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/04\/esm-angular1.png","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":757301,"name":"ES Modules","slug":"es-modules","term_group":0,"term_taxonomy_id":757301,"taxonomy":"post_tag","description":"","parent":0,"count":4,"filter":"raw"},{"term_id":757291,"name":"esm","slug":"esm","term_group":0,"term_taxonomy_id":757291,"taxonomy":"post_tag","description":"","parent":0,"count":3,"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"}],"category_data":[{"term_id":37101,"name":"Announcements","slug":"announcements","term_group":0,"term_taxonomy_id":37101,"taxonomy":"category","description":"","parent":0,"count":1964,"filter":"raw"},{"term_id":738191,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":738191,"taxonomy":"category","description":"","parent":0,"count":423,"filter":"raw"}],"product_data":[{"term_id":761642,"name":"ArcGIS Location Platform","slug":"platform","term_group":0,"term_taxonomy_id":761642,"taxonomy":"product","description":"","parent":36601,"count":214,"filter":"raw"},{"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":363,"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\/1205532","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\/3801"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=1205532"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/1205532\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=1205532"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=1205532"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=1205532"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=1205532"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=1205532"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}