GithubHelp home page GithubHelp logo

kabirbaidhya / get-js Goto Github PK

View Code? Open in Web Editor NEW
3.0 2.0 4.0 683 KB

A lightweight library to asynchronously load scripts on the fly

Home Page: https://yarn.pm/get-js

License: MIT License

JavaScript 92.78% Shell 7.22%
script loading javascript get js async loader promise angular

get-js's Introduction

get-js

NPM Version NPM Downloads License: MIT Build Status

A lightweight library to asynchronously load scripts on the fly.

Installation

# Using npm
$ npm install get-js --save

# Using Yarn
$ yarn add get-js

# Using Bower
$ bower install get-js --save

For older browsers you may also need a promise polyfill.

# Install promise polyfill.
$ npm install es6-promise

Usage

Use it in your project with require or import as an ES module.

const get = require('get-js');

// ES2015+
import get from 'get-js';

Or, using <script> tags:

<script type="text/javascript" src="https://unpkg.com/[email protected]/dist/get.min.js"></script>

Here you go:

// Load a single script
get('https://code.jquery.com/jquery-3.4.1.min.js').then(function() {
  console.log('do something');
});

// Load multiple scripts, without changing the order
get(['/js/abc.js', '/js/xyz.js'])
  .then(function() {
    console.log('do something now');
  })
  .catch(function() {
    console.log('error');
  });

If you're using ES2015+ / TypeScript codebase, you can also use async / await syntax with get:

import get from 'get-js';

(async () => {
  await get('https://code.jquery.com/jquery-3.4.1.min.js'); // Gets jQuery.

  $(document).on('ready', () => {
    console.log('Ready!');
  });
})();

Using with Angular

Note: This refers to angular 1.x projects.

You can inject this in your angular code as a service.

Require the angular module using

const angularGetJs = require('get-js/angular');

Or

<script type="text/javascript" src="https://unpkg.com/[email protected]/dist/angular-get.min.js"></script>

Then you should be able to use it like this:

// Add the module as a dependency in your app.
angular.module('app', ['angularGetJs']);

// Inject the service
angular.module('app').controller('MyController', [
  'get',
  function(get) {
    get('/some/script.js')
      .then(function() {
        console.log('do something now');
      })
      .catch(function() {
        console.log('error');
      });
  }
]);

Development

To start developing or contributing to get-js, you'll need to clone the project first.

  1. Clone it locally.

    $ git clone [email protected]:kabirbaidhya/get-js.git
    
  2. Install dependencies.

    $ yarn
    
  3. Linting

    $ yarn lint
    
  4. Generating a build.

    $ yarn build
    

License

This package is licensed under the MIT License.

get-js's People

Contributors

bambutz avatar beinganonymous avatar bhattaraib58 avatar dependabot[bot] avatar kabirbaidhya avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

get-js's Issues

A `$q` friendly wrapper service for using in angular projects

Have a wrapper service for using in angular projects only something like angular-get.min.js to allow us doing something like this:

angular.module('app')
    .controller('MyController', ['get',
        function (get) {
            var vm = this;

            get('/js/somescripts.js').then(function() {
                 // Do something now
            });
        }
    ]);

The promise it returns should be based on $q. This makes it angular friendly.

Should load styles as well

It should be able to load styles just like loading scripts.

get([
    '/js/abc.css',
    '/js/xyz.css'
]);

If the file extension is .css then it should automatically assume the content-type to be text/css instead of text/javascript.

But also should offer a way to explicitly set the mime-type if needed using an optional second parameter.

Like this:

get([
    '/js/abc',
    '/js/xyz'
], 'text/css');

get([
    '/js/abc',
    '/js/xyz'
], 'text/javascript');

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.