UNPKG

app-lib-global

Version:

全局数据操作 -【app-lib-global】

220 lines (203 loc) 6.81 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else { var a = factory(); for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; } })(this, () => { return /******/ (() => { // webpackBootstrap /******/ "use strict"; /******/ // The require scope /******/ var __webpack_require__ = {}; /******/ /************************************************************************/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = (exports, definition) => { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/global */ /******/ (() => { /******/ __webpack_require__.g = (function() { /******/ if (typeof globalThis === 'object') return globalThis; /******/ try { /******/ return this || new Function('return this')(); /******/ } catch (e) { /******/ if (typeof window === 'object') return window; /******/ } /******/ })(); /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) /******/ })(); /******/ /******/ /* webpack/runtime/make namespace object */ /******/ (() => { /******/ // define __esModule on exports /******/ __webpack_require__.r = (exports) => { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ })(); /******/ /************************************************************************/ var __webpack_exports__ = {}; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "ENV": () => (/* binding */ ENV), /* harmony export */ "bindToGlobal": () => (/* binding */ bindToGlobal), /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), /* harmony export */ "getEnv": () => (/* binding */ getEnv), /* harmony export */ "getGlobal": () => (/* binding */ getGlobal), /* harmony export */ "getbindData": () => (/* binding */ getbindData), /* harmony export */ "isBindToGlobal": () => (/* binding */ isBindToGlobal), /* harmony export */ "isBroswerEnv": () => (/* binding */ isBroswerEnv), /* harmony export */ "isNodeEnv": () => (/* binding */ isNodeEnv) /* harmony export */ }); /** * 支持的环境变量 * ``` * * NODE: 'node', // ndoejs 环境 * * BROWSER: 'browser', // 浏览器环境 * ``` */ const ENV = { NODE: 'node', // ndoejs 环境 BROWSER: 'browser', // 浏览器环境 } /** * 获取当前环境 * * @function * @returns {string} 当前环境常量 */ const getEnv = () => { // 切换为判断是否为nodejs 因为小程序使用的时候不是nodejs 当做浏览器模式 const isNodeJs = typeof process !== 'undefined' && process.release != null && process.release.name === 'node'; if (isNodeJs) return ENV.NODE; return ENV.BROWSER; } /** * 判断是否为nodejs环境 * * @function * @returns {Boolean} * * true 是nodejs环境 * * false 不是nodejs环境 */ const isNodeEnv = () => getEnv() === ENV.NODE; /** * 判断是否为浏览器环境 * * @function * @returns {Boolean} * * true 是浏览器环境 * * false 不是浏览器环境 */ const isBroswerEnv = () => getEnv() === ENV.BROWSER; /** * 获取全局变量 * * * @returns {Object} - 获取的全局变量 * * window * * global * @description * 获取当前运行环境的全局变量 * * 支持浏览器 window * * 支持nodejs gloabl * @function */ // export const getGlobal = () => { // let root; // if (typeof global === 'object') { // root = global; // } else { // root = this.window; // } // return root; // } const getGlobal = () => { return __webpack_require__.g; } /** * 获取绑定数据 * * * @param {string} namespace 命名空间 * @returns {any} 已绑定的值 * @function */ const getbindData = (namespace) => { let root = getGlobal(); if (!root) throw new Error('未找到当前环境的全局变量'); return root[namespace]; } /** * 绑定数据到全局 * * * @param {string} namespace 命名空间 * @param {any} bindData 绑定数据 * @param {boolean} [isForce=false] 是否强制绑定 - 存在当前值时,进行强制绑定 * @returns {any} 全局已绑定的值 * @function */ const bindToGlobal = (namespace, bindData, isForce) => { let isBind = isBindToGlobal(namespace); if (isBind && !isForce) return getbindData(namespace); let root = getGlobal() root[namespace] = bindData; return bindData; } /** * 是否也绑定到全局 * * * @param {string} namespace 命名空间 * @param {Object} [needbindData='undefined'] - 绑定对象 * @returns {boolean} 是否绑定 * * true 已绑定 * * false 未绑定 * @description * 是否也绑定到全局 * * needbindData 绑定对象不为undefined时: * * 比对值相等 或者 json 序列化后相等 则表示已绑定 * @function */ const isBindToGlobal = (namespace, needbindData) => { if (!namespace) throw new Error('必须执行绑定名称'); let root = getGlobal(); /** * @throws {DOMException} */ if (!root) throw new Error('未找到当前环境的全局变量'); let bindData = root[namespace]; // 全局对象上的属性为undifed 表示未绑定 if (void 0 === bindData) return false; // 需要比对指定绑定的值 值直接相等或者json 序列化后相等 则表示1已绑定 if (void 0 != needbindData) { return bindData === needbindData || JSON.stringify(bindData) === JSON.stringify(needbindData); } return true; } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (bindToGlobal); /******/ return __webpack_exports__; /******/ })() ; }); //# sourceMappingURL=index-bundle.js.map