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, 9 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

    User Authentication in Salesforce using Two Factor Authentication 2FA

    Salesforce User Authentication : Two Factor Authentication

    Blog in Salesforce Implementation, Salesforce Security

    User Authentication a process to authorize someone to access specific resources. Username and password we generally used for authentication purpose but in the advanced world of…

    One Time Password, OTP, Permission Sets in Salesforce, Salesforce Data Security, Salesforce Org
    Archit Mar 28, 2018
    11,137  Views
    Freeze and Deactivate User Accounts in Salesforce

    How to Freeze and Deactivate User Accounts in Salesforce

    Blog in Salesforce

    Introduction  Here we are going to learn about how to freeze the user and deactivate the user. If your employee left your company then you…

    Company Information, Deactivate the User, Deactivating the User Account, Freeze the User, Freezing of User Accounts
    Anshu Oct 25, 2021
    5,894  Views

    Top Salesforce Products to Boost Your Sales Team's Performance in 2023

    Blog in Salesforce Products

    Salesforce is a cloud-based platform that offers comprehensive support to businesses in managing their communication with individual clients from start to finish. This article highlights…

    App Cloud, audiences, Automation options, Business actions, Businesses
    Outsource Management Inc. Apr 24, 2023
    1,043  Views

    Popular Salesforce Videos

    Salesforce Resume Review

    Salesforce Resume Review

    Video in Salesforce Stories

    Salesforce is a well-known company and leader in the cloud computing space so we would say it would be an asset on a resume. Thinking…

    Salesforce Jobs, Salesforce Developer, salesforce, Cloud Computing, Salesforce Video
    Jogender Aug 19, 2020
    1,788  Views
    5 Important Topics to Crack Salesforce Platform Developer 1 Exam

    5 Important Topics to Crack Salesforce Platform Developer 1 Exam

    Video in Salesforce Certifications

    In this video, Shrey gives you an important topic which gonna be really very helpful for crack the Platform Developer 1 Certification. Without mastering these…

    Salesforce Tutorial, Salesforce Certification, salesforce platform, Platform Developer 1 Certification, Salesforce VIdeos
    Prafull Apr 9, 2021
    2,239  Views
    When to use which Sandbox? Salesforce Interview Questions and Answers

    When to use which Sandbox? Salesforce Interview Questions and Answers

    Video in Salesforce Admin

    Watch this video by CRS Info Solutions to when to use which Sandbox. Salesforce sandboxes are copies of your Production environment. A Sandbox contains all the…

    Salesforce Training, Salesforce Tutorial, Salesforce Online Training, Salesforce Admin, Salesforce Video
    CRS Dec 16, 2021
    2,749  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.