Ver código fonte

优化加载速度

mxd 3 anos atrás
pai
commit
664404f484

+ 40 - 0
magic-api/src/main/java/org/ssssssss/magicapi/utils/ClassScanner.java

@@ -35,6 +35,42 @@ public class ClassScanner {
 		return new ArrayList<>(classes);
 	}
 
+	public static String compress(List<String> classes){
+		Collections.sort(classes);
+		String currentPackage = "";
+		StringBuffer buf = new StringBuffer();
+		int classCount = 0;
+		for (String fullName : classes) {
+			String packageName = "";
+			String className = fullName;
+			if (fullName.contains(".")) {
+				int index = fullName.lastIndexOf(".");
+				className = fullName.substring(index + 1);
+				packageName = fullName.substring(0, index);
+			}
+			if(className.equals("package-info")){
+				continue;
+			}
+			if (currentPackage.equals(packageName)) {
+				if (classCount > 0) {
+					buf.append(",");
+				}
+				buf.append(className);
+				classCount++;
+			} else {
+				currentPackage = packageName;
+				if(buf.length() > 0){
+					buf.append("\n");
+				}
+				buf.append(packageName);
+				buf.append(":");
+				buf.append(className);
+				classCount = 1;
+			}
+		}
+		return buf.toString();
+	}
+
 	private static Set<String> scan(URL[] urls) throws URISyntaxException {
 		Set<String> classes = new HashSet<>();
 		if (urls != null) {
@@ -165,4 +201,8 @@ public class ClassScanner {
 	private static boolean isClass(String className) {
 		return className.endsWith(".class") && !className.contains("$");
 	}
+
+	public static void main(String[] args) throws URISyntaxException {
+		List<String> classes = scan();
+	}
 }

+ 3 - 1
magic-editor/src/console/src/components/magic-editor.vue

@@ -192,7 +192,9 @@ export default {
       window.onbeforeunload = () => '系统可能不会保存您所做的更改。'
     }
     this.bindKey()
-    Promise.all([JavaClass.initClasses(), JavaClass.initImportClass(), this.loadConfig()])
+    JavaClass.initClasses()
+    JavaClass.initImportClass()
+    Promise.all([this.loadConfig()])
       .then(e => {
         this.hideLoading()
         this.login()

+ 6 - 1
magic-editor/src/console/src/scripts/editor/java-class.js

@@ -73,7 +73,12 @@ const initImportClass = () => {
             url: 'classes.txt',
             responseType: 'text'
         }).then(e => {
-            importClass = e.data.split('\r\n')
+            const array = [];
+            e.data.split('\n').forEach(item => {
+                const tmp = item.split(':')
+                array.push(...tmp[1].split(',').map(it => tmp[0] + "." + it))
+            })
+            importClass = array
             resolve()
         }).catch(res => {
             reject()