From cfa95f03007b221f1e00f4bf5cd29c3ccea3a0a7 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Wed, 09 Feb 2022 10:26:00 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.105:10010/r/school-web

---
 src/components/mobileWindow/index.vue    |    4 
 src/store/modules/mobilePosition copy.js |  163 +++++++++++
 vue.config.js                            |   49 +--
 src/store/modules/mobilePositionLID.js   |   57 ++++
 package.json                             |    3 
 src/store/modules/mobilePositionLID1.js  |  251 +++++++++++++++++
 src/store/modules/mobilePosition.js      |  263 +++++++++++++++++-
 7 files changed, 745 insertions(+), 45 deletions(-)

diff --git a/package.json b/package.json
index 8addf1c..c8ee387 100644
--- a/package.json
+++ b/package.json
@@ -36,7 +36,8 @@
     "node-sass": "^7.0.1",
     "sass-loader": "^8.0.2",
     "script-loader": "^0.7.2",
-    "vue-template-compiler": "^2.6.11"
+    "vue-template-compiler": "^2.6.11",
+    "compression-webpack-plugin": "^5.0.1"
   },
   "eslintConfig": {
     "root": true,
diff --git a/src/components/mobileWindow/index.vue b/src/components/mobileWindow/index.vue
index e570a75..a9ba440 100644
--- a/src/components/mobileWindow/index.vue
+++ b/src/components/mobileWindow/index.vue
@@ -267,6 +267,10 @@
         // console.log(this.query.query);
         // that.$store.commit("set_endPosition", this.query.query.lntLat);
         let doit = (now) => {
+          if (now[0] == "失败") {
+            that.quzheD = false;
+            return;
+          }
           let ints = {
             start: [+now[0], +now[1]],
             end: [+query.lntLat[0], +query.lntLat[1], 360],
diff --git a/src/store/modules/mobilePosition copy.js b/src/store/modules/mobilePosition copy.js
new file mode 100644
index 0000000..0e8d007
--- /dev/null
+++ b/src/store/modules/mobilePosition copy.js
@@ -0,0 +1,163 @@
+import { Message } from "element-ui";
+// import BMap from "./mobilePositionLID";
+import RemoGeoLocation from "./mobilePositionLID1";
+
+const mobilePosition = {
+  state: { getSPosition: null },
+  mutations: {
+    GET_NOWPOSITION(state, val) {
+      let outData =
+        val ||
+        function (res) {
+          console.log(res);
+        };
+      let startTime = new Date().getTime(),
+        endTime;
+      console.log(startTime, "startTime");
+      let times = (dateBegin) => {
+        var dateDiff = new Date().getTime() - dateBegin; //时间差的毫秒数
+        var dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000)); //计算出相差天数
+        var leave1 = dateDiff % (24 * 3600 * 1000); //计算天数后剩余的毫秒数
+        var hours = Math.floor(leave1 / (3600 * 1000)); //计算出小时数
+        //计算相差分钟数
+        var leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数
+        var minutes = Math.floor(leave2 / (60 * 1000)); //计算相差分钟数
+        //计算相差秒数
+        var leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数
+        var seconds = Math.round(leave3 / 1000);
+        var leave4 = leave3 % (60 * 1000); //计算分钟数后剩余的毫秒数
+        var minseconds = Math.round(leave4 / 1000);
+        var timeFn =
+          "耗时:" +
+          dayDiff +
+          "天 " +
+          hours +
+          "小时 " +
+          minutes +
+          " 分钟" +
+          seconds +
+          " 秒" +
+          minseconds +
+          "毫秒";
+        console.log(timeFn);
+        return timeFn;
+      };
+      if (navigator.geolocation) {
+        let success = function (position) {
+          console.log(position);
+          times(startTime);
+          var lat = position.coords.latitude;
+          var lon = position.coords.longitude;
+          console.log("成功返回经纬度信息");
+          Message({
+            showClose: true,
+            message:
+              "成功返回经纬度信息" +
+              lon +
+              "_" +
+              lat +
+              "--反应时间:" +
+              times(startTime),
+            type: "success",
+            duration: 0,
+          });
+          console.log(lon, lat, "成功");
+          outData([lon, lat]);
+        };
+        let error = function (error) {
+          // console.log(error, "失败");
+          outData(["失败", "失败"]);
+          let msg = "none";
+          switch (error.code) {
+            case error.PERMISSION_DENIED:
+              msg = "User denied the request for Geolocation.";
+              break;
+            case error.POSITION_UNAVAILABLE:
+              msg = "Location information is unavailable.";
+              break;
+            case error.TIMEOUT:
+              msg = "The request to get user location timed out.";
+              break;
+            case error.UNKNOWN_ERROR:
+              msg = "An unknown error occurred.";
+              break;
+          }
+          Message({
+            showClose: true,
+            message:
+              "定位获取失败-msg:" +
+              msg +
+              "------" +
+              error.message +
+              "--反应时间:" +
+              times(startTime),
+            type: "error",
+            duration: 0,
+          });
+        };
+        let options = {
+          enableHighAccuracy: true,
+          // timeout: 5000,
+          maximumAge: 0,
+        };
+        // console.log(navigator);
+        // console.log(navigator.platform);
+        Message({
+          showClose: true,
+          message: navigator.platform,
+          type: "error",
+          duration: 0,
+        });
+        // console.log(CLLocationManager);
+        // return;
+        if (navigator.platform === "iPhone") {
+          //iphone请求权限
+          // let remoGeo = new RemoGeoLocation();
+          // navigator.geolocation.getCurrentPosition = function () {
+          //   return remoGeo.getCurrentPosition.apply(remoGeo, arguments);
+          // };
+          // navigator.geolocation.watchPosition = function () {
+          //   return remoGeo.watchPosition.apply(remoGeo, arguments);
+          // };
+          // Message({
+          //   showClose: true,
+          //   message: "ipone",
+          //   type: "error",
+          //   duration: 0,
+          // });
+          // console.log(CLLocationManager);
+          // Message({
+          //   showClose: true,
+          //   message: CLLocationManager,
+          //   type: "error",
+          //   duration: 0,
+          // });
+          // return;
+        }
+        state.getSPosition = navigator.geolocation.getCurrentPosition(
+          success,
+          error,
+          options
+        );
+      } else {
+        console.log("不支持navigator.geolocation");
+        Message({
+          showClose: true,
+          message: "不支持定位",
+          type: "warning",
+          duration: 0,
+        });
+        return "不支持navigator.geolocation";
+      }
+    },
+    CLOSE_NOWPOSITION(state) {
+      // if (state.getSPosition && navigator.geolocation) {
+      //   navigator.geolocation.clearWatch(state.getSPosition);
+      //   state.getSPosition = null;
+      // }
+    },
+  },
+  actions: {},
+};
+
+export default mobilePosition;
diff --git a/src/store/modules/mobilePosition.js b/src/store/modules/mobilePosition.js
index e9045bf..992e0bf 100644
--- a/src/store/modules/mobilePosition.js
+++ b/src/store/modules/mobilePosition.js
@@ -1,3 +1,7 @@
+import { Message } from "element-ui";
+// import BMap from "./mobilePositionLID";
+import RemoGeoLocation from "./mobilePositionLID1";
+
 const mobilePosition = {
   state: { getSPosition: null },
   mutations: {
@@ -7,29 +11,258 @@
         function (res) {
           console.log(res);
         };
+      let startTime = new Date().getTime(),
+        endTime;
+      console.log(startTime, "startTime");
+      let times = (dateBegin) => {
+        var dateDiff = new Date().getTime() - dateBegin; //时间差的毫秒数
+        var dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000)); //计算出相差天数
+        var leave1 = dateDiff % (24 * 3600 * 1000); //计算天数后剩余的毫秒数
+        var hours = Math.floor(leave1 / (3600 * 1000)); //计算出小时数
+        //计算相差分钟数
+        var leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数
+        var minutes = Math.floor(leave2 / (60 * 1000)); //计算相差分钟数
+        //计算相差秒数
+        var leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数
+        var seconds = Math.round(leave3 / 1000);
+        var leave4 = leave3 % (60 * 1000); //计算分钟数后剩余的毫秒数
+        var minseconds = Math.round(leave4 / 1000);
+        var timeFn =
+          "耗时:" +
+          dayDiff +
+          "天 " +
+          hours +
+          "小时 " +
+          minutes +
+          " 分钟" +
+          seconds +
+          " 秒" +
+          minseconds +
+          "毫秒";
+        console.log(timeFn);
+        return timeFn;
+      };
       if (navigator.geolocation) {
-        console.log("支持navigator.geolocation-111111111111111");
-        try {
-          state.getSPosition = navigator.geolocation.getCurrentPosition(
-            function (position) {
-              console.log(position);
-              var lat = position.coords.latitude;
-              var lon = position.coords.longitude;
-              console.log("成功返回经纬度信息");
-              console.log(lon, lat);
-              outData([lon, lat]);
-            }
-          );
-        } catch {
-          console.log("支持navigator.geolocation-需要HTTPS");
+        let success = function (position) {
+          console.log(position);
+          times(startTime);
+          var lat = position.coords.latitude;
+          var lon = position.coords.longitude;
+          console.log("成功返回经纬度信息");
+          Message({
+            showClose: true,
+            message:
+              "成功返回经纬度信息(1)" +
+              lon +
+              "_" +
+              lat +
+              "--反应时间:" +
+              times(startTime),
+            type: "success",
+            duration: 0,
+          });
+          console.log(lon, lat, "成功");
+          outData([lon, lat]);
+        };
+        let error = function (error) {
+          // console.log(error, "失败");
+          outData(["失败", "失败"]);
+          let msg = "none";
+          switch (error.code) {
+            case error.PERMISSION_DENIED:
+              msg = "User denied the request for Geolocation.";
+              break;
+            case error.POSITION_UNAVAILABLE:
+              msg = "Location information is unavailable.";
+              break;
+            case error.TIMEOUT:
+              msg = "The request to get user location timed out.";
+              break;
+            case error.UNKNOWN_ERROR:
+              msg = "An unknown error occurred.";
+              break;
+          }
+          // Message({
+          //   showClose: true,
+          //   message:
+          //     "定位获取失败-msg:" +
+          //     msg +
+          //     "------" +
+          //     error.message +
+          //     "--反应时间:" +
+          //     times(startTime),
+          //   type: "error",
+          //   duration: 0,
+          // });
+          Message({
+            showClose: true,
+            message: "未开启位置权限",
+            type: "error",
+            duration: 2000,
+          });
+        };
+        let options = {
+          enableHighAccuracy: true,
+          // timeout: 5000,
+          timeout: Infinity,
+          maximumAge: 0,
+        };
+        // console.log(navigator);
+        // console.log(navigator.platform);
+        // Message({
+        //   showClose: true,
+        //   message: navigator.platform,
+        //   type: "error",
+        //   duration: 0,
+        // });
+        // console.log(CLLocationManager);
+        // return;
+        if (navigator.platform === "iPhone") {
+          //iphone请求权限
+          // let remoGeo = new RemoGeoLocation();
+          // navigator.geolocation.getCurrentPosition = function () {
+          //   return remoGeo.getCurrentPosition.apply(remoGeo, arguments);
+          // };
+          // navigator.geolocation.watchPosition = function () {
+          //   return remoGeo.watchPosition.apply(remoGeo, arguments);
+          // };
+          // Message({
+          //   showClose: true,
+          //   message: "ipone",
+          //   type: "error",
+          //   duration: 0,
+          // });
+          // console.log(CLLocationManager);
+          // Message({
+          //   showClose: true,
+          //   message: CLLocationManager,
+          //   type: "error",
+          //   duration: 0,
+          // });
+          // return;
         }
+        // return
+        // console.log(BMap);
+        //百度定位
+        //       <script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=zTNaMXHcfGsG0nFvwd6G72aMOo98uzH2">
+        // </script>
+        // var geolocation = new BMap.Geolocation();
+        // geolocation.getCurrentPosition(function (r) {
+        //   if (this.getStatus() == BMAP_STATUS_SUCCESS) {
+        //     // var mk = new BMap.Marker(r.point);
+        //     // map.addOverlay(mk);
+        //     // map.panTo(r.point);
+        //     console.log("您的位置:" + r.point.lng + "," + r.point.lat);
+        //     outData([r.point.lng, r.point.lat]);
+        //     Message({
+        //       showClose: true,
+        //       message:
+        //         "成功返回经纬度信息" +
+        //         r.point.lng +
+        //         "_" +
+        //         r.point.lat +
+        //         "--反应时间:" +
+        //         times(startTime),
+        //       type: "success",
+        //       duration: 0,
+        //     });
+        //   } else {
+        //     console.log("failed" + this.getStatus());
+        //     Message({
+        //       showClose: true,
+        //       message:
+        //         "定位获取失败-msg:" +
+        //         "failed" +
+        //         this.getStatus() +
+        //         "------" +
+        //         "--反应时间:" +
+        //         times(startTime),
+        //       type: "error",
+        //       duration: 0,
+        //     });
+        //   }
+        // });
+
+        // return;
+        //高德定位
+        // AMap.plugin("AMap.Geolocation", function () {
+        //   var geolocation = new AMap.Geolocation({
+        //     // 是否使用高精度定位,默认:true
+        //     enableHighAccuracy: true,
+        //     // 设置定位超时时间,默认:无穷大
+        //     timeout: 10000,
+        //     // 定位按钮的停靠位置的偏移量,默认:Pixel(10, 20)
+        //     // buttonOffset: new AMap.Pixel(10, 20),
+        //     //  定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
+        //     // zoomToAccuracy: true,
+        //     //  定位按钮的排放位置,  RB表示右下
+        //     // buttonPosition: "RB",
+        //   });
+        //   geolocation.getCurrentPosition();
+        //   AMap.event.addListener(geolocation, "complete", onComplete);
+        //   AMap.event.addListener(geolocation, "error", onError);
+
+        //   function onComplete(data) {
+        //     // data是具体的定位信息
+        //     console.log(data);
+        //     var lat = data.position.lat;
+        //     var lon = data.position.lng;
+        //     console.log("成功返回经纬度信息");
+        //     Message({
+        //       showClose: true,
+        //       message:
+        //         "成功返回经纬度信息" +
+        //         lon +
+        //         "_" +
+        //         lat +
+        //         "--反应时间:" +
+        //         times(startTime),
+        //       type: "success",
+        //       duration: 0,
+        //     });
+        //     console.log(lon, lat, "成功");
+        //     outData([lon, lat]);
+        //   }
+
+        //   function onError(data) {
+        //     // 定位出错
+        //     console.log(data);
+        //     Message({
+        //       showClose: true,
+        //       message:
+        //         "定位获取失败-msg:" +
+        //         data.message +
+        //         "------" +
+        //         "--反应时间:" +
+        //         times(startTime),
+        //       type: "error",
+        //       duration: 0,
+        //     });
+        //   }
+        // });
+
+        // return;
+        state.getSPosition = navigator.geolocation.getCurrentPosition(
+          success,
+          error,
+          options
+        );
       } else {
         console.log("不支持navigator.geolocation");
+        Message({
+          showClose: true,
+          message: "不支持定位",
+          type: "warning",
+          duration: 0,
+        });
         return "不支持navigator.geolocation";
       }
     },
     CLOSE_NOWPOSITION(state) {
-      state.getSPosition = null;
+      // if (state.getSPosition && navigator.geolocation) {
+      //   navigator.geolocation.clearWatch(state.getSPosition);
+      //   state.getSPosition = null;
+      // }
     },
   },
   actions: {},
diff --git a/src/store/modules/mobilePositionLID.js b/src/store/modules/mobilePositionLID.js
new file mode 100644
index 0000000..4369e6c
--- /dev/null
+++ b/src/store/modules/mobilePositionLID.js
@@ -0,0 +1,57 @@
+(function () {
+  window.BMap_loadScriptTime = new Date().getTime();
+  document.write(
+    '<script type="text/javascript" src="http://api.map.baidu.com/getscript?v=2.0&ak=6yAoynmTPNlTBa8z1X4LfwGE&services=&t=20220113143013"></script>'
+  );
+  // })();
+  // (function () {
+  //闭包
+  function load_script(xyUrl, callback) {
+    var head = document.getElementsByTagName("head")[0];
+    var script = document.createElement("script");
+    script.type = "text/javascript";
+    script.src = xyUrl;
+    //借鉴了jQuery的script跨域方法
+    script.onload = script.onreadystatechange = function () {
+      if (
+        !this.readyState ||
+        this.readyState === "loaded" ||
+        this.readyState === "complete"
+      ) {
+        callback && callback();
+        // Handle memory leak in IE
+        script.onload = script.onreadystatechange = null;
+        if (head && script.parentNode) {
+          head.removeChild(script);
+        }
+      }
+    };
+    // Use insertBefore instead of appendChild  to circumvent an IE6 bug.
+    head.insertBefore(script, head.firstChild);
+  }
+  function translate(point, type, callback) {
+    var callbackName = "cbk_" + Math.round(Math.random() * 10000); //随机函数名
+    var xyUrl =
+      "http://api.map.baidu.com/ag/coord/convert?from=" +
+      type +
+      "&to=4&x=" +
+      point.lng +
+      "&y=" +
+      point.lat +
+      "&callback=BMap.Convertor." +
+      callbackName;
+    //动态创建script标签
+    load_script(xyUrl);
+    BMap.Convertor[callbackName] = function (xyResult) {
+      delete BMap.Convertor[callbackName]; //调用完需要删除改函数
+      var point = new BMap.Point(xyResult.x, xyResult.y);
+      callback && callback(point);
+    };
+  }
+
+  window.BMap = window.BMap || {};
+  BMap.Convertor = {};
+  BMap.Convertor.translate = translate;
+})();
+
+export default BMap;
diff --git a/src/store/modules/mobilePositionLID1.js b/src/store/modules/mobilePositionLID1.js
new file mode 100644
index 0000000..b0999b3
--- /dev/null
+++ b/src/store/modules/mobilePositionLID1.js
@@ -0,0 +1,251 @@
+function RemoGeoLocation() {
+  this._remoteSvrUrl = "https://webapi.amap.com/html/geolocate.html";
+
+  this._callbackList = [];
+
+  this._seqBase = 1;
+
+  this._frameReady = 0;
+
+  this._watchIdMap = {};
+}
+
+RemoGeoLocation.prototype = {
+  _getSeq: function () {
+    return this._seqBase++;
+  },
+  _onRrameReady: function (callback) {
+    if (this._frameReady === 0) {
+      if (!this._frameReadyList) {
+        this._frameReadyList = [];
+      }
+
+      this._frameReadyList.push(callback);
+
+      this._prepareIframe();
+
+      return;
+    }
+
+    callback.call(this);
+  },
+  _prepareIframe: function () {
+    if (this._iframeWin) {
+      return;
+    }
+
+    var ifrm = document.createElement("iframe");
+
+    ifrm.src =
+      this._remoteSvrUrl + (this._remoteSvrUrl.indexOf("?") > 0 ? "&" : "?");
+
+    ifrm.width = "0px";
+    ifrm.height = "0px";
+    ifrm.style.position = "absolute";
+    ifrm.style.display = "none";
+
+    var self = this;
+
+    var timeoutId = setTimeout(function () {
+      self._frameReady = false;
+
+      self._callbackFrameReadyList();
+    }, 5000);
+
+    ifrm.onload = function () {
+      clearTimeout(timeoutId);
+
+      self._frameReady = true;
+
+      self._callbackFrameReadyList();
+
+      ifrm.onload = null;
+    };
+
+    document.body.appendChild(ifrm);
+
+    this._iframeWin = ifrm.contentWindow;
+
+    window.addEventListener(
+      "message",
+      function (e) {
+        if (self._remoteSvrUrl.indexOf(e["origin"]) !== 0) {
+          return;
+        }
+
+        self._handleRemoteMsg(e["data"]);
+      },
+      false
+    );
+  },
+  _callbackFrameReadyList: function () {
+    if (this._frameReadyList) {
+      var list = this._frameReadyList;
+      this._frameReadyList = null;
+
+      for (var i = 0, len = list.length; i < len; i++) {
+        list[i].call(this, this._frameReady);
+      }
+    }
+  },
+  _pickCallback: function (seqNum, keepInList) {
+    var callbackList = this._callbackList;
+
+    for (var i = 0, len = callbackList.length; i < len; i++) {
+      var cbkInfo = callbackList[i];
+
+      if (seqNum === cbkInfo.seq) {
+        if (!keepInList) {
+          callbackList.splice(i, 1);
+        }
+
+        return cbkInfo;
+      }
+    }
+  },
+  _handleRemoteMsg: function (msg) {
+    var seqNum = msg["seq"];
+
+    var cbkInfo = this._pickCallback(seqNum, !!msg["notify"]);
+
+    if (cbkInfo) {
+      cbkInfo.cbk.call(null, msg["error"], msg["result"]);
+    } else {
+      console.warn("Receive remote msg: ", msg);
+    }
+  },
+  _postMessage: function (cmd, args, callback, seq) {
+    this._prepareIframe();
+
+    var msg = {
+      cmd: cmd,
+      args: args,
+      seq: seq || this._getSeq(),
+    };
+
+    this._callbackList.push({
+      cbk: callback,
+      seq: msg["seq"],
+    });
+
+    this._onRrameReady(function () {
+      if (this._frameReady === true) {
+        try {
+          this._iframeWin.postMessage(msg, "*");
+        } catch (e) {
+          this._pickCallback(msg["seq"]);
+
+          callback(e);
+        }
+      } else {
+        this._pickCallback(msg["seq"]);
+
+        callback({
+          message: "iFrame load failed!",
+        });
+      }
+    });
+  },
+  getCurrentPosition: function (succHandler, errHandler, options) {
+    this._postMessage("getCurrentPosition", [options], function (err, result) {
+      if (err) {
+        if (errHandler) {
+          errHandler(err);
+        }
+        return;
+      }
+      if (succHandler) {
+        succHandler(result);
+      }
+    });
+  },
+  watchPosition: function (succHandler, errHandler, options) {
+    var watchKey = "wk" + this._getSeq(),
+      cmdSeq = this._getSeq();
+
+    this._watchIdMap[watchKey] = {
+      stat: 0,
+      seq: cmdSeq,
+    };
+
+    var self = this;
+
+    this._postMessage(
+      "watchPosition",
+      [options],
+      function (err, result) {
+        var id = null;
+
+        if (result) {
+          id = result["id"];
+        }
+
+        var watchInfo = self._watchIdMap[watchKey];
+
+        watchInfo.id = id;
+        watchInfo.stat = 1;
+
+        if (watchInfo.callbackList) {
+          var list = watchInfo.callbackList;
+          watchInfo.callbackList = null;
+
+          for (var i = 0, len = list.length; i < len; i++) {
+            list[i].call(self, id);
+          }
+        }
+
+        if (err) {
+          if (errHandler) {
+            errHandler(err);
+          }
+          return;
+        }
+
+        if (succHandler) {
+          succHandler(result["pos"]);
+        }
+      },
+      cmdSeq
+    );
+
+    return watchKey;
+  },
+  clearWatch: function (watchKey, callback) {
+    if (!this._watchIdMap[watchKey]) {
+      callback("Id not exists: " + watchKey);
+      return;
+    }
+
+    var watchInfo = this._watchIdMap[watchKey];
+
+    var self = this;
+
+    function clearId(id) {
+      self._postMessage("clearWatch", [id], function (err, result) {
+        if (!err) {
+          self._pickCallback(watchInfo.seq);
+
+          delete self._watchIdMap[watchKey];
+        }
+
+        if (callback) {
+          callback(err, result);
+        }
+      });
+    }
+
+    if (watchInfo.stat < 1) {
+      if (!watchInfo.callbackList) {
+        watchInfo.callbackList = [];
+      }
+
+      watchInfo.callbackList.push(function (id) {
+        clearId(id);
+      });
+    } else {
+      clearId(watchInfo.id);
+    }
+  },
+};
+
+export default RemoGeoLocation;
diff --git a/vue.config.js b/vue.config.js
index e3774b4..244d46f 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -3,15 +3,11 @@
 const dvgisDist = "./node_modules/@dvgis";
 
 //减少chunk-vendors.js文件大小
-// const webpack = require("webpack");
-// const CompressionWebpackPlugin = require("compression-webpack-plugin");
-// const productionGzipExtensions = ["js", "css"];
-// const isProduction = process.env.NODE_ENV === "production";
+const CompressionPlugin = require("compression-webpack-plugin");
 
 module.exports = {
   publicPath: "/",
   lintOnSave: false,
-
   // 其他配置
   chainWebpack: (config) => {
     config.plugin("copy").use(CopywebpackPlugin, [
@@ -39,28 +35,23 @@
       ],
     ]);
   },
-  //减少chunk-vendors.js文件大小  报错 TypeError: Cannot read property 'tapPromise' of undefined
-  //   configureWebpack: {
-  //     resolve: {
-  //       alias: {
-  //         "@": path.resolve(__dirname, "./src"),
-  //         "@i": path.resolve(__dirname, "./src/assets"),
-  //       },
-  //     },
-  //     plugins: [
-  //       new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
-
-  //       // 下面是下载的插件的配置
-  //       new CompressionWebpackPlugin({
-  //         algorithm: "gzip",
-  //         test: new RegExp("\\.(" + productionGzipExtensions.join("|") + ")$"),
-  //         threshold: 10240,
-  //         minRatio: 0.8,
-  //       }),
-  //       new webpack.optimize.LimitChunkCountPlugin({
-  //         maxChunks: 5,
-  //         minChunkSize: 100,
-  //       }),
-  //     ],
-  //   },
+  //减少chunk-vendors.js文件大小
+  //  报错 TypeError: Cannot read property 'tapPromise' of undefined
+  //解决  ,把compression-webpack-plugin包退回成 compression-webpack-plugin@5.0.1  即可
+  //文件由8M 减成2.5M
+  productionSourceMap: false, //代码压缩加密
+  configureWebpack: {
+    // webpack plugins
+    plugins: [
+      //提供带 Content-Encoding 编码的压缩版的资源
+      new CompressionPlugin({
+        algorithm: "gzip",
+        test: /\.js$|\.html$|\.css/, // 匹配文件名
+        // test: /\.(js|css)$/,
+        threshold: 10240, // 对超过10k的数据压缩
+        deleteOriginalAssets: false, // 不删除源文件
+        minRatio: 0.8, // 压缩比
+      }),
+    ],
+  },
 };

--
Gitblit v1.9.3