Skip to content

Commit 93b9b10

Browse files
committed
update to 1.1.2
1 parent f9f8a1f commit 93b9b10

File tree

15 files changed

+403
-36
lines changed

15 files changed

+403
-36
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>io.github.jeemv.springboot.vuejs</groupId>
88
<artifactId>springboot-vuejs</artifactId>
9-
<version>1.0.26</version>
9+
<version>1.1.2</version>
1010

1111
<name>springboot-vuejs</name>
1212
<url>https://github.com/jeeMv/SpringBoot-VueJS</url>

src/main/java/io/github/jeemv/springboot/vuejs/AbstractVueJS.java

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,7 @@
44
import java.util.Map;
55

66
import io.github.jeemv.springboot.vuejs.beans.RawObject;
7-
import io.github.jeemv.springboot.vuejs.parts.VueComputeds;
8-
import io.github.jeemv.springboot.vuejs.parts.VueData;
9-
import io.github.jeemv.springboot.vuejs.parts.VueDirective;
10-
import io.github.jeemv.springboot.vuejs.parts.VueDirectives;
11-
import io.github.jeemv.springboot.vuejs.parts.VueFilter;
12-
import io.github.jeemv.springboot.vuejs.parts.VueFilters;
13-
import io.github.jeemv.springboot.vuejs.parts.VueHook;
14-
import io.github.jeemv.springboot.vuejs.parts.VueMethods;
15-
import io.github.jeemv.springboot.vuejs.parts.VueWatcher;
16-
import io.github.jeemv.springboot.vuejs.parts.VueWatchers;
7+
import io.github.jeemv.springboot.vuejs.parts.*;
178
import io.github.jeemv.springboot.vuejs.utilities.Http;
189

1910
/**
@@ -71,14 +62,25 @@ public void addData(String key) {
7162
data.put(key, "");
7263
}
7364

65+
/**
66+
* Adds a method
67+
*
68+
* @param name the method name
69+
* @return the method
70+
*/
71+
public VueMethod addMethod(String name) {
72+
return this.addMethod(name, "", new String[] {});
73+
}
74+
7475
/**
7576
* Adds a method
7677
*
7778
* @param name the method name
7879
* @param body the method body (javascript)
80+
* @return the method
7981
*/
80-
public void addMethod(String name, String body) {
81-
this.addMethod(name, body, new String[] {});
82+
public VueMethod addMethod(String name, String body) {
83+
return this.addMethod(name, body, new String[] {});
8284
}
8385

8486
/**
@@ -87,9 +89,10 @@ public void addMethod(String name, String body) {
8789
* @param name the method name
8890
* @param body the method body (javascript)
8991
* @param params the method parameters
92+
* @return the method
9093
*/
91-
public void addMethod(String name, String body, String... params) {
92-
methods.add(name, body, params);
94+
public VueMethod addMethod(String name, String body, String... params) {
95+
return methods.add(name, body, params);
9396
}
9497

9598
/**

src/main/java/io/github/jeemv/springboot/vuejs/VueJS.java

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
import java.util.Map;
55
import java.util.Map.Entry;
66

7+
import io.github.jeemv.springboot.vuejs.configuration.VueVersion;
8+
import io.github.jeemv.springboot.vuejs.configuration.versions.Vue2Version;
9+
import io.github.jeemv.springboot.vuejs.configuration.versions.Vue3Version;
710
import jakarta.annotation.PostConstruct;
811
import org.slf4j.Logger;
912
import org.slf4j.LoggerFactory;
@@ -33,13 +36,21 @@ public class VueJS extends AbstractVueJS {
3336
protected String[] delimiters;
3437
protected boolean useAxios;
3538
protected boolean vuetify;
39+
40+
protected String vueVersion;
3641
protected Map<String, VueComponent> globalComponents;
3742
protected Map<String, AbstractVueComposition> globalElements;
3843

3944
@Autowired(required = false)
4045
protected VueJSAutoConfiguration vueJSAutoConfiguration;
4146
private final Logger logger;
4247

48+
protected VueVersion getVueVersion() {
49+
if (isVue2()) {
50+
return new Vue2Version(useAxios);
51+
}
52+
return new Vue3Version(useAxios);
53+
}
4354
@PostConstruct
4455
public void init() {
4556
if (null == vueJSAutoConfiguration) {
@@ -54,6 +65,7 @@ public void init() {
5465
vuetify = true;
5566
}
5667
el = vueJSProperties.getEl();
68+
vueVersion = vueJSProperties.getVueVersion();
5769
}
5870
}
5971

@@ -65,6 +77,7 @@ public VueJS(String element) {
6577
this.el = element;
6678
globalComponents = new HashMap<>();
6779
globalElements = new HashMap<>();
80+
vueVersion=VueVersion.VUE_3;
6881
logger = LoggerFactory.getLogger(VueJS.class);
6982
}
7083

@@ -92,18 +105,17 @@ public void setDelimiters(String start, String end) {
92105
*/
93106
@Override
94107
public String getScript() {
108+
VueVersion vueVersion = getVueVersion();
95109
StringBuilder script = new StringBuilder();
96-
if (useAxios) {
97-
script = new StringBuilder("Vue.prototype.$http = axios;\n");
98-
}
110+
99111
try {
100112
for (Entry<String, VueComponent> entry : globalComponents.entrySet()) {
101113
script.append(entry.getValue());
102114
}
103115
for (Entry<String, AbstractVueComposition> entry : globalElements.entrySet()) {
104116
script.append(entry.getValue().getScript());
105117
}
106-
script.append("new Vue(").append(JsUtils.objectToJSON(this)).append(");");
118+
script.append(vueVersion.generateVueJSInstance(JsUtils.objectToJSON(this),el));
107119
return "<script>" + script + "</script>";
108120
} catch (JsonProcessingException e) {
109121
e.printStackTrace();
@@ -175,4 +187,8 @@ public boolean isVuetify() {
175187
return vuetify;
176188
}
177189

190+
public boolean isVue2() {
191+
return vueVersion.startsWith("2");
192+
}
193+
178194
}

src/main/java/io/github/jeemv/springboot/vuejs/components/VueComponent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public String getScript() {
6565
String script="";
6666
try {
6767
if(name!=null && !"".equals(name)) {
68-
script="Vue.component('"+name+"',"+JsUtils.objectToJSON(this)+");";
68+
script="app.component('"+name+"',"+JsUtils.objectToJSON(this)+");";
6969
if(!internal)
7070
script= JsUtils.wrapScript(script);
7171
}else {

src/main/java/io/github/jeemv/springboot/vuejs/configuration/VueJSProperties.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ public class VueJSProperties {
1818

1919
private boolean vuetify;
2020

21+
private String vueVersion="3.*";
22+
2123
public String[] getDelimiters() {
2224
return delimiters;
2325
}
@@ -47,6 +49,10 @@ public String getEl() {
4749
return DEFAULT_ELEMENT;
4850
}
4951

52+
public String getVueVersion() {
53+
return vueVersion;
54+
}
55+
5056
public void setDelimiters(String... delimiters) {
5157
this.delimiters = delimiters;
5258
}
@@ -70,4 +76,8 @@ public boolean isVuetify() {
7076
public void setVuetify(boolean vuetify) {
7177
this.vuetify = vuetify;
7278
}
79+
80+
public void setVueVersion(String vueVersion) {
81+
this.vueVersion=vueVersion;
82+
}
7383
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package io.github.jeemv.springboot.vuejs.configuration;
2+
3+
import com.fasterxml.jackson.core.JsonProcessingException;
4+
import io.github.jeemv.springboot.vuejs.components.VueComponent;
5+
import io.github.jeemv.springboot.vuejs.parts.AbstractVueComposition;
6+
import io.github.jeemv.springboot.vuejs.utilities.JsUtils;
7+
8+
import java.util.Map;
9+
10+
public abstract class VueVersion {
11+
public static final String VUE_2="2.*";
12+
public static final String VUE_3="3.*";
13+
14+
protected final boolean useAxios;
15+
16+
public VueVersion(boolean useAxios) {
17+
this.useAxios = useAxios;
18+
}
19+
20+
public abstract String generateVueJSInstance(String internalScript, String el);
21+
22+
protected abstract String generateAxios();
23+
24+
25+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package io.github.jeemv.springboot.vuejs.configuration.versions;
2+
3+
import io.github.jeemv.springboot.vuejs.configuration.VueVersion;
4+
5+
import java.util.Map;
6+
7+
public class Vue2Version extends VueVersion {
8+
9+
public Vue2Version(boolean useAxios) {
10+
super(useAxios);
11+
}
12+
13+
@Override
14+
public String generateVueJSInstance(String internalScript , String el) {
15+
String script= "var app = new Vue(\n" +
16+
internalScript+
17+
");\n";
18+
if (useAxios) {
19+
script += generateAxios();
20+
}
21+
return script;
22+
}
23+
24+
protected String generateAxios() {
25+
return "Vue.prototype.$http=axios;\n";
26+
}
27+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package io.github.jeemv.springboot.vuejs.configuration.versions;
2+
3+
import io.github.jeemv.springboot.vuejs.components.VueComponent;
4+
import io.github.jeemv.springboot.vuejs.configuration.VueVersion;
5+
import io.github.jeemv.springboot.vuejs.parts.AbstractVueComposition;
6+
7+
import java.util.Map;
8+
9+
public class Vue3Version extends VueVersion {
10+
11+
public Vue3Version(boolean useAxios) {
12+
super(useAxios);
13+
}
14+
15+
@Override
16+
protected String generateAxios() {
17+
return "app.config.globalProperties.$http=axios;\n";
18+
}
19+
20+
@Override
21+
public String generateVueJSInstance(String internalScript , String el) {
22+
String script= "const app = Vue.createApp(\n" +
23+
internalScript+
24+
");\n";
25+
if (useAxios) {
26+
script += generateAxios();
27+
}
28+
script+="app.mount('"+el+"');\n";
29+
return script;
30+
}
31+
}

src/main/java/io/github/jeemv/springboot/vuejs/parts/AbstractVueComposition.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* AbstractVueComposition
77
* This class is part of springBoot-VueJS
88
* @author jcheron myaddressmail@gmail.com
9-
* @version 1.0.0
9+
* @version 1.0.1
1010
*
1111
*/
1212
public abstract class AbstractVueComposition {
@@ -29,7 +29,7 @@ public AbstractVueComposition(String name,boolean internal) {
2929
public String getScript() {
3030
String script="";
3131
if(name!=null && !"".equals(name)) {
32-
script="Vue."+getType()+"('"+name+"',"+this.toString()+");";
32+
script="app."+getType()+"('"+name+"',"+this.toString()+");";
3333
if(!internal)
3434
script= JsUtils.wrapScript(script);
3535
}else {

src/main/java/io/github/jeemv/springboot/vuejs/parts/VueMethod.java

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,19 @@
22

33
import java.util.Arrays;
44
import java.util.List;
5+
import java.util.regex.Pattern;
56

67

78
/**
89
* VueMethod
910
* This class is part of springBoot-VueJS
1011
* @author jcheron myaddressmail@gmail.com
11-
* @version 1.0.0
12+
* @version 1.0.1
1213
*
1314
*/
1415
public class VueMethod {
16+
17+
private final static Pattern RTRIM = Pattern.compile(";+$");
1518
private List<String> params;
1619
private String body;
1720
private String name;
@@ -25,16 +28,23 @@ public List<String> getParams() {
2528
return params;
2629
}
2730

28-
public void setParams(List<String> params) {
31+
public VueMethod setParams(List<String> params) {
2932
this.params = params;
33+
return this;
34+
}
35+
36+
public VueMethod addParams(String...params) {
37+
this.params.addAll(Arrays.asList(params));
38+
return this;
3039
}
3140

3241
public String getBody() {
3342
return body;
3443
}
3544

36-
public void setBody(String body) {
45+
public VueMethod setBody(String body) {
3746
this.body = body;
47+
return this;
3848
}
3949

4050
@Override
@@ -51,9 +61,24 @@ public String getName() {
5161
return name;
5262
}
5363

54-
public void setName(String name) {
64+
public VueMethod setName(String name) {
5565
this.name = name;
66+
return this;
5667
}
57-
58-
68+
69+
public VueMethod addBodyParts(String ...body) {
70+
StringBuilder sb=new StringBuilder();
71+
for(String line:body) {
72+
sb.append(RTRIM.matcher(line).replaceFirst(""));
73+
sb.append(";");
74+
}
75+
this.body+=sb.toString();
76+
return this;
77+
}
78+
79+
public VueMethod addBody(String body) {
80+
this.body+=RTRIM.matcher(body).replaceFirst("")+";";
81+
return this;
82+
}
83+
5984
}

0 commit comments

Comments
 (0)