https://aureatelabs.com/blog/easiest-way-to-load-your-custom-js-component-in-magento-2/
https://r-martins.github.io/m1docs/videos/fundamentals/add-a-javascript-module/index.html
https://github.com/nans/Magestudy/tree/master?tab=readme-ov-file
There are 3 ways to add JS
- Layout XML File
- Via data-mage-init and using RequireJS Configuration(Must add require-js.config file)
- Via <script type=â€text/x-magento-initâ€>
1) Via Adding Layout
You can add JavaScript files to specific pages or all pages using layout XML files.
Example:
Layout XML:
<?xml version="1.0"?>
<!-- File: app/code/Vendor/Module/view/frontend/layout/default.xml -->
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<head>
<script src="Vendor_Module::js/example.js"/>
</head>
</page>
Add below code to example.js file
require(
[
"jquery",
],
function($){
alert("Add Custom Js");
})
Add JS in any phtml file
<script>
require([
'jquery',
'Magento_Ui/js/modal/modal',
'domReady!'
], function ($, modal) {
'use strict';
// Define the modal options
var options = {
type: 'popup',
responsive: true,
innerScroll: true,
modalClass: 'custom-modal-popuplogin'
};
// Initialize the modal
var popup = modal(options, $('#modal-popup'));
// Open the modal on button click
$('#open-modal-button').on('click', function() {
popup.openModal();
});
// Close the modal on button click
$('#close-modal-button').on('click', function() {
popup.closeModal();
});
});
</script>
Above code will Initialize th Modal using Magento 2.
Common Magento 2 JavaScript Dependencies
-
jquery
- Description: The jQuery library for handling DOM manipulation, event handling, and AJAX requests.
- Usage:
require(['jquery'], function ($) { ... });
-
Magento_Ui/js/modal/modal
- Description: Provides functionality to create and manage modal dialogs (popups).
- Usage:
require(['Magento_Ui/js/modal/modal'], function (modal) { ... });
-
Magento_Ui/js/form/form
- Description: Handles form initialization and submission, including form validation.
- Usage:
require(['Magento_Ui/js/form/form'], function (Form) { ... });
-
Magento_Checkout/js/view/billing-address
- Description: Manages the billing address view in the checkout process.
- Usage:
require(['Magento_Checkout/js/view/billing-address'], function (BillingAddress) { ... });
-
Magento_Checkout/js/model/quote
- Description: Provides access to quote data (cart) and related operations.
- Usage:
require(['Magento_Checkout/js/model/quote'], function (quote) { ... });
-
Magento_Catalog/js/model/product
- Description: Manages product data and interactions.
- Usage:
require(['Magento_Catalog/js/model/product'], function (product) { ... });
-
Magento_Customer/js/customer-data
- Description: Manages customer data, including cart and session information.
- Usage:
require(['Magento_Customer/js/customer-data'], function (customerData) { ... });
-
Magento_Ui/js/lib/view/utils/dom/consts
- Description: Contains constants for DOM-related operations.
- Usage:
require(['Magento_Ui/js/lib/view/utils/dom/consts'], function (consts) { ... });
-
Magento_Ui/js/lib/view/utils/async
- Description: Provides utility functions for asynchronous operations.
- Usage:
require(['Magento_Ui/js/lib/view/utils/async'], function (async) { ... });
-
Magento_Ui/js/lib/view/utils/scroll
- Description: Utility functions for handling scroll behavior.
- Usage:
require(['Magento_Ui/js/lib/view/utils/scroll'], function (scroll) { ... });
-
Magento_Ui/js/view/messages
- Description: Manages and displays messages such as notifications and alerts.
- Usage:
require(['Magento_Ui/js/view/messages'], function (messages) { ... });
-
mage/url
- Description: Utility for handling and generating URLs.
- Usage:
require(['mage/url'], function (url) { ... });
-
mage/translate
- Description: Provides translation and localization support for JavaScript strings.
- Usage:
require(['mage/translate'], function (translate) { ... });
-
mage/cookies
- Description: Manages cookies for client-side operations.
- Usage:
require(['mage/cookies'], function (cookies) { ... });
-
mage/validation
- Description: Provides client-side validation functionalities.
- Usage:
require(['mage/validation'], function (validation) { ... });
-
mage/loader
- Description: Provides a loader widget for displaying loading indicators.
- Usage:
require(['mage/loader'], function (loader) { ... });