| | |
| | | package com.java110.web.core; |
| | | |
| | | import org.springframework.core.io.ClassPathResource; |
| | | import org.springframework.util.StringUtils; |
| | | |
| | | import java.io.*; |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.io.InputStreamReader; |
| | | import java.io.Reader; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | |
| | | * 静态资源文件加载器 |
| | | * Created by wuxw on 2019/3/18. |
| | | */ |
| | | public class VueComponentTemplate extends PackageScanner{ |
| | | public class VueComponentTemplate extends PackageScanner { |
| | | |
| | | /** |
| | | * 默认扫描路径 |
| | | */ |
| | | public final static String DEFAULT_COMPONENT_PACKAGE_PATH = "components"; |
| | | public static final String DEFAULT_COMPONENT_PACKAGE_PATH = "components"; |
| | | |
| | | /** |
| | | * js 文件 |
| | | */ |
| | | public final static String COMPONENT_JS = "js"; |
| | | public static final String COMPONENT_JS = "js"; |
| | | |
| | | /** |
| | | * css 文件 |
| | | */ |
| | | public final static String COMPONENT_CSS = "css"; |
| | | public static final String COMPONENT_CSS = "css"; |
| | | |
| | | /** |
| | | * html 文件 |
| | | */ |
| | | public final static String COMPONENT_HTML = "html"; |
| | | public static final String COMPONENT_HTML = "html"; |
| | | |
| | | |
| | | /** |
| | | * HTML 文件缓存器 |
| | | */ |
| | | private final static Map<String,String> componentTemplate = new HashMap<>(); |
| | | private static final Map<String, String> componentTemplate = new HashMap<>(); |
| | | |
| | | |
| | | /** |
| | | * 初始化 组件信息 |
| | | */ |
| | | public static void initComponent(String scanPath){ |
| | | public static void initComponent(String scanPath) { |
| | | VueComponentTemplate vueComponentTemplate = new VueComponentTemplate(); |
| | | vueComponentTemplate.packageScanner(scanPath,COMPONENT_JS); |
| | | vueComponentTemplate.packageScanner(scanPath,COMPONENT_HTML); |
| | | vueComponentTemplate.packageScanner(scanPath,COMPONENT_CSS); |
| | | vueComponentTemplate.packageScanner(scanPath, COMPONENT_JS); |
| | | vueComponentTemplate.packageScanner(scanPath, COMPONENT_HTML); |
| | | vueComponentTemplate.packageScanner(scanPath, COMPONENT_CSS); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 根据组件编码查询模板 |
| | | * |
| | | * @param componentCode |
| | | * @return |
| | | */ |
| | | public static String findTemplateByComponentCode(String componentCode) { |
| | | if(componentTemplate.containsKey(componentCode)){ |
| | | if (componentTemplate.containsKey(componentCode)) { |
| | | return componentTemplate.get(componentCode); |
| | | } |
| | | |
| | |
| | | |
| | | /** |
| | | * 处理资源 |
| | | * |
| | | * @param filePath |
| | | */ |
| | | protected void handleResource(String filePath){ |
| | | protected void handleResource(String filePath) { |
| | | Reader reader = null; |
| | | String sb = ""; |
| | | try{ |
| | | InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(filePath); |
| | | reader = new InputStreamReader(inputStream,"UTF-8"); |
| | | try { |
| | | InputStream inputStream = new ClassPathResource(filePath).getInputStream(); |
| | | //InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(File.separator + filePath); |
| | | reader = new InputStreamReader(inputStream, "UTF-8"); |
| | | int tempChar; |
| | | StringBuffer b = new StringBuffer(); |
| | | while ((tempChar = reader.read()) != -1) { |
| | | b.append((char) tempChar); |
| | | b.append((char) tempChar); |
| | | } |
| | | sb = b.toString(); |
| | | if(!StringUtils.isEmpty(sb)){ |
| | | componentTemplate.put(filePath.substring(filePath.lastIndexOf(File.separator)+1,filePath.length()),sb); |
| | | if (StringUtils.isEmpty(sb)) { |
| | | return; |
| | | } |
| | | }catch (IOException e){ |
| | | String componentKey = ""; |
| | | //这里在window 读取jar包中文件时,也是 / 但是直接启动时 为\这个 所以不能用 File.separator |
| | | if (filePath.contains("/")) { |
| | | componentKey = filePath.substring(filePath.lastIndexOf("/") + 1, filePath.length()); |
| | | } else { |
| | | componentKey = filePath.substring(filePath.lastIndexOf("\\") + 1, filePath.length()); |
| | | } |
| | | componentTemplate.put(componentKey, sb); |
| | | |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | }finally { |
| | | if(reader != null){ |
| | | } finally { |
| | | if (reader != null) { |
| | | try { |
| | | reader.close(); |
| | | } catch (IOException e) { |