From 2a7d2572adb4ca41112866d34fbb23c60daa1290 Mon Sep 17 00:00:00 2001 From: lh <2162551649@qq.com> Date: Wed, 18 Dec 2024 19:36:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=95=B0=E6=8D=AE=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E5=92=8C=E5=B7=A5=E4=BD=9C=E7=9A=84=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sky/controller/user/ShopController.java | 39 +- user/mp-weixin/common/main.js | 285 +++++--- user/mp-weixin/common/runtime.js | 662 +++++++++++------- user/mp-weixin/components/empty/empty.js | 129 +++- 4 files changed, 749 insertions(+), 366 deletions(-) diff --git a/sky-server/src/main/java/com/sky/controller/user/ShopController.java b/sky-server/src/main/java/com/sky/controller/user/ShopController.java index 9afd677..7d8f696 100644 --- a/sky-server/src/main/java/com/sky/controller/user/ShopController.java +++ b/sky-server/src/main/java/com/sky/controller/user/ShopController.java @@ -1,32 +1,61 @@ package com.sky.controller.user; - import com.sky.result.Result; +// 引入自定义的Result类,用于统一API响应格式 import io.swagger.annotations.Api; +// 引入Swagger注解,用于生成API文档 import io.swagger.annotations.ApiOperation; +// 引入Swagger注解,用于标注API操作 import lombok.extern.slf4j.Slf4j; +// 引入Slf4j注解,用于生成日志记录器 import org.springframework.beans.factory.annotation.Autowired; +// 引入Spring注解,用于自动注入依赖 import org.springframework.data.redis.core.RedisTemplate; +// 引入Spring的RedisTemplate,用于操作Redis import org.springframework.web.bind.annotation.*; +// 引入Spring的注解,处理HTTP请求 +/** + * ShopController类是一个处理与店铺相关接口的控制器,主要用于获取店铺的营业状态。 + * 它提供了一个API接口,能够从Redis中获取店铺的营业状态(例如:是否营业中)。 + */ @RestController("userShopController") +// 注明这是一个Spring的RESTful控制器,指定其bean的名称 @RequestMapping("/user/shop") +// 设置根路径映射为 "/user/shop",所有的请求路径都会以此为前缀 @Api(tags = "店铺相关接口") +// 使用Swagger注解,定义该控制器的API文档分类为“店铺相关接口” @Slf4j +// 启用Slf4j日志功能,自动生成日志对象 public class ShopController { public static final String KEY = "SHOP_STATUS"; + + // 定义Redis中存储店铺营业状态的key,"SHOP_STATUS" + @Autowired + // 自动注入RedisTemplate实例,便于操作Redis private RedisTemplate redisTemplate; - /* - * 获取店铺营业状态 - * */ + /** + * 获取店铺的营业状态。 + * 该方法从Redis中获取店铺状态(例如:是否营业中),并将状态返回给调用者。 + * 如果状态为1,则表示“营业中”;否则表示“打烊中”。 + * + * @return 返回店铺的营业状态,包装在统一的Result对象中。 + */ @ApiOperation("获取店铺营业状态") + // Swagger注解,描述该方法的功能 @GetMapping("/status") + // 映射HTTP GET请求,路径为 "/user/shop/status" public Result getStatus(){ + // 从Redis中获取存储的店铺状态,值为1时表示营业中,否则表示打烊中 Integer status = (Integer) redisTemplate.opsForValue().get(KEY); - log.info("获取店铺营业状态:{}",status == 1 ? "营业中" : "打烊中"); + + // 记录日志,输出当前店铺的营业状态 + log.info("获取店铺营业状态:{}", status == 1 ? "营业中" : "打烊中"); + + // 返回一个包含状态的成功响应结果 return Result.success(status); } } diff --git a/user/mp-weixin/common/main.js b/user/mp-weixin/common/main.js index a6fff47..118dc22 100644 --- a/user/mp-weixin/common/main.js +++ b/user/mp-weixin/common/main.js @@ -1,74 +1,172 @@ (global["webpackJsonp"] = global["webpackJsonp"] || []).push([["common/main"],[ -/* 0 */ -/*!*****************************************************!*\ - !*** D:/project/project-rjwm-weixin-uniapp/main.js ***! - \*****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /* 0 */ + /*!*****************************************************!*\ + !*** D:/project/project-rjwm-weixin-uniapp/main.js ***! + \*****************************************************/ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -"use strict"; -/* WEBPACK VAR INJECTION */(function(createApp) {__webpack_require__(/*! uni-pages */ 5); + "use strict"; + /* WEBPACK VAR INJECTION */(function(createApp) { + // 引入 uni-pages 模块,主要用于自动注册页面路由 + __webpack_require__(/*! uni-pages */ 5); -var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 4)); -var _App = _interopRequireDefault(__webpack_require__(/*! ./App */ 6)); -var _store = _interopRequireDefault(__webpack_require__(/*! ./store */ 12)); -__webpack_require__(/*! @/styles/common.scss */ 14);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function ownKeys(object, enumerableOnly) {var keys = Object.keys(object);if (Object.getOwnPropertySymbols) {var symbols = Object.getOwnPropertySymbols(object);if (enumerableOnly) symbols = symbols.filter(function (sym) {return Object.getOwnPropertyDescriptor(object, sym).enumerable;});keys.push.apply(keys, symbols);}return keys;}function _objectSpread(target) {for (var i = 1; i < arguments.length; i++) {var source = arguments[i] != null ? arguments[i] : {};if (i % 2) {ownKeys(Object(source), true).forEach(function (key) {_defineProperty(target, key, source[key]);});} else if (Object.getOwnPropertyDescriptors) {Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));} else {ownKeys(Object(source)).forEach(function (key) {Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));});}}return target;}function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;} // @ts-ignore -wx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__; -_vue.default.config.productionTip = false; -_vue.default.prototype.$store = _store.default; + // 引入 Vue 和 App 组件,vue 是整个项目的框架,App 是入口组件 + var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 4)); + var _App = _interopRequireDefault(__webpack_require__(/*! ./App */ 6)); + // 引入 Vuex store(状态管理) + var _store = _interopRequireDefault(__webpack_require__(/*! ./store */ 12)); + // 引入全局样式文件 + __webpack_require__(/*! @/styles/common.scss */ 14); -_App.default.mpType = 'app'; + // 定义 _interopRequireDefault 函数,用于判断是否需要返回模块的默认导出 + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } -var app = new _vue.default(_objectSpread({ - store: _store.default }, -_App.default)); + // 定义 ownKeys 函数,用于获取对象的所有可枚举属性和符号属性 + function ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + if (enumerableOnly) symbols = symbols.filter(function (sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + }); + keys.push.apply(keys, symbols); + } + return keys; + } -createApp(app).$mount(); -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["createApp"])) + // 定义 _objectSpread 函数,用于合并多个对象 + function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {}; + if (i % 2) { + ownKeys(Object(source), true).forEach(function (key) { + _defineProperty(target, key, source[key]); + }); + } else if (Object.getOwnPropertyDescriptors) { + Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); + } else { + ownKeys(Object(source)).forEach(function (key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + } + return target; + } + + // 定义 _defineProperty 函数,用于给对象添加或修改属性 + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + return obj; + } + + // 给微信小程序模块挂载 webpack 的 require 函数 + wx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__; + + // 设置 Vue 的生产提示为 false,避免在生产环境中显示 Vue 的警告信息 + _vue.default.config.productionTip = false; + + // 将 Vuex store 挂载到 Vue 的原型上,这样所有组件都可以通过 this.$store 访问到 Vuex 状态 + _vue.default.prototype.$store = _store.default; + + // 设置 App 组件的 mpType 属性为 'app',表示这是小程序的根组件 + _App.default.mpType = 'app'; + + // 创建 Vue 实例,并挂载 Vuex store 和 App 组件 + var app = new _vue.default(_objectSpread({ + store: _store.default + }, _App.default)); + + // 使用 createApp 函数将 app 实例挂载到页面 + createApp(app).$mount(); + + /* WEBPACK VAR INJECTION */ + }.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["createApp"])) + + /***/ }), + /* 1 */, + /* 2 */, + /* 3 */, + /* 4 */, + /* 5 */, + /* 6 */ + /*!*****************************************************!*\ + !*** D:/project/project-rjwm-weixin-uniapp/App.vue ***! + \*****************************************************/ + /*! no static exports found */ + /***/ (function(module, __webpack_exports__, __webpack_require__) { + + "use strict"; + __webpack_require__.r(__webpack_exports__); + /* harmony import */ var _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./App.vue?vue&type=script&lang=js& */ 7); + /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__)); + /* harmony import */ var _App_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./App.vue?vue&type=style&index=0&lang=css& */ 9); + /* harmony import */ var _F_HBuilderX_2_2_2_20190816_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 11); + +// 该部分代码是引入 App.vue 组件的脚本、样式和其他必要的运行时资源 + + var render, staticRenderFns, recyclableRender, components + var renderjs + +// 这里是组件的渲染和初始化逻辑 -/***/ }), -/* 1 */, -/* 2 */, -/* 3 */, -/* 4 */, -/* 5 */, -/* 6 */ -/*!*****************************************************!*\ - !*** D:/project/project-rjwm-weixin-uniapp/App.vue ***! - \*****************************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./App.vue?vue&type=script&lang=js& */ 7); -/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__)); -/* harmony import */ var _App_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./App.vue?vue&type=style&index=0&lang=css& */ 9); -/* harmony import */ var _F_HBuilderX_2_2_2_20190816_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 11); -var render, staticRenderFns, recyclableRender, components -var renderjs + /* normalize component */ +// 使用 componentNormalizer 组件正常化工具来处理 Vue 组件的渲染逻辑 +// 这里引入了从 vue-loader 生成的运行时组件正常化工具,确保 Vue 组件在不同的环境中能够正常渲染 + var component = Object(_F_HBuilderX_2_2_2_20190816_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( + // 传入 App 组件的 JavaScript 逻辑部分(脚本) + _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"], -/* normalize component */ + // 渲染函数,负责描述组件的 UI 结构 + render, -var component = Object(_F_HBuilderX_2_2_2_20190816_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( - _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"], - render, - staticRenderFns, - false, - null, - null, - null, - false, - components, - renderjs -) + // 静态渲染函数,用于描述不需要每次重新渲染的部分(比如静态模板) + staticRenderFns, + + // `false` 表示不启用可重用渲染,通常用于有条件渲染的组件 + false, + + // 传入组件的额外参数,通常为样式、scoped 样式等 + null, + + // 这个字段没有使用,通常用于处理组件的生命周期或其他功能 + null, + + // 这个字段也没有使用,通常用于其他的自定义配置 + null, + + // `false` 表示不启用组件的深度更新(用于性能优化) + false, + + // 引入的组件列表(如有)以及相关的渲染逻辑 + components, + + // 渲染时需要的 JavaScript 代码(如存在自定义渲染逻辑) + renderjs + ) + +// 通过正常化后的组件对象来设定文件路径,这通常在开发工具中用来调试和显示源文件信息 + component.options.__file = "App.vue" + +// 将正常化后的组件导出为默认模块 + /* harmony default export */ __webpack_exports__["default"] = (component.exports); -component.options.__file = "App.vue" -/* harmony default export */ __webpack_exports__["default"] = (component.exports); /***/ }), /* 7 */ @@ -90,21 +188,40 @@ __webpack_require__.r(__webpack_exports__); /*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/project/project-rjwm-weixin-uniapp/App.vue?vue&type=script&lang=js& ***! \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + "use strict"; +// 设置 ES6 模块导出 + Object.defineProperty(exports, "__esModule", { value: true }); + +// 默认导出一个对象,包含生命周期方法 + exports.default = void 0; + +// 定义一个包含应用生命周期钩子的对象 + var _default = { + // 应用启动时触发的钩子 + onLaunch: function onLaunch() { + // 当应用启动时输出 'App Launch',用于调试或日志记录 + console.log('App Launch'); + }, + + // 应用显示时触发的钩子 + onShow: function onShow() { + // 当应用显示时输出 'App Show',用于调试或日志记录 + console.log('App Show'); + }, + + // 应用隐藏时触发的钩子 + onHide: function onHide() { + // 当应用隐藏时输出 'App Hide',用于调试或日志记录 + console.log('App Hide'); + } + }; + +// 将生命周期方法对象作为默认导出 + exports.default = _default; -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _default = -{ - onLaunch: function onLaunch() { - console.log('App Launch'); - }, - onShow: function onShow() { - console.log('App Show'); - }, - onHide: function onHide() { - console.log('App Hide'); - } };exports.default = _default; /***/ }), /* 9 */ @@ -122,17 +239,25 @@ __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = (_F_HBuilderX_2_2_2_20190816_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_F_HBuilderX_2_2_2_20190816_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_F_HBuilderX_2_2_2_20190816_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_F_HBuilderX_2_2_2_20190816_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_F_HBuilderX_2_2_2_20190816_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_F_HBuilderX_2_2_2_20190816_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_F_HBuilderX_2_2_2_20190816_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); /***/ }), -/* 10 */ -/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-oneOf-1-2!./node_modules/postcss-loader/src??ref--6-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/project/project-rjwm-weixin-uniapp/App.vue?vue&type=style&index=0&lang=css& ***! - \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /* 10 */ + /*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-oneOf-1-2!./node_modules/postcss-loader/src??ref--6-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/project/project-rjwm-weixin-uniapp/App.vue?vue&type=style&index=0&lang=css& ***! + \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -// extracted by mini-css-extract-plugin + // 提取 CSS 样式的代码通过 mini-css-extract-plugin 插件处理 + // 在这里,使用了 mini-css-extract-plugin 来提取 CSS 文件,而非在 JS 中直接引入样式 + // 该插件将所有的 CSS 提取到一个独立的文件中,这样做的好处是可以使 CSS 文件并行加载,提高页面加载速度 + + // 如果为 false,则会跳过 CSS 重载代码 + // 这行代码是为了处理 CSS 热更新,在开发模式下会使用 CSS 注入机制来支持样式的热更新 + // 但是在此代码中,`if (false)` 表示不会执行任何与样式热更新相关的代码 if(false) { var cssReload; } - -/***/ }) + // 如果执行环境是开发模式,并且启用了 CSS 热更新,则此处会插入处理 CSS 热更新的逻辑 + // 然而,由于 `if (false)` 条件永远不成立,因此该代码不会被执行 + + /***/ }) ],[[0,"common/runtime","common/vendor"]]]); -//# sourceMappingURL=../../.sourcemap/mp-weixin/common/main.js.map \ No newline at end of file +//# sourceMappingURL=../../.sourcemap/mp-weixin/common/main.js.map diff --git a/user/mp-weixin/common/runtime.js b/user/mp-weixin/common/runtime.js index d7526cd..51cfed2 100644 --- a/user/mp-weixin/common/runtime.js +++ b/user/mp-weixin/common/runtime.js @@ -1,108 +1,194 @@ +/*! 这段代码用于处理模块加载和全局对象的兼容性。 */ - !function(){try{var a=Function("return this")();a&&!a.Math&&(Object.assign(a,{isFinite:isFinite,Array:Array,Date:Date,Error:Error,Function:Function,Math:Math,Object:Object,RegExp:RegExp,String:String,TypeError:TypeError,setTimeout:setTimeout,clearTimeout:clearTimeout,setInterval:setInterval,clearInterval:clearInterval}),"undefined"!=typeof Reflect&&(a.Reflect=Reflect))}catch(a){}}(); - /******/ (function(modules) { // webpackBootstrap -/******/ // install a JSONP callback for chunk loading -/******/ function webpackJsonpCallback(data) { -/******/ var chunkIds = data[0]; -/******/ var moreModules = data[1]; -/******/ var executeModules = data[2]; -/******/ -/******/ // add "moreModules" to the modules object, -/******/ // then flag all "chunkIds" as loaded and fire callback -/******/ var moduleId, chunkId, i = 0, resolves = []; -/******/ for(;i < chunkIds.length; i++) { -/******/ chunkId = chunkIds[i]; -/******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) { -/******/ resolves.push(installedChunks[chunkId][0]); -/******/ } -/******/ installedChunks[chunkId] = 0; -/******/ } -/******/ for(moduleId in moreModules) { -/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { -/******/ modules[moduleId] = moreModules[moduleId]; -/******/ } -/******/ } -/******/ if(parentJsonpFunction) parentJsonpFunction(data); -/******/ -/******/ while(resolves.length) { -/******/ resolves.shift()(); -/******/ } -/******/ -/******/ // add entry modules from loaded chunk to deferred list -/******/ deferredModules.push.apply(deferredModules, executeModules || []); -/******/ -/******/ // run deferred modules when all chunks ready -/******/ return checkDeferredModules(); -/******/ }; -/******/ function checkDeferredModules() { -/******/ var result; -/******/ for(var i = 0; i < deferredModules.length; i++) { -/******/ var deferredModule = deferredModules[i]; -/******/ var fulfilled = true; -/******/ for(var j = 1; j < deferredModule.length; j++) { -/******/ var depId = deferredModule[j]; -/******/ if(installedChunks[depId] !== 0) fulfilled = false; -/******/ } -/******/ if(fulfilled) { -/******/ deferredModules.splice(i--, 1); -/******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]); -/******/ } -/******/ } +(function() { + try { + // 尝试获取全局对象 (通常是浏览器环境中的 window 或 Node.js 环境中的 global) + var a = Function("return this")(); + + // 如果获取到了全局对象并且该对象没有 Math 属性 + if (a && !a.Math) { + // 将全局对象(a)补充上常见的全局对象和方法 + Object.assign(a, { + isFinite: isFinite, + // 处理数值是否有限的方法 + Array: Array, + // 数组构造函数 + Date: Date, + // 日期构造函数 + Error: Error, + // 错误构造函数 + Function: Function, + // 函数构造函数 + Math: Math, + // 数学对象 + Object: Object, + // 对象构造函数 + RegExp: RegExp, + // 正则表达式构造函数 + String: String, + // 字符串构造函数 + TypeError: TypeError, + // 类型错误构造函数 + setTimeout: setTimeout, + // 设置定时器方法 + clearTimeout: clearTimeout, + // 清除定时器方法 + setInterval: setInterval, + // 设置间隔定时器方法 + clearInterval: clearInterval + // 清除间隔定时器方法 + }); + + // 如果环境中有 Reflect 对象(通常是 ECMAScript 6 引入的),则将其添加到全局对象中 + if (typeof Reflect !== "undefined") { + a.Reflect = Reflect; + } + } + } catch (a) { + // 如果发生异常,捕获错误并不做处理 + } +})(); + +/* 以下代码是 Webpack 的代码片段,用于动态加载和处理模块(chunk)。 */ + +// webpackBootstrap 开始 +(function(modules) { + // 安装 JSONP 回调用于 chunk 加载 + function webpackJsonpCallback(data) { + var chunkIds = data[0]; // 当前 chunk 的 ID + var moreModules = data[1]; // 当前 chunk 中的模块 + var executeModules = data[2]; // 要执行的模块 + + // 将 "moreModules" 添加到模块对象中,并标记所有 "chunkIds" 为已加载,并触发回调 + var moduleId, chunkId, i = 0, resolves = []; + for (; i < chunkIds.length; i++) { + chunkId = chunkIds[i]; + // 如果该 chunk 已加载,则将其回调加入 resolves 队列 + if (Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) { + resolves.push(installedChunks[chunkId][0]); + } + installedChunks[chunkId] = 0; + // 标记当前 chunk 已加载 + } + + // 将模块添加到模块对象中 + for (moduleId in moreModules) { + if (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { + modules[moduleId] = moreModules[moduleId]; + } + } + + // 如果父级 JSONP 函数存在,调用它(用于处理嵌套的 chunk 加载) + if (parentJsonpFunction) parentJsonpFunction(data); + + // 执行已解决的模块(即已加载的模块) + while (resolves.length) { + resolves.shift()(); + } + + // 将从当前 chunk 加载的条目模块推入延迟执行列表 + deferredModules.push.apply(deferredModules, executeModules || []); + + // 当所有 chunk 准备好时,运行延迟的模块 + return checkDeferredModules(); + } + + // 检查并执行延迟加载的模块 + function checkDeferredModules() { + var result; + // 遍历所有延迟的模块 + for (var i = 0; i < deferredModules.length; i++) { + var deferredModule = deferredModules[i]; + var fulfilled = true; + // 检查所有依赖项是否已加载 + for (var j = 1; j < deferredModule.length; j++) { + var depId = deferredModule[j]; + if (installedChunks[depId] !== 0) fulfilled = false; + } + // 如果所有依赖已满足,则加载该模块 + if (fulfilled) { + deferredModules.splice(i--, 1); // 从延迟模块列表中移除该模块 + result = __webpack_require__(__webpack_require__.s = deferredModule[0]); + } + } /******/ /******/ return result; /******/ } /******/ -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // object to store loaded CSS chunks -/******/ var installedCssChunks = { -/******/ "common/runtime": 0 -/******/ } -/******/ -/******/ // object to store loaded and loading chunks -/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched -/******/ // Promise = chunk loading, 0 = chunk loaded -/******/ var installedChunks = { -/******/ "common/runtime": 0 -/******/ }; -/******/ -/******/ var deferredModules = []; -/******/ -/******/ // script path function -/******/ function jsonpScriptSrc(chunkId) { -/******/ return __webpack_require__.p + "" + chunkId + ".js" -/******/ } -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ // This file contains only the entry chunk. -/******/ // The chunk loading function for additional chunks -/******/ __webpack_require__.e = function requireEnsure(chunkId) { -/******/ var promises = []; -/******/ +/******/ /// 模块缓存对象,用于存储已加载的模块。 +// 这样一来,当模块被加载一次后,后续对该模块的请求将直接返回缓存中的模块,避免重复加载。 + var installedModules = {}; + + /* + * 存储已加载的 CSS chunk(代码块)对象。 + * 在这里,"common/runtime" 是一个 CSS chunk 的标识符,0 表示它已经被加载。 + * Webpack 会根据配置分离不同的 chunk,CSS 通常会单独打包。 + */ + var installedCssChunks = { + "common/runtime": 0 + }; + +// 存储已加载和正在加载的 JavaScript chunk(代码块)对象。 +// undefined = chunk 尚未加载,null = chunk 已预加载或预取, +// Promise = chunk 正在加载,0 = chunk 已加载。 +// "common/runtime" 初始值为 0,表示该 chunk 已加载。 + var installedChunks = { + "common/runtime": 0 + }; + +// 存储延迟加载的模块。当模块需要异步加载时,它们会被推入这个队列,待所有依赖满足后执行。 + var deferredModules = []; + + /* + * 获取 chunk 脚本的路径,WebPack 会根据配置动态生成加载文件的路径。 + * chunkId 是当前加载的 chunk 的 ID,通常是 chunk 名称。 + * `__webpack_require__.p` 是 Webpack 配置的公共路径,通常是资源文件存放的路径。 + * 例如,`chunkId` 可能是 "1",路径可能是 `/static/js/1.js`。 + */ + function jsonpScriptSrc(chunkId) { + return __webpack_require__.p + "" + chunkId + ".js"; + } + + /* + * `__webpack_require__` 是 Webpack 打包后的模块加载函数,类似于 CommonJS 的 require。 + * 它用来加载模块并返回模块的 `exports`。 + * 参数 `moduleId` 是模块的 ID,通常是模块的文件名或 chunk ID。 + */ + function __webpack_require__(moduleId) { + // 1. 检查模块是否已经在缓存中(即是否已加载过) + if(installedModules[moduleId]) { + // 如果模块已经加载过,则直接返回缓存中的模块的 exports(导出的对象) + return installedModules[moduleId].exports; + } + + // 2. 如果模块尚未加载,创建一个新的模块并放入缓存 + var module = installedModules[moduleId] = { + i: moduleId, // 模块 ID + l: false, // 模块加载标记,表示模块尚未加载 + exports: {} // 模块的导出对象,模块的功能和数据会挂载到这个对象上 + }; + + // 3. 执行该模块的代码(将模块的功能添加到 exports 中) + // `modules[moduleId]` 存储了模块的定义(即模块代码),`call` 用于调用该模块的函数并传入需要的参数。 + modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); + + // 4. 标记模块为已加载 + module.l = true; + + // 5. 返回模块的 exports 对象,即模块对外暴露的内容 + return module.exports; + } + + /* + * `__webpack_require__.e` 是 Webpack 为动态加载模块提供的一个方法。 + * 它允许异步加载额外的 chunks(代码块),例如通过 `import()` 动态加载模块。 + * 参数 `chunkId` 是要加载的 chunk 的 ID,通常是一个数字或字符串。 + * Webpack 会根据 `chunkId` 加载相应的 JavaScript 文件,处理异步依赖关系。 + */ + __webpack_require__.e = function requireEnsure(chunkId) { + var promises = []; // 存储等待加载的 Promise 对象 + + /******/ /******/ /******/ // mini-css-extract-plugin CSS loading /******/ var cssChunks = {"components/uni-phone/index":1,"pages/common/Navbar/navbar":1,"components/uni-nav-bar/uni-nav-bar":1,"components/uni-piker/index":1,"components/uni-popup/index":1,"node-modules/@dcloudio/uni-ui/lib/uni-list-item/uni-list-item":1,"uni_modules/uni-list/components/uni-list-item/uni-list-item":1,"uni_modules/uni-list/components/uni-list/uni-list":1,"uni_modules/uni-popup/components/uni-popup/uni-popup":1,"components/empty/empty":1,"components/reach-bottom/reach-bottom":1,"pages/common/simple-address/simple-address":1,"node-modules/@dcloudio/uni-ui/lib/uni-easyinput/uni-easyinput":1,"uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput":1,"components/uni-icons/uni-icons":1,"components/uni-status-bar/uni-status-bar":1,"uni_modules/uni-badge/components/uni-badge/uni-badge":1}; @@ -117,157 +203,235 @@ /******/ var dataHref = tag.getAttribute("data-href") || tag.getAttribute("href"); /******/ if(tag.rel === "stylesheet" && (dataHref === href || dataHref === fullhref)) return resolve(); /******/ } -/******/ var existingStyleTags = document.getElementsByTagName("style"); -/******/ for(var i = 0; i < existingStyleTags.length; i++) { -/******/ var tag = existingStyleTags[i]; -/******/ var dataHref = tag.getAttribute("data-href"); -/******/ if(dataHref === href || dataHref === fullhref) return resolve(); -/******/ } -/******/ var linkTag = document.createElement("link"); -/******/ linkTag.rel = "stylesheet"; -/******/ linkTag.type = "text/css"; -/******/ linkTag.onload = resolve; -/******/ linkTag.onerror = function(event) { -/******/ var request = event && event.target && event.target.src || fullhref; -/******/ var err = new Error("Loading CSS chunk " + chunkId + " failed.\n(" + request + ")"); -/******/ err.code = "CSS_CHUNK_LOAD_FAILED"; -/******/ err.request = request; -/******/ delete installedCssChunks[chunkId] -/******/ linkTag.parentNode.removeChild(linkTag) -/******/ reject(err); -/******/ }; -/******/ linkTag.href = fullhref; -/******/ -/******/ var head = document.getElementsByTagName("head")[0]; -/******/ head.appendChild(linkTag); -/******/ }).then(function() { -/******/ installedCssChunks[chunkId] = 0; -/******/ })); -/******/ } +/******/ // 获取页面中所有已存在的