mousheng / lowcoder_CN

🔥🔥🔥开源Retool, Tooljet和Appsmith的替代方案,码匠的开源版
GNU Affero General Public License v3.0
159 stars 47 forks source link

[Feat]:引入自己编写javascript库示例 #66

Open exqmjmz opened 10 months ago

exqmjmz commented 10 months ago

这是一个引入自行编写的javascript库示例

自行编写的库需采用UMD modules方式引用

这是一个生成ulid的示例代码,通过以下代码可以生成ulid 1、保存成一个js文件,上传至可以对外访问,并且允许跨域的http服务上 2、通过设置中,高级选项,库安装,把自己的自定义库安装上 3、新建一个查询

(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) {
    "use strict";

    /**
     * Constructs a ULID generator closure that emits universally unique,
     * monotonic values.
     *
     * var generator = ULID();
     * var ulid0 = generator();
     * var ulid1 = generator();
     * assert(ulid0 < ulid1);
     */
    function ULID() {
        var BASE32 = [
            '0', '1', '2', '3', '4', '5', '6', '7',
            '8', '9', 'A', 'B', 'C', 'D', 'E', 'F',
            'G', 'H', 'J', 'K', 'M', 'N', 'P', 'Q',
            'R', 'S', 'T', 'V', 'W', 'X', 'Y', 'Z'
        ];
        var last = -1;
        /* Pre-allocate work buffers / views */
        var ulid = new Uint8Array(16);
        var time = new DataView(ulid.buffer, 0, 6);
        var rand = new Uint8Array(ulid.buffer, 6, 10);
        var dest = new Array(26);

        function encode(ulid) {
            dest[0] = BASE32[ulid[0] >> 5];
            dest[1] = BASE32[(ulid[0] >> 0) & 0x1f];
            for (var i = 0; i < 3; i++) {
                dest[i * 8 + 2] = BASE32[ulid[i * 5 + 1] >> 3];
                dest[i * 8 + 3] = BASE32[(ulid[i * 5 + 1] << 2 | ulid[i * 5 + 2] >> 6) & 0x1f];
                dest[i * 8 + 4] = BASE32[(ulid[i * 5 + 2] >> 1) & 0x1f];
                dest[i * 8 + 5] = BASE32[(ulid[i * 5 + 2] << 4 | ulid[i * 5 + 3] >> 4) & 0x1f];
                dest[i * 8 + 6] = BASE32[(ulid[i * 5 + 3] << 1 | ulid[i * 5 + 4] >> 7) & 0x1f];
                dest[i * 8 + 7] = BASE32[(ulid[i * 5 + 4] >> 2) & 0x1f];
                dest[i * 8 + 8] = BASE32[(ulid[i * 5 + 4] << 3 | ulid[i * 5 + 5] >> 5) & 0x1f];
                dest[i * 8 + 9] = BASE32[(ulid[i * 5 + 5] >> 0) & 0x1f];
            }
            return dest.join('');
        }

        return function () {
            var now = Date.now();
            if (now === last) {
                /* 80-bit overflow is so incredibly unlikely that it's not
                 * considered as a possiblity here.
                 */
                for (var i = 9; i >= 0; i--)
                    if (rand[i]++ < 255)
                        break;
            } else {
                last = now;
                time.setUint16(0, (now / 4294967296.0) | 0);
                time.setUint32(2, now | 0);
                window.crypto.getRandomValues(rand);
            }
            return encode(ulid);
        };
    }
    function generator(){
        var ulid = new ULID()
        return ulid()
    }
    // expose ulid to other modules
    exports.generator = generator;
});

运行查询后返回内容 image

umd-example最小demo,可以通过这个demo修改自己的库

// File log.js
(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.log = mod.exports;
  }
})(this, function (exports) {
  "use strict";

  function log() {
    console.log("Example of UMD module system");
  }
  // expose log to other modules
  exports.log = log;
});