From aa2eb7d40f1e64bfaf3a0ee1d0dd5a0a6d161dee Mon Sep 17 00:00:00 2001 From: MaYuanhai <414199639@qq.com> Date: Mon, 4 Mar 2019 10:54:58 +0800 Subject: [PATCH 1/2] perf[utils.js]: refactor byteLength function (#1650) --- src/utils/index.js | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/utils/index.js b/src/utils/index.js index 1370a423..fbcb4602 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -91,20 +91,19 @@ export function getQueryObject(url) { } /** - *get getByteLen - * @param {Sting} val input value + * @param {Sting} input value * @returns {number} output value */ -export function getByteLen(val) { - let len = 0 - for (let i = 0; i < val.length; i++) { - if (val[i].match(/[^\x00-\xff]/gi) != null) { - len += 1 - } else { - len += 0.5 - } +export function byteLength(str) { + // returns the byte length of an utf8 string + let s = str.length + for (var i = str.length - 1; i >= 0; i--) { + const code = str.charCodeAt(i) + if (code > 0x7f && code <= 0x7ff) s++ + else if (code > 0x7ff && code <= 0xffff) s += 2 + if (code >= 0xDC00 && code <= 0xDFFF) i-- } - return Math.floor(len) + return s } export function cleanArray(actual) { From 86fbc1663f65fb81e7f6e0609ed9c1d3ffdc2a06 Mon Sep 17 00:00:00 2001 From: Tuan Duong Date: Mon, 4 Mar 2019 01:35:06 +0900 Subject: [PATCH 2/2] Improvement - ScrollPanel should not contain any tags-view logic - Use global el-scrollbar instead of ScrollPanel --- src/components/ScrollPane/index.vue | 39 ----------------- src/views/layout/components/TagsView.vue | 55 +++++++++++++++++++++--- 2 files changed, 49 insertions(+), 45 deletions(-) diff --git a/src/components/ScrollPane/index.vue b/src/components/ScrollPane/index.vue index 172afccc..6c778b8a 100644 --- a/src/components/ScrollPane/index.vue +++ b/src/components/ScrollPane/index.vue @@ -5,8 +5,6 @@