From ae3855638dba0c927236c1a1b1a85d5b048c40e2 Mon Sep 17 00:00:00 2001 From: Houjie <714924425@qq.com> Date: 星期五, 18 四月 2025 10:31:08 +0800 Subject: [PATCH] 提交 --- plugin/uni-simple-router/helpers/urlQuery.js | 332 +++++++++++++++++++++++++++++++----------------------- 1 files changed, 190 insertions(+), 142 deletions(-) diff --git a/plugin/uni-simple-router/helpers/urlQuery.js b/plugin/uni-simple-router/helpers/urlQuery.js index a2b1c69..0644f2f 100644 --- a/plugin/uni-simple-router/helpers/urlQuery.js +++ b/plugin/uni-simple-router/helpers/urlQuery.js @@ -1,157 +1,205 @@ -import { Global } from './config'; -import { warn, err } from './warn'; +import { + Global +} from './config'; +import { + warn, + err +} from './warn'; const nodeURL = require('query-string'); class ParseQuery { - get queryName() { - return nodeURL; - } + get queryName() { + return nodeURL; + } - /** - * 鍒ゆ柇褰撳墠杩欎釜瀵硅薄鏄惁涓烘繁搴﹀璞� - * @param {Object} obj - */ - isDepthObject(obj) { - const str = JSON.stringify(obj); - return str.match(/}/g).length > 1; - } + /** + * 鍒ゆ柇褰撳墠杩欎釜瀵硅薄鏄惁涓烘繁搴﹀璞� + * @param {Object} obj + */ + isDepthObject(obj) { + const str = JSON.stringify(obj); + return str.match(/}/g).length > 1; + } - /** - * 浠嶶RL涓彁鍙栨煡璇㈠瓧绗︿覆 - * @param {String} url - */ - extract(url) { - return nodeURL.extract(url); - } + /** + * 浠嶶RL涓彁鍙栨煡璇㈠瓧绗︿覆 + * @param {String} url + */ + extract(url) { + return nodeURL.extract(url); + } - /** - * 鎶婁竴涓� key=value&key1=value 鐨勫瓧绗︿覆杞垚瀵硅薄 - * @param {string} strQuery key=value&key1=value 绫诲瀷鐨勫瓧绗︿覆 - */ - parse(strQuery) { - return nodeURL.parse(strQuery); - } + /** + * 鎶婁竴涓� key=value&key1=value 鐨勫瓧绗︿覆杞垚瀵硅薄 + * @param {string} strQuery key=value&key1=value 绫诲瀷鐨勫瓧绗︿覆 + */ + parse(strQuery) { + return nodeURL.parse(strQuery); + } - /** - * 鎶婁竴涓璞¤浆鎴� key=value&key1=value 绫诲瀷鐨勫瓧绗︿覆 - * @param {Object} ObjQuery 绗﹀悎js鏍囨敞鐨勫璞� - * @param {Boolean} intact 鏄惁鍦ㄨ浆鎴愮殑瀛楃涓插墠娣诲姞锛熷彿 - */ - stringify(ObjQuery, intact = true) { - const strQuery = nodeURL.stringify(ObjQuery); - if (intact) { - return `?${strQuery}`; - } - return strQuery; - } + /** + * 鎶婁竴涓璞¤浆鎴� key=value&key1=value 绫诲瀷鐨勫瓧绗︿覆 + * @param {Object} ObjQuery 绗﹀悎js鏍囨敞鐨勫璞� + * @param {Boolean} intact 鏄惁鍦ㄨ浆鎴愮殑瀛楃涓插墠娣诲姞锛熷彿 + */ + stringify(ObjQuery, intact = true) { + const strQuery = nodeURL.stringify(ObjQuery); + if (intact) { + return `?${strQuery}`; + } + return strQuery; + } - /** - * 鎶婁竴涓璞℃垨鑰� key=value&key1=value 绫诲瀷鐨勬暟鎹姞瀵嗘垚 query=encodeURIComponent(value) - * @param {Object|String} query 绗﹀悎js鏍囨敞鐨勫璞� 鎴栬�� key=value&key1=value 瀛楃涓� - * @param {Boolean} intact 鏄惁鍦ㄨ浆鎴愮殑瀛楃涓插墠娣诲姞锛熷彿 - */ - encode(query, intact = true) { - let [strQuery, formatQuery] = ['', '']; - if (query == null) { - warn('鍔犲瘑鍙傛暟娌℃湁浼犻�掞紝浣犵煡閬擄紵', true); - return ''; - } - if (query.constructor === String) { // 瀛楃涓� 灏濊瘯 杞垚 瀵硅薄 - strQuery = JSON.stringify(this.parse(query)); - } else if (query.constructor === Object) { // 鐩存帴杞垚瀛楃涓插璞″嵆鍙� - if (Object.keys(query).length === 0) { - warn('褰撳墠鍙傛暟涓嶆弧瓒冲姞瀵嗚鑼冿紒'); - return ''; - } - strQuery = JSON.stringify(query); - } - if (intact) { - formatQuery = '?'; - } - formatQuery += `query=${encodeURIComponent(strQuery)}`; - return formatQuery; - } + /** + * 鎶婁竴涓璞℃垨鑰� key=value&key1=value 绫诲瀷鐨勬暟鎹姞瀵嗘垚 query=encodeURIComponent(value) + * @param {Object|String} query 绗﹀悎js鏍囨敞鐨勫璞� 鎴栬�� key=value&key1=value 瀛楃涓� + * @param {Boolean} intact 鏄惁鍦ㄨ浆鎴愮殑瀛楃涓插墠娣诲姞锛熷彿 + */ + encode(query, intact = true) { + let [strQuery, formatQuery] = ['', '']; + if (query == null) { + warn('鍔犲瘑鍙傛暟娌℃湁浼犻�掞紝浣犵煡閬擄紵', true); + return ''; + } + if (query.constructor === String) { // 瀛楃涓� 灏濊瘯 杞垚 瀵硅薄 + strQuery = JSON.stringify(this.parse(query)); + } else if (query.constructor === Object) { // 鐩存帴杞垚瀛楃涓插璞″嵆鍙� + if (Object.keys(query).length === 0) { + warn('褰撳墠鍙傛暟涓嶆弧瓒冲姞瀵嗚鑼冿紒'); + return ''; + } + strQuery = JSON.stringify(query); + } + if (intact) { + formatQuery = '?'; + } + formatQuery += `query=${encodeURIComponent(strQuery)}`; + return formatQuery; + } - /** - * 鎶婁竴涓凡缁忓姞瀵嗗ソ鐨勫瓧绗︿覆 query=encodeURIComponent(value) 瑙e瘑鎴� 瀵硅薄 - * @param {string} strQuery 宸茬粡鍔犲瘑濂界殑瀛楃涓� query=encodeURIComponent(value) - */ - decode(strQuery) { - if (strQuery == null) { - warn('瑙e瘑鍙傛暟娌℃湁浼犻�掞紝浣犵煡閬擄紵', true); - return {}; - } - let jsonQuery = strQuery; - if (strQuery.constructor === Object) { // 濡傛灉鏄璞� 鐪嬭兘涓嶈兘婊¤冻瑕佹眰 - jsonQuery = strQuery.query; - if (jsonQuery == null) { - warn('褰撳墠瑙e瘑鍙傛暟涓嶆弧瓒崇紪鐮佽鍒�'); - return {}; - } - jsonQuery = `query=${jsonQuery}`; - } - let decode = {}; - // query 闀胯繖涓牱 query=encodeURIComponent(value) - const decodeStr = decodeURIComponent(jsonQuery); - const { query } = this.parse(decodeStr); // 杞垚 json 鑾峰彇鍒版鐪熺殑json瀛楃涓� - if (query == null) { - warn('褰撳墠瑙e瘑鍙傛暟涓嶆弧瓒崇紪鐮佽鍒�'); - } else { - try { - decode = JSON.parse(query); - } catch (error) { - warn('褰撳墠瑙e瘑鍙傛暟涓嶆弧瓒崇紪鐮佽鍒�'); - } - } - return decode; - } + /** + * 鎶婁竴涓凡缁忓姞瀵嗗ソ鐨勫瓧绗︿覆 query=encodeURIComponent(value) 瑙e瘑鎴� 瀵硅薄 + * @param {string} strQuery 宸茬粡鍔犲瘑濂界殑瀛楃涓� query=encodeURIComponent(value) + */ + decode(strQuery) { + if (strQuery == null) { + warn('瑙e瘑鍙傛暟娌℃湁浼犻�掞紝浣犵煡閬擄紵', true); + return {}; + } + let jsonQuery = strQuery; + if (strQuery.constructor === Object) { // 濡傛灉鏄璞� 鐪嬭兘涓嶈兘婊¤冻瑕佹眰 + jsonQuery = strQuery.query; + if (jsonQuery == null) { + warn('褰撳墠瑙e瘑鍙傛暟涓嶆弧瓒崇紪鐮佽鍒�'); + return {}; + } + jsonQuery = `query=${jsonQuery}`; + } + let decode = {}; + // query 闀胯繖涓牱 query=encodeURIComponent(value) + const decodeStr = decodeURIComponent(jsonQuery); + const { + query + } = this.parse(decodeStr); // 杞垚 json 鑾峰彇鍒版鐪熺殑json瀛楃涓� + if (query == null) { + warn('褰撳墠瑙e瘑鍙傛暟涓嶆弧瓒崇紪鐮佽鍒�'); + } else { + try { + decode = JSON.parse(query); + } catch (error) { + warn('褰撳墠瑙e瘑鍙傛暟涓嶆弧瓒崇紪鐮佽鍒�'); + } + } + return decode; + } + queryGet(query) { + const { + encodeURI + } = Global.Router.CONFIG; // 鑾峰彇鍒拌矾鐢遍厤缃� + let [decode, historyObj, strQuery] = [query, query, '']; + switch (encodeURI) { + case true: { // 鍔犲瘑妯″紡 + decode = this.decode(query); + strQuery = this.encode(decode); { //-> 浠g爜 杩欐槸淇敼鐨勫唴瀹� 娣诲姞鎴戜滑鑷畾涔夊鐞� + if (strQuery === '' && query) { + //-> junjie + //-| 闇�瑕佹敞鎰� ,鎴戜滑鐨勬槸鑷畾涔夊璞� , 鏄笉鍖呭惈 query 鐨�, + //-| 鎸夌収鎴戜滑鑷繁鐨勮鍒欒В鏋� + let newstrQuery = Object.keys(query).map(key => key.concat("=").concat(query[key])).join( + "&") + if (newstrQuery) { + strQuery = "?" + newstrQuery; + } + } + } + historyObj = { + query: encodeURIComponent(JSON.stringify(decode)), + }; + break; + } + case false: { // 涓嶅姞瀵嗘ā寮� + strQuery = this.stringify(query); + break; + } + default: { + err('鏈煡鍙傛暟妯″紡锛岃妫�鏌� \'encodeURI\'', true); + } + } - queryGet(query) { - const { encodeURI } = Global.Router.CONFIG; // 鑾峰彇鍒拌矾鐢遍厤缃� - let [decode, historyObj, strQuery] = [query, query, '']; - switch (encodeURI) { - case true: { // 鍔犲瘑妯″紡 - decode = this.decode(query); - strQuery = this.encode(decode); - historyObj = { - query: encodeURIComponent(JSON.stringify(decode)), - }; - break; - } - case false: { // 涓嶅姞瀵嗘ā寮� - strQuery = this.stringify(query); - break; - } - default: { - err('鏈煡鍙傛暟妯″紡锛岃妫�鏌� \'encodeURI\'', true); - } - } - return { strQuery, historyObj, decode }; - } + return { + strQuery, + historyObj, + decode + }; + } + // queryGet(query) { + // const { encodeURI } = Global.Router.CONFIG; // 鑾峰彇鍒拌矾鐢遍厤缃� + // let [decode, historyObj, strQuery] = [query, query, '']; + // switch (encodeURI) { + // case true: { // 鍔犲瘑妯″紡 + // decode = this.decode(query); + // strQuery = this.encode(decode); + // historyObj = { + // query: encodeURIComponent(JSON.stringify(decode)), + // }; + // break; + // } + // case false: { // 涓嶅姞瀵嗘ā寮� + // strQuery = this.stringify(query); + // break; + // } + // default: { + // err('鏈煡鍙傛暟妯″紡锛岃妫�鏌� \'encodeURI\'', true); + // } + // } + // return { strQuery, historyObj, decode }; + // } - /** - * 瀵归渶瑕佷紶閫掔殑鍙傛暟杩涜鍔犲瘑瑙e瘑 - * @param {Object|String} query get涓篺alse 蹇呴』涓� Object 绫诲瀷 - * @param {String} get 鏄彇鍊� 杩樻槸閫氳繃api浼犲�� - */ - transfer(query = {}) { - const { encodeURI } = Global.Router.CONFIG; // 鑾峰彇鍒拌矾鐢遍厤缃� - switch (encodeURI) { - case true: { - // 鍔犲瘑妯″紡 - return this.encode(query, false); - } - case false: { - // 涓嶅姞瀵嗘ā寮� - return this.stringify(query); - } - default: { - err('鏈煡鍙傛暟妯″紡锛岃妫�鏌� \'encodeURI\' ', true); - } - } - } + /** + * 瀵归渶瑕佷紶閫掔殑鍙傛暟杩涜鍔犲瘑瑙e瘑 + * @param {Object|String} query get涓篺alse 蹇呴』涓� Object 绫诲瀷 + * @param {String} get 鏄彇鍊� 杩樻槸閫氳繃api浼犲�� + */ + transfer(query = {}) { + const { + encodeURI + } = Global.Router.CONFIG; // 鑾峰彇鍒拌矾鐢遍厤缃� + switch (encodeURI) { + case true: { + // 鍔犲瘑妯″紡 + return this.encode(query, false); + } + case false: { + // 涓嶅姞瀵嗘ā寮� + return this.stringify(query); + } + default: { + err('鏈煡鍙傛暟妯″紡锛岃妫�鏌� \'encodeURI\' ', true); + } + } + } } -export default ParseQuery; +export default ParseQuery; \ No newline at end of file -- Gitblit v1.9.3