Toggle Side Panel

  • Blogs
  • Consultants
    • Salesforce Product Expertise
      • Top Salesforce ConsultantsTop Salesforce Consultants
      • Marketing Cloud ConsultantsMarketing Cloud Consultants
      • Service Cloud ConsultantsService Cloud Consultants
      • Experience Cloud ConsultantsExperience Cloud Consultants
      • Analytics Cloud ConsultantsAnalytics Cloud Consultants
    • Salesforce Industry Expertise
      • Non-Profit Cloud ConsultantsNon-Profit Cloud Consultants
      • Financial Service Cloud ConsultantsFinancial Service Cloud Consultants
      • Health Cloud ConsultantsHealth Cloud Consultants
      • Commerce Cloud ConsultantsCommerce Cloud Consultants
      • Manufacturing Cloud ConsultantsManufacturing Cloud Consultants
    • Salesforce Experts by Location
      • USATop Salesforce Consultants in USA
      • IndiaTop Salesforce Consultants in India
      • AustraliaTop Salesforce Consultants in Australia
      • United KingdomTop Salesforce Consultants in UK
      • CanadaTop Salesforce Consultants in Canada
  • Webinars
  • Contact Us
  • Discussions
More options
    Sign in Sign up
    • Blogs
    • Consultants
      • Salesforce Product Expertise
        • Top Salesforce ConsultantsTop Salesforce Consultants
        • Marketing Cloud ConsultantsMarketing Cloud Consultants
        • Service Cloud ConsultantsService Cloud Consultants
        • Experience Cloud ConsultantsExperience Cloud Consultants
        • Analytics Cloud ConsultantsAnalytics Cloud Consultants
      • Salesforce Industry Expertise
        • Non-Profit Cloud ConsultantsNon-Profit Cloud Consultants
        • Financial Service Cloud ConsultantsFinancial Service Cloud Consultants
        • Health Cloud ConsultantsHealth Cloud Consultants
        • Commerce Cloud ConsultantsCommerce Cloud Consultants
        • Manufacturing Cloud ConsultantsManufacturing Cloud Consultants
      • Salesforce Experts by Location
        • USATop Salesforce Consultants in USA
        • IndiaTop Salesforce Consultants in India
        • AustraliaTop Salesforce Consultants in Australia
        • United KingdomTop Salesforce Consultants in UK
        • CanadaTop Salesforce Consultants in Canada
    • Webinars
    • Contact Us
    • Discussions
    Close search

    Activity › Forums › Salesforce® Discussions › Sharing Javascript between salesforce lightning components

    Tagged: Javascript in Salesforce, JS Controller, Manual Sharing, Salesforce Apex, Salesforce Lightning, Salesforce Lightning Components, Sharing Rule

    • Salesforce® Discussions

      Sharing Javascript between salesforce lightning components

      Posted by Kumar on December 22, 2016 at 1:54 PM

      Hi all,
      In a Lightning Component we have the notion of a JavaScript controller and a helper. We can use the helper to call code from the JavaScript controller that is shared between functions, so we can reduce redundancy in the code. This all works great.

      However, I was wondering if it is possible, and if so how, to share code between multiple Lightning Components. It doesn't behave like Apex where you can just reference other class.

      Is there any hack for this?

      Thanks

      Jade replied 7 years, 11 months ago 4 Members · 3 Replies
      • Javascript in Salesforce
      • JS Controller
      • Manual Sharing
      • Salesforce Apex
      • Salesforce Lightning
      • Salesforce Lightning Components
      • Sharing Rule
    • 3 Replies
    • Vikas Kumar

      Member
      January 20, 2017 at 2:22 PM

      Hi Kumar,

      Currently the recommended mechanism for this is to use a Static Resource and include it in any components that need to share the same JavaScript via ltng:require (loads the library once and only once similar to requirejs).

    • [adinserter block='9']
    • CloudGenie

      Member
      February 7, 2017 at 9:26 AM

      Hi Vikas, can we use another parameter in " ltng:require "

    • Jade

      Member
      November 23, 2018 at 9:32 AM

      Hi Kumar,

      Lightning Component Framework is built on OOPS concept, not exactly but somehow. So to answer to your question, you can reuse the functions of one component's HELPER in another Component.

      Lightning Component inheritance is similar to object-oriented inheritance in programming languages like Apex or Java.  When a sub component extends a super component it inherits the super component’s attributes, event handlers, and helper methods.  The controller methods of the super component can be called by the sub component but the documentation warns not to do that and suggests that it may become deprecated.  The recommended approach is to use the helper for any super component code a sub component needs to use.  Additionally, abstract components and interfaces can be created.

      When you want to create a component that can be extended you must set a value of true for the extensible attribute of the aura:component. By default, components are not extensible, just like Apex classes are not. You must put {!v.body} inside your base component’s code. This will allow your base component to handle the events generated by Sub Components.

      Super Component: Base.cmp

      <aura:component extensible="true">

      {!v.body}

      </aura:component>

      Super Component Helper: BaseHelper.js

      ({
      callServer : function(component, method, callback, params, setStorable) {
      var action = component.get(method);

      //Set params if any
      if (params) {
      action.setParams(params);
      }

      if(setStorable){
      actions.setStorable();
      }

      action.setCallback(this,function(response) {
      var state = response.getState();
      if (state === "SUCCESS") {
      // pass returned value to callback function
      callback.call(this,response.getReturnValue());
      } else if (state === "ERROR") {
      // generic error handler
      var errors = response.getError();
      if (errors) {
      console.log("Errors", errors);
      this.showToast({
      "title": "ERROR IN SERVER CALL",
      "type": "error",
      "message": errors
      });
      if (errors[0] && errors[0].message) {
      throw new Error("Error" + errors[0].message);
      }
      } else {
      throw new Error("Unknown Error");
      }
      }
      });

      $A.enqueueAction(action);
      },

      /*
      * This function displays toast based on the parameter values passed to it
      * */
      showToast : function(params) {
      var toastEvent = $A.get("e.force:showToast");
      if(toastEvent){
      if(!params){
      toastEvent.setParams({
      "title": "TOAST ERROR!",
      "type": "error",
      "message": "Toast Param not defined"
      });
      toastEvent.fire();
      } else{
      toastEvent.setParams(params);
      toastEvent.fire();
      }
      } else{
      alert(params.message);
      }
      },
      })

      Sub Component: SubComponent.cmp - Extends Base Component in Component Definition

      <aura:component implements="force:appHostable,flexipage:availableForAllPageTypes"

      extends="c:Base" controller="AccountController" access="global" >

      <aura:attribute name="data" type="Account[]"/>
      <aura:handler name="init" action="{!c.doInit}" value="{!this}"/>

      <aura:iteration items="{!v.data}" var="acc">
      <p><lightning:formattedText value="{!acc.Name}" /></p>
      </aura:iteration>
      </aura:component>

      Sub Component Controller - SubComponentController.js

      ({

      doInit : function(component, event, helper) {

      helper.getAllAccounts(component, helper);

      },

      })

      Sub Component Helper - SubComponentHelper.js

      ({

      getAllAccounts : function(component, helper) {

      //Calling base component's helper method to call Aura Method

      helper.callServer(component, "c.getAccounts",

      function(response){

      if(response){

      component.set("v.data", response);

      //Calling showToast method of Base component

      helper.showToast({

      "title": "SUCCESS",

      "type": "success",

      "message": "Account details are loaded"

      });

      }

      });

      },

      })

      This is how you can share the same code between multiple components and avoid boiler plate codes.

      Few Important Points :

      • Attributes of the component markup, Controller and Helper methods gets inherited and can be used by Sub Components. Along with these, events are also get inherited which can be handled by both Base and Sub Components.
      • You must make your base component, either abstract=true or extensible=true.
      • Your Base component markup must include “{!v.body}”

      Hope this will help.

      Thanks

    Log In to reply.

    • Public
    • All Members
    • My Connections
    • Only Me
    • Public
    • All Members
    • My Connections
    • Only Me
    • Public
    • All Members
    • My Connections
    • Only Me

    Popular Salesforce Blogs

    Salesforce Developer Job Opportunities in 2024

    Blog in Others

    Salesforce Developers are in huge demand due to the rapid growth of Salesforce worldwide. Based on a research by IDC, the number of employment requisition…

    Salesforce Apex Developer, Salesforce App Development, Salesforce Application Developer, Salesforce Career Advice, Salesforce career growth
    Ray brad Sep 11, 2024
    712  Views
    Is Salesforce Really Essential for Small Businesses?

    Is Salesforce Really Essential for Small Businesses?

    Blog in Salesforce Products

    Although Fortune 500 companies receive all the media attention, it is small businesses that run the economy. Small businesses account for 99.7 percent of all…

    Salesforce, Salesforce CRM, Salesforce Essentials, Salesforce for SMBs, Small Businesses
    Amandeep Jun 13, 2018
    4,243  Views

    7 Most Common Questions About Salesforce Certifications

    Blog in Salesforce Certifications

    Salesforce certifications mark the first major milestone in a Salesforce professional’s career. They are great for power users that are looking to dive into Salesforce’s…

    App Builder Certification, Salesforce Admin, Salesforce Admin Certification, Salesforce Adminstrator, Salesforce Career
    Simplilearn May 2, 2019
    4,294  Views

    Popular Salesforce Videos

    What Is Loyalty Management in Salesforce?

    What Is Loyalty Management in Salesforce?

    Video in Salesforce Training

    Loyalty Management is a strategy employed by companies to focus on acquiring, engaging, and retaining customers. Have a glance at this extract to discover what…

    Salesforce Training, Salesforce Tutorial, Customer Relationship Management, customer service, Salesforce Learning
    Cyntexa Nov 16, 2022
    1,538  Views
    Salesforce & Google Analytics integration

    Salesforce & Google Analytics integration

    Video in Salesforce Integration

    Salesforce is one of the most popular CRMs available today. Many teams use Salesforce heavily for reporting and analysis. The ability to model the data…

    Salesforce Training Videos, Salesforce Video Tutorials, Salesforce Google Integration, Salesforce Connector Integration, Salesforce Integration Tutorial
    Abhay Jun 19, 2018
    2,824  Views
    What is Salesforce - The CRM Bringing Companies & Customers Together

    What is Salesforce - The CRM Bringing Companies & Customers Together

    Video in Salesforce Stories

    Salesforce is the world’s #1 customer relationship management (CRM) platform. We help your marketing, sales, commerce, service and IT teams work as one from anywhere…

    Salesforce Training, Salesforce Tutorial, What Is Salesforce, salesforce, CRM
    Vivek Feb 9, 2022
    1,977  Views
    Footer Forcetalks logo

    support@forcetalks.com

    • twitterx

    Quick Links

    Advertise with Us

    Salesforce® Articles

    Dreamforce 2023

    Top Salesforce® Bloggers 2023

    Top Salesforce Consultants

    Get Listed

    Company

    Contact Us

    About Us

    Privacy Policy

    Terms & Conditions

    InsightHub

    Salesforce Blogs

    Salesforce Videos

    Salesforce Groups

    Salesforce Jobs

    © 2026 - Forcetalks ● All Rights Reserved

    Salesforce® is a trademark of Salesforce® Inc. No claim is made to the exclusive right to use “Salesforce”. Any services offered within the Forcetalks website/app are not sponsored or endorsed by Salesforce®.

    We use cookies to enhance your browsing experience. Please see our privacy policy if you'd like more information on our use of cookies.