Page Contents

@loopback/example-webpack

This example illustrates how to bundle @loopback/core using webpack to allow LoopBack’s Dependency Injection can be run inside a browser.

Webpack configurations

We add webpack.config.js to define two configurations for Node.js and Web.

Use

Use one of the following commands to build dist/bundle-web.js to package this example application into a JavaScript file for browsers.

npm run build:webpack
npx webpack

Now dist/bundle-web.js can be used for HTML pages, for example:

<!DOCTYPE html>
<html>
  <head>
    <title>LoopBack 4 Core Modules WebPack Demo</title>
    <script src="dist/bundle-web.js" charset="utf-8"></script>
  </head>
  <body>
    <div id="greetings"></div>

    <script>
      async function greet() {
        const element = document.getElementById('greetings');

        // Exported TypeScript functions/classes/types/constants are now
        // available under `LoopBack` namespace
        const greetings = await LoopBack.main();

        const list = greetings.map(g => `<li>${g}</li>`);
        element.innerHTML = `
  <h1>Hello from LoopBack</h1>
  <p/>
  <ul>
    ${list.join('\n')}
  </ul>`;
        return greetings;
      }

      greet().catch(err => alert(err));
    </script>
  </body>
</html>

Open index.html in a browser, you’ll see LoopBack is now running inside the browser as client-side JavaScript:

Hello from LoopBack:
[2020-09-14T07:54:09.220Z] (en) Hello, Jane!
[2020-09-14T07:54:09.227Z] Hello, John!
[2020-09-14T07:54:09.230Z] (zh) 你好,John!
[2020-09-14T07:54:09.231Z] (en) Hello, Jane!

CDN

Once the package is published to npm, we can use unpkg as the CDN using one of the following flavors:

<script src="https://unpkg.com/@loopback/example-webpack" crossorigin></script>
<script
  src="https://unpkg.com/@loopback/example-webpack@0.1.0"
  crossorigin
></script>
<script
  src="https://unpkg.com/@loopback/example-webpack@0.1.0/dist/bundle-web.js"
  crossorigin
></script>

Contributions

Tests

Run npm test from the root folder.

Contributors

See all contributors.

License

MIT