# nano-loader

> Dynamic Script Loader for Browser.

Latest version **1.1.3** (published 2024-09-11) · MIT license · 0 weekly downloads

## Install

```sh
npm install nano-loader
pnpm add nano-loader
yarn add nano-loader
bun add nano-loader
```

## Health

**Score 45/100 (D)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities; high maintenance score; high quality score.

Warnings: low downloads.

Negative: abandoned.

## Facts

| | |
|---|---|
| Version | 1.1.3 |
| Published | 2024-09-11 |
| First published | 2019-09-08 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 6.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 2 |
| Author | Changwan Jun |
| Maintainers | wan2land |
| Keywords | dynamic import, import, load script, load, script, browser |

## Links

- npm: https://www.npmjs.com/package/nano-loader
- Repository: https://github.com/wan2land/nano-loader
- Homepage: https://github.com/wan2land/nano-loader#readme
- Issues: https://github.com/wan2land/nano-loader/issues
- npm.io page: https://npm.io/package/nano-loader

## Alternatives

- [@opentelemetry/exporter-zipkin](https://npm.io/package/@opentelemetry/exporter-zipkin.md) — 14.8M weekly downloads
- [pusher-js](https://npm.io/package/pusher-js.md) — 2.0M weekly downloads
- [browserify](https://npm.io/package/browserify.md) — 1.7M weekly downloads
- [sqs-consumer](https://npm.io/package/sqs-consumer.md) — 1.7M weekly downloads
- [@sanity/eventsource](https://npm.io/package/@sanity/eventsource.md) — 930.8K weekly downloads

## Recent versions

- 1.1.3 (latest) — 2024-09-11
- 1.1.2 — 2023-06-08
- 1.1.1 — 2023-04-13
- 1.1.0 — 2023-02-02
- 1.0.0 — 2021-06-30
- 1.0.0-beta.1 — 2021-06-14
- 0.0.1 — 2019-09-08

## README

# Nano Loader

<p>
  <a href="https://www.npmjs.com/package/nano-loader"><img alt="Version" src="https://img.shields.io/npm/v/nano-loader.svg?style=flat-square&logo=npm" /></a>
  <a href="https://npmcharts.com/compare/nano-loader?minimal=true"><img alt="Downloads" src="https://img.shields.io/npm/dt/nano-loader.svg?style=flat-square" /></a>
  <a href="https://www.npmjs.com/package/nano-loader"><img alt="License" src="https://img.shields.io/npm/l/nano-loader.svg?style=flat-square" /></a>
</p>

The Nano Loader is a dynamic script loader for browsers, allowing you to seamlessly load and use scripts from any URL on-the-fly. This enables you to efficiently access and integrate scripts from various sources.

## Installation

```bash
npm install nano-loader --save
```

## Usage

`load`

The load method retrieves a script from the specified URL, making it readily available for use within your code. This enables you to easily fetch and incorporate scripts from various sources.

```ts
import { load } from 'nano-loader'

await load('https://something.com/payment.js')

console.log(window.Something.payment()) // work!
```

`once`

The once method guarantees that a script is loaded just once, regardless of how often it is called. This feature is helpful for preventing unnecessary script loading and enhancing overall performance.

```js
import { once, load } from 'nano-loader'

const loadPayment = once(() => load('https://something.com/payment.js'))

// Attempts to load the script 10000 times, but only loads it once.
await Promise.all([...Array(10000).keys()].map(() => loadPayment()))

console.log(window.Something.payment())
```

## Examples

### Use with Kakao Map + Vue

```js
import { once, load } from 'nano-loader'

const KAKAO_KEY = process.env.KAKAO_KEY

const loadKakaoMapSdk = once(
  () => load(`//dapi.kakao.com/v2/maps/sdk.js?appkey=${KAKAO_KEY}&libraries=services&autoload=false`)
    .then(() => new Promise((resolve) => window.kakao.maps.load(resolve)))
    .then(() => window.kakao.maps)
)

export default {
  mount() {
    const maps = await loadKakaoMapSdk()
    maps.Map(/* ... */)
  },
}

```

---
_Source: https://npm.io/package/nano-loader · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
