76 lines
2.1 KiB
Markdown
76 lines
2.1 KiB
Markdown
# Import your own JavaScript Library
|
|
|
|
The custom JavaScript library needs to be imported using the UMD approach.
|
|
|
|
That means the following approach will fail:
|
|
|
|
```javascript
|
|
function ULID() {
|
|
...
|
|
return function() {
|
|
...
|
|
};
|
|
}
|
|
exports.ULID = ULID
|
|
```
|
|
|
|
UMD uses a single wrapper function to check for the presence of `module.exports` (indicating a CommonJS environment) and `define.amd` (indicating an AMD environment). If neither is found, it assumes it is running in a browser and attaches the module to the global `window` object.
|
|
|
|
Here is a simplified example of a UMD module:
|
|
|
|
```javascript
|
|
(function (root, factory) {
|
|
if (typeof define === 'function' && define.amd) {
|
|
// AMD. Register as an anonymous module.
|
|
define([], factory);
|
|
} else if (typeof module === 'object' && module.exports) {
|
|
// Node. Does not work with strict CommonJS, but
|
|
// only CommonJS-like environments that support module.exports,
|
|
// like Node.
|
|
module.exports = factory();
|
|
} else {
|
|
// Browser globals (root is window)
|
|
root.myModule = factory();
|
|
}
|
|
}(typeof self !== 'undefined' ? self : this, function () {
|
|
// Your module code goes here
|
|
|
|
var myModule = {};
|
|
myModule.hello = function () {
|
|
return 'Hello, world!';
|
|
};
|
|
|
|
return myModule;
|
|
}));
|
|
```
|
|
|
|
In the example case, the new code structure would be:
|
|
|
|
```javascript
|
|
(function (global, factory) {
|
|
if (typeof define === "function" && define.amd) {
|
|
define(["exports"], factory);
|
|
} else if (typeof exports !== "undefined") {
|
|
factory(exports);
|
|
} else {
|
|
var mod = {
|
|
exports: {}
|
|
};
|
|
factory(mod.exports);
|
|
global.ULID = mod.exports;
|
|
}
|
|
})(this, function (exports) {
|
|
function ULID() {
|
|
...
|
|
}
|
|
|
|
function generator(){
|
|
var ulid = new ULID()
|
|
return ulid()
|
|
}
|
|
exports.generator = generator;
|
|
});
|
|
```
|
|
|
|
Find the discussion to it in our Github: [https://github.com/lowcoder-org/lowcoder/discussions/524](https://github.com/lowcoder-org/lowcoder/discussions/524)
|