0

I'm trying to use spin.js (https://spin.js.org/#!) from the client but am I have some problems.
Doing

npm install spin.js

then

const Spinner = require('spin.js');

does not work as you need to browserify the module in order to use the module from the client.

I've also tried to copy and past spin.js (https://spin.js.org/spin.js) and refer it from the html but it gave me an error in spin.js at

export { Spinner };

as

Uncaught SyntaxError: Unexpected token export

What is needed to use spin.js from a client?

3
  • Version 4.0.0 of spin.js Commented May 14, 2018 at 16:40
  • did you verify that you're using the correct path in require('spin.js')? Commented May 14, 2018 at 16:44
  • @sampolify yeah the word require will give you an error, not the location Commented May 14, 2018 at 23:56

1 Answer 1

6

Ok so I figured it out.

What you have to do is:

Copy the spin.js file into your local filesystem (call it spin.js) and refer to the local spin.js at the end of the body tag in the html file.

...
<script type="text/javascript" src="js/spin.js"></script>
<script type="text/javascript" src="js/scriptWithSpinner.js"></script>
</body>

Comment out the following line in spin.js.

export { Spinner };

Copy the CSS from https://spin.js.org/spin.css and store it in your local filesystem. Refer to the CSS from the header of the html file.

<head>
    <meta charset="utf-8">
    ...

    <link rel="stylesheet" type="text/css" href="mystyles.css" />
    <link rel="stylesheet" type="text/css" href="spin.css" />
    ...
</head>

If you are using express, you might need to expose the directory with the js and CSS in your server code so the html file can read it.

Now you can directly use globally defined Spinner object from scriptWithSpinner.js, no imports or requires necessary.

scriptWithSpinner.js

var opts = {
  lines: 13, // The number of lines to draw
  length: 38, // The length of each line
  width: 17, // The line thickness
  radius: 45, // The radius of the inner circle
  scale: 1, // Scales overall size of the spinner
  corners: 1, // Corner roundness (0..1)
  color: '#ffffff', // CSS color or array of colors
  fadeColor: 'transparent', // CSS color or array of colors
  speed: 1, // Rounds per second
  rotate: 0, // The rotation offset
  animation: 'spinner-line-fade-quick', // The CSS animation name for the lines
  direction: 1, // 1: clockwise, -1: counterclockwise
  zIndex: 2e9, // The z-index (defaults to 2000000000)
  className: 'spinner', // The CSS class to assign to the spinner
  top: '50%', // Top position relative to parent
  left: '50%', // Left position relative to parent
  shadow: '0 0 1px transparent', // Box-shadow for the lines
  position: 'absolute' // Element positioning
};

var target = document.getElementsByClassName('uploader')[0];
var spinner = new Spinner(opts).spin(target);
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.