{"id":61459,"date":"2024-04-30T10:37:23","date_gmt":"2024-04-30T05:07:23","guid":{"rendered":"https:\/\/www.tothenew.com\/blog\/?p=61459"},"modified":"2024-06-10T15:30:33","modified_gmt":"2024-06-10T10:00:33","slug":"building-custom-vue-js-component-and-integration-with-aem","status":"publish","type":"post","link":"https:\/\/www.tothenew.com\/blog\/building-custom-vue-js-component-and-integration-with-aem\/","title":{"rendered":"Building Custom Vue.js Component and integration with AEM"},"content":{"rendered":"<h3><b>Overview of AEM and vue.js<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Adobe Experience Manager (AEM) is a powerful content management system that allows for seamless content creation and management. On the other hand, vue.js is a progressive JavaScript framework that simplifies front-end development. Integrating AEM with vue.js can enhance the user experience and streamline development processes.<\/span><\/p>\n<h3><b>Benefits of Integrating AEM with vue.js<\/b><\/h3>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Improved performance and speed<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Enhanced user interface and interactivity<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Consistent code structure and organization<\/span><\/li>\n<\/ul>\n<h3><b>Creating Vue.Js project and component<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Prerequisites<\/span><span style=\"font-weight: 400;\">:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">System node js version must be greater than 11.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Step 1<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Go to aem-guides-wknd directory and create a project <\/span><b>vue-app<\/b><span style=\"font-weight: 400;\"> by following the below steps.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">1. <\/span><b>Install Node.js<\/b><span style=\"font-weight: 400;\"> &#8211; Before getting started, make sure you have Node.js installed on your system. You can download the specified version from the official Node.js website(<\/span><a href=\"https:\/\/nodejs.org\/\"><span style=\"font-weight: 400;\">https:\/\/nodejs.org\/<\/span><\/a><span style=\"font-weight: 400;\">).<\/span><\/li>\n<\/ul>\n<ol start=\"2\">\n<li><b>Install Vue CLI &#8211; <\/b><span style=\"font-weight: 400;\">Vue CLI is a command-line tool that makes it easy to create and configure Vue projects. To install Vue CLI, open a terminal and run the following command: <\/span><b>npm install -g @vue\/cli.<\/b><b><br \/>\n<\/b><span style=\"font-weight: 400;\">This command will install Vue CLI globally on your system, allowing you to access the Vue CLI command-line interface from any directory.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\"><strong>Create a New Project<\/strong> &#8211; Once you have Vue CLI installed, you\u2019re ready to create a new Vue project. Follow these steps:\u00a0<\/span>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Open aem-guides-wknd directory.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Run the following command to create a new Vue project:<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<pre><b>vue create vue-app<\/b><\/pre>\n<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">You will be presented with a list of preset configurations. You can choose from the default options or select a manual configuration to customize the features of your project.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Once you\u2019ve selected a configuration, Vue CLI will start installing the necessary dependencies and generate the basic structure of your project.<\/span><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">After that your project named \u2018vue-app\u2019 will be created and the hierarchy will be like this.<\/span><\/li>\n<\/ul>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-61439 size-full alignnone\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/04\/vuestr.png\" alt=\"\" width=\"348\" height=\"853\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/04\/vuestr.png 348w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/vuestr-122x300.png 122w\" sizes=\"(max-width: 348px) 100vw, 348px\" \/><\/p>\n<h2><b>Vuejs Component creation and integration inside AEM<\/b><b><\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Purpose : Creation of three independent components i.e. checked items, item review, and items action.checkeditems component will show lists of items with add\/remove button. After clicking on add, it will added to item review component, the button will be changed to remove, and if it is eligible for an offer it will be added to itemsaction component.<\/span><\/p>\n<p><b>Component creation<\/b><\/p>\n<p><span style=\"font-weight: 400;\">Step 1<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Create three component named \u2018<\/span><b>Checkitems.js<\/b><span style=\"font-weight: 400;\">\u2019,\u201d<\/span><b>Itemreview.js<\/b><span style=\"font-weight: 400;\">\u201d,\u201d<\/span><b>Itemsaction.js<\/b><span style=\"font-weight: 400;\">\u201d inside components folder.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">We will create <\/span><b>new vue<\/b><span style=\"font-weight: 400;\"> to instantiate the component, then inside the <\/span><b>data <\/b><span style=\"font-weight: 400;\">property initialize all properties,<\/span><b>mounted <\/b><span style=\"font-weight: 400;\">hook is often used to perform one-time initialization logic, such as fetching data from an API or setting up event listeners.<\/span><b>methods<\/b><span style=\"font-weight: 400;\"> will be used for all dom actions related to the component.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Attached are some screenshot below:-\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-61440 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/04\/checklist.png\" alt=\"\" width=\"820\" height=\"916\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/04\/checklist.png 820w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/checklist-269x300.png 269w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/checklist-768x858.png 768w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/checklist-624x697.png 624w\" sizes=\"(max-width: 820px) 100vw, 820px\" \/><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-61442 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/04\/itemreviw.png\" alt=\"\" width=\"585\" height=\"502\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/04\/itemreviw.png 585w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/itemreviw-300x257.png 300w\" sizes=\"(max-width: 585px) 100vw, 585px\" \/><\/span><\/p>\n<p><span style=\"font-weight: 400;\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-61441 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/04\/itemacton.png\" alt=\"\" width=\"573\" height=\"467\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/04\/itemacton.png 573w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/itemacton-300x245.png 300w\" sizes=\"(max-width: 573px) 100vw, 573px\" \/><\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">To communicate between components, I will create a shared folder and create an <\/span><b>EventBus,js<\/b><span style=\"font-weight: 400;\"> file to send\/receive Data.\u00a0<\/span><\/li>\n<\/ul>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-61443 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/04\/eventbus.png\" alt=\"\" width=\"441\" height=\"67\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/04\/eventbus.png 441w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/eventbus-300x46.png 300w\" sizes=\"(max-width: 441px) 100vw, 441px\" \/><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Create a css folder and add a respective css file for each component i.e <\/span><b>checklist.css,<\/b><b><br \/>\n<\/b><b>Menusreview.css,itemactions.css.<\/b><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\"><span style=\"font-weight: 400;\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-61444 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/04\/checkcss.png\" alt=\"\" width=\"347\" height=\"591\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/04\/checkcss.png 347w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/checkcss-176x300.png 176w\" sizes=\"(max-width: 347px) 100vw, 347px\" \/> \u00a0<\/span><\/span><\/p>\n<p><span style=\"font-weight: 400;\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-61445 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/04\/itemactioncss.png\" alt=\"\" width=\"308\" height=\"647\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/04\/itemactioncss.png 308w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/itemactioncss-143x300.png 143w\" sizes=\"(max-width: 308px) 100vw, 308px\" \/><\/span><\/p>\n<p><span style=\"font-weight: 400;\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-61446 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/04\/menucss.png\" alt=\"\" width=\"315\" height=\"780\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/04\/menucss.png 315w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/menucss-121x300.png 121w\" sizes=\"(max-width: 315px) 100vw, 315px\" \/><\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Create three AEM components <\/span><b>checklistitems.html,itemreview.html,itemaction.html<\/b><span style=\"font-weight: 400;\"> inside <\/span><b>ui.apps\/src\/main\/content\/jcr_root\/apps\/wknd\/components. <\/b><span style=\"font-weight: 400;\">Along with that write the HTML using vue.<\/span><b>v-for <\/b><span style=\"font-weight: 400;\">is used to display the list of items.<\/span><b>@click<\/b><span style=\"font-weight: 400;\"> is used for performing the click event. Attached are some screenshot below.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-61447 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/04\/actionhtml.png\" alt=\"\" width=\"532\" height=\"268\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/04\/actionhtml.png 532w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/actionhtml-300x151.png 300w\" sizes=\"(max-width: 532px) 100vw, 532px\" \/> <img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-61448 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/04\/checkhtml.png\" alt=\"\" width=\"1011\" height=\"332\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/04\/checkhtml.png 1011w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/checkhtml-300x99.png 300w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/checkhtml-768x252.png 768w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/checkhtml-624x205.png 624w\" sizes=\"(max-width: 1011px) 100vw, 1011px\" \/> <img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-61449 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/04\/reviewhtml.png\" alt=\"\" width=\"547\" height=\"258\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/04\/reviewhtml.png 547w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/reviewhtml-300x141.png 300w\" sizes=\"(max-width: 547px) 100vw, 547px\" \/><\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">After creation, import the component inside the main.js file of vue. Delete the App.js file inside the directory.<\/span><b>checkItems<\/b><span style=\"font-weight: 400;\">,<\/span><b>Itemsaction<\/b><span style=\"font-weight: 400;\">,<\/span><b>itemsreview <\/b><span style=\"font-weight: 400;\">are parent classes of each component. We will integrate it by like this.Attached is a screenshot below:<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/li>\n<\/ul>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-61450 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/04\/mainjsfile.png\" alt=\"\" width=\"615\" height=\"228\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/04\/mainjsfile.png 615w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/mainjsfile-300x111.png 300w\" sizes=\"(max-width: 615px) 100vw, 615px\" \/><\/p>\n<h2><b>Component Build and Integration<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">We are going to build the vue app by custom webpack configuration. So that the final build file will be stored inside the ui.apps folder.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Create a <\/span><b>webpack.config.js<\/b><span style=\"font-weight: 400;\"> and<\/span><b> clientlib.config.js<\/b><span style=\"font-weight: 400;\">\u00a0 file inside vue-app and provide the copywebpackplugin to copy the build file from<\/span><b> dist\/js\/main.js,dist\/css\/main.css<\/b><span style=\"font-weight: 400;\"> to <\/span><b>ui.apps\/src\/main\/content\/jcr_root\/apps\/wknd\/clientlibs\/vue and ui.apps\/src\/main\/content\/jcr_root\/apps\/wknd\/clientlibs\/clientlib-base\/js and \/css folder<\/b><span style=\"font-weight: 400;\">.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><b><br \/>\n<\/b><b>webpack.config.js and clientlib.config.js<\/b><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-61451 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/04\/webpackconfig.png\" alt=\"\" width=\"1048\" height=\"876\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/04\/webpackconfig.png 1048w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/webpackconfig-300x251.png 300w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/webpackconfig-1024x856.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/webpackconfig-768x642.png 768w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/webpackconfig-624x522.png 624w\" sizes=\"(max-width: 1048px) 100vw, 1048px\" \/><\/span><span style=\"font-weight: 400;\"><br \/>\n<img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-61452 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/04\/clientconfig.png\" alt=\"\" width=\"683\" height=\"448\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/04\/clientconfig.png 683w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/clientconfig-300x197.png 300w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/clientconfig-624x409.png 624w\" sizes=\"(max-width: 683px) 100vw, 683px\" \/><\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">In package.json change the build inside scripts like below<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <b>&#8220;build&#8221;: &#8220;webpack &amp;&amp; clientlib &#8211;verbose&#8221;<\/b><span style=\"font-weight: 400;\"> .<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Do <\/span><b>npm install<\/b><span style=\"font-weight: 400;\"> and <\/span><b>npm install &#8211;save-dev webpack webpack-cli webpack-dev-server<\/b><span style=\"font-weight: 400;\"> to download all the necessary webpack dependencies.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Then run <\/span><b>npm run build<\/b><span style=\"font-weight: 400;\"> command inside the vue-app directory. So the build file <\/span><b>main.js and main.css<\/b><span style=\"font-weight: 400;\"> will be created in the dist folder of vue app. Along with that, it will be copied automatically to the clientlib folder and _content.xml file be created automatically. Attached is a screenshot below:<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-61453 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/04\/uiappslib.png\" alt=\"\" width=\"327\" height=\"612\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/04\/uiappslib.png 327w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/uiappslib-160x300.png 160w\" sizes=\"(max-width: 327px) 100vw, 327px\" \/><\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Inside js.txt and css.txt write #base=js main.js and #base=css main.css.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <img decoding=\"async\" loading=\"lazy\" class=\"wp-image-61454 size-full alignleft\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/04\/csstxt.png\" alt=\"\" width=\"661\" height=\"341\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/04\/csstxt.png 661w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/csstxt-300x155.png 300w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/csstxt-624x322.png 624w\" sizes=\"(max-width: 661px) 100vw, 661px\" \/><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-61455 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/04\/jstxt.png\" alt=\"\" width=\"647\" height=\"337\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/04\/jstxt.png 647w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/jstxt-300x156.png 300w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/jstxt-624x325.png 624w\" sizes=\"(max-width: 647px) 100vw, 647px\" \/>\u00a0\u00a0\u00a0\u00a0<\/span><\/p>\n<h2><b>Deploying AEM and Vue.js Integration<\/b><\/h2>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Go to the root directory and run the command <\/span><b>mvn clean install -PautoInstallSinglePackage -Pclassic.<\/b><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Open the browser and enter the URL <\/span><a href=\"http:\/\/localhost:4506\/aem\/start.html\"><b>http:\/\/localhost:4502\/aem\/start.html<\/b><\/a><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Login by user ID and password as admin. Then go to <\/span><a href=\"http:\/\/localhost:4506\/editor.html\/content\/wknd\/language-masters\/en.html\"><b>http:\/\/localhost:4502\/editor.html\/content\/wknd\/language-masters\/en.html<\/b><\/a><b>.<\/b><b><br \/>\n<\/b><b><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-61456 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/04\/aemhomeui.png\" alt=\"\" width=\"677\" height=\"377\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/04\/aemhomeui.png 677w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/aemhomeui-300x167.png 300w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/aemhomeui-624x347.png 624w\" sizes=\"(max-width: 677px) 100vw, 677px\" \/><\/b><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Click on drag components and then insert checklist, item review, and item action component, then view as publish to see the results on UI.Added screenshot below.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"><span style=\"font-weight: 400;\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-61457 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/04\/ui1.png\" alt=\"\" width=\"1655\" height=\"742\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/04\/ui1.png 1655w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/ui1-300x135.png 300w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/ui1-1024x459.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/ui1-768x344.png 768w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/ui1-1536x689.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/ui1-624x280.png 624w\" sizes=\"(max-width: 1655px) 100vw, 1655px\" \/><\/span><\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Click on Add to see the items on the carts and the offer section. Added is a screenshot below.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"><span style=\"font-weight: 400;\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-61458 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/04\/ui2.png\" alt=\"\" width=\"1253\" height=\"825\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/04\/ui2.png 1253w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/ui2-300x198.png 300w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/ui2-1024x674.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/ui2-768x506.png 768w, \/blog\/wp-ttn-blog\/uploads\/2024\/04\/ui2-624x411.png 624w\" sizes=\"(max-width: 1253px) 100vw, 1253px\" \/><\/span><\/span><\/li>\n<\/ul>\n<h2><b>Conclusion<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">In this comprehensive guide, we have learned the in and out of seamlessly integrating AEM with vue.js. By following these step-by-step instructions, you can optimize performance, create stunning components, and deploy your AEM vue.js project with confidence.<\/span><\/p>\n<div class=\"ap-custom-wrapper\"><\/div><!--ap-custom-wrapper-->","protected":false},"excerpt":{"rendered":"<p>Overview of AEM and vue.js Adobe Experience Manager (AEM) is a powerful content management system that allows for seamless content creation and management. On the other hand, vue.js is a progressive JavaScript framework that simplifies front-end development. Integrating AEM with vue.js can enhance the user experience and streamline development processes. Benefits of Integrating AEM with [&hellip;]<\/p>\n","protected":false},"author":1773,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":273},"categories":[5868,3429,1994,1,4488],"tags":[4847,5845],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/61459"}],"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\/1773"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/comments?post=61459"}],"version-history":[{"count":8,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/61459\/revisions"}],"predecessor-version":[{"id":61607,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/61459\/revisions\/61607"}],"wp:attachment":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/media?parent=61459"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/categories?post=61459"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/tags?post=61459"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}