How to use knockout js on frontend
In this article, We will learn about how to use Knockout JS on a Magento 2 Frontend.
First off, we will create a module Webkul_Knockout
Step-1: Create registration.php at app/code/Vendor/Knockout
<?php /** * Webkul Software. * * @category Webkul * @package Webkul_Knockout * @author Webkul * @copyright Copyright (c) Webkul Software Private Limited (https://webkul.com) * @license https://store.webkul.com/license.html */ \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'Webkul_Knockout', __DIR__ );
Step-2: Create module.xml at app/code/Vendor/Knockout/etc
<?xml version="1.0" ?> <!-- /** * Webkul Software. * * @category Webkul * @package Webkul_Knockout * @author Webkul * @copyright Copyright (c) Webkul Software Private Limited (https://webkul.com) * @license https://store.webkul.com/license.html */ --> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <module name="Webkul_Knockout" /> </config>
Step-3: Create cms_index_index.xml at app/code/Vendor/Knockout/view/frontend/layout
<?xml version="1.0"?> <!-- /** * Webkul Software. * * @category Webkul * @package Webkul_Knockout * @author Webkul * @copyright Copyright (c) Webkul Software Private Limited (https://webkul.com) * @license https://store.webkul.com/license.html */ --> <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="2columns-left" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <body> <referenceBlock name="content"> <block class="Magento\Framework\View\Element\Template" name="index" template="Webkul_Knockout::index.phtml"/> </referenceBlock> </body> </page>
Step-4: Create index.phtml at app/code/Vendor/Knockout/view/frontend/templates
<div id="webkul-knockout-index" data-bind="scope:'webkul_index'"> <!-- ko template: getTemplate() --> <!-- /ko --> <script type="text/x-magento-init"> { "*": { "Magento_Ui/js/core/app": { "components": { "webkul_index": { "component": "Webkul_Knockout/js/index" } } } } } </script> </div>
Step-5: Create index.js at app/code/Vendor/Knockout/view/frontend/web/js
/** * Webkul Software. * * @category Webkul * @package Webkul_Knockout * @author Webkul * @copyright Copyright (c) Webkul Software Private Limited (https://webkul.com) * @license https://store.webkul.com/license.html */ define([ 'jquery', 'uiComponent', 'ko' ], function ($, Component, ko) { 'use strict'; return Component.extend({ defaults: { template: 'Webkul_Knockout/knockout_index' }, initialize: function () { this._super(); } }); });
Step-6: Create knockout_index.html at app/code/Vendor/Knockout/view/frontend/web/template
<div class="webkul-component"> <div data-bind="text: 'Knockout JS on fronend example'"></div> </div>
Hope this will help you.
Thanks 🙂
Be the first to comment.