app-lib-global
Version:
全局数据操作 -【app-lib-global】
220 lines (203 loc) • 6.81 kB
JavaScript
(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