diff --git a/syntax/vue-html.vim b/syntax/vue-html.vim
index 7910c59..fc16555 100644
--- a/syntax/vue-html.vim
+++ b/syntax/vue-html.vim
@@ -24,7 +24,7 @@ syntax match VueKey contained '\v[v:\@][^\=\>[:blank:]]+'
syntax region VueQuote contained
\ start='"' end='"' contains=VueValue
syntax match VueValue contained '\v\"\zs[^"]*\ze\"'
- \ contains=VueInject,javaScriptStringS,javaScriptRepeat,javaScriptOperator,javascriptNumber
+ \ contains=VueInject,@simpleJavascriptExpression
syntax match VueInject contained '\v\$\w*'
@@ -36,7 +36,7 @@ syntax region VueExpression
\ end="}}"
syntax region VueExpression
\ containedin=vueTemplate,VueValue,htmlString,htmlValue
- \ contains=@jsAll
+ \ contains=@simpleJavascriptExpression
\ matchgroup=VueBrace
\ start="{{"
\ end="}}"
@@ -49,14 +49,18 @@ syntax match VueAttr '\v(\S)@'
-" JavaScript syntax for VueValue
-syntax region javaScriptStringS
- \ start=+'+ skip=+\\\\\|\\'+ end=+'\|$+ contained
-syntax region javaScriptStringD
- \ start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ contained
-syntax match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>" contained
-syntax keyword javaScriptRepeat in contained
-syntax match javaScriptOperator '[\!\|\&\+\-\<\>\=\%\/\*\~\^]\{1}' contained
+syntax cluster simpleJavascriptExpression contains=javaScriptStringS,javaScriptStringD,javascriptNumber,javaScriptRepeat,javaScriptOperator
+
+" JavaScript syntax
+if hlexists('javaScriptStringS') == 0
+ syntax region javaScriptStringS
+ \ start=+'+ skip=+\\\\\|\\'+ end=+'\|$+ contained
+ syntax region javaScriptStringD
+ \ start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ contained
+ syntax match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>" contained
+ syntax keyword javaScriptRepeat in contained
+ syntax match javaScriptOperator '[\!\|\&\+\-\<\>\=\%\/\*\~\^]\{1}' contained
+endif
highlight default link VueAttr htmlTag
if s:highlight_vue_attr