1
1
<template lang="html">
2
2
<div >
3
-
4
3
<div class =" example" >
5
4
<div class =" codemirror" >
6
5
<codemirror ref =" cmEditor" v-model =" code" :options =" cmOption" />
7
6
</div>
8
- <div class =" title " >
7
+ <div class =" run " >
9
8
@Vue3js.cn
10
9
<button @click =" run" >运行一下</button>
11
10
</div>
18
17
</template >
19
18
20
19
<script >
21
- import dedent from " dedent" ;
22
- import { codemirror } from " vue-codemirror" ;
23
- // base style
24
- import " codemirror/lib/codemirror.css" ;
25
- // theme css
26
- import " codemirror/theme/base16-dark.css" ;
27
- // language
28
- import " codemirror/mode/vue/vue.js" ;
29
- // active-line.js
30
- import " codemirror/addon/selection/active-line.js" ;
31
- // styleSelectedText
32
- import " codemirror/addon/selection/mark-selection.js" ;
33
- import " codemirror/addon/search/searchcursor.js" ;
34
- // highlightSelectionMatches
35
- import " codemirror/addon/scroll/annotatescrollbar.js" ;
36
- import " codemirror/addon/search/matchesonscrollbar.js" ;
37
- import " codemirror/addon/search/searchcursor.js" ;
38
- import " codemirror/addon/search/match-highlighter.js" ;
39
- // keyMap
40
- import " codemirror/mode/clike/clike.js" ;
41
- import " codemirror/addon/edit/matchbrackets.js" ;
42
- import " codemirror/addon/comment/comment.js" ;
43
- import " codemirror/addon/dialog/dialog.js" ;
44
- import " codemirror/addon/dialog/dialog.css" ;
45
- import " codemirror/addon/search/searchcursor.js" ;
46
- import " codemirror/addon/search/search.js" ;
47
- import " codemirror/keymap/sublime.js" ;
48
- // foldGutter
49
- import " codemirror/addon/fold/foldgutter.css" ;
50
- import " codemirror/addon/fold/brace-fold.js" ;
51
- import " codemirror/addon/fold/comment-fold.js" ;
52
- import " codemirror/addon/fold/foldcode.js" ;
53
- import " codemirror/addon/fold/foldgutter.js" ;
54
- import " codemirror/addon/fold/indent-fold.js" ;
55
- import " codemirror/addon/fold/markdown-fold.js" ;
56
- import " codemirror/addon/fold/xml-fold.js" ;
20
+ import dedent from ' dedent'
21
+ import { codemirror } from ' vue-codemirror'
22
+ // base style
23
+ import ' codemirror/lib/codemirror.css'
24
+ // theme css
25
+ import ' codemirror/theme/base16-dark.css'
26
+ // language
27
+ import ' codemirror/mode/vue/vue.js'
28
+ // active-line.js
29
+ import ' codemirror/addon/selection/active-line.js'
30
+ // styleSelectedText
31
+ import ' codemirror/addon/selection/mark-selection.js'
32
+ import ' codemirror/addon/search/searchcursor.js'
33
+ // highlightSelectionMatches
34
+ import ' codemirror/addon/scroll/annotatescrollbar.js'
35
+ import ' codemirror/addon/search/matchesonscrollbar.js'
36
+ import ' codemirror/addon/search/searchcursor.js'
37
+ import ' codemirror/addon/search/match-highlighter.js'
38
+ // keyMap
39
+ import ' codemirror/mode/clike/clike.js'
40
+ import ' codemirror/addon/edit/matchbrackets.js'
41
+ import ' codemirror/addon/comment/comment.js'
42
+ import ' codemirror/addon/dialog/dialog.js'
43
+ import ' codemirror/addon/dialog/dialog.css'
44
+ import ' codemirror/addon/search/searchcursor.js'
45
+ import ' codemirror/addon/search/search.js'
46
+ import ' codemirror/keymap/sublime.js'
47
+ // foldGutter
48
+ import ' codemirror/addon/fold/foldgutter.css'
49
+ import ' codemirror/addon/fold/brace-fold.js'
50
+ import ' codemirror/addon/fold/comment-fold.js'
51
+ import ' codemirror/addon/fold/foldcode.js'
52
+ import ' codemirror/addon/fold/foldgutter.js'
53
+ import ' codemirror/addon/fold/indent-fold.js'
54
+ import ' codemirror/addon/fold/markdown-fold.js'
55
+ import ' codemirror/addon/fold/xml-fold.js'
57
56
58
57
export default {
59
58
components: {
@@ -68,52 +67,44 @@ export default {
68
67
},
69
68
data () {
70
69
return {
71
- code: `
72
- <!DOCTYPE html>
73
- <html>
74
- <head>
75
- <meta charset="utf-8">
76
- <title>Vue 测试实例</title>
77
- <script src="https://doc.vue-js.com/js/vue.js">${ " < /script>" }
78
- </head>
79
- <body>
80
- <div id="app">
81
- <p>{{ message }}</p>
82
- </div>
83
- <script>
84
- new Vue({
85
- el: '#app',
86
- data: {
87
- message: 'Hello Vue.js!'
88
- }
89
- })
90
- ${ " < /script>" }
91
- </body>
92
- </html>
70
+ code: `
71
+ <!DOCTYPE html>
72
+ <html>
73
+ <head>
74
+ <meta charset="utf-8">
75
+ <title>Vue 测试实例</title>
76
+ <script src="https://doc.vue-js.com/js/vue.js">${ ' < \ / script>' }
77
+ </head>
78
+ <body>
79
+ <div id="app">
80
+ <p>{{ message }}</p>
81
+ </div>
82
+ <script>
83
+ new Vue({
84
+ el: '#app',
85
+ data: {
86
+ message: 'Hello Vue.js!'
87
+ }
88
+ })
89
+ ${ ' < \ / script>' }
90
+ </body>
91
+ </html>
93
92
` ,
94
- cmOption: {
95
- tabSize: 4 ,
96
- foldGutter: true ,
97
- styleActiveLine: true ,
98
- lineNumbers: true ,
99
- line: true ,
100
- keyMap: " sublime" ,
101
- mode: " text/html" ,
102
- htmlMode: true ,
103
- theme: " base16-dark" ,
104
- extraKeys: {
105
- F11 (cm ) {
106
- cm .setOption (" fullScreen" , ! cm .getOption (" fullScreen" ));
107
- },
108
- Esc (cm ) {
109
- if (cm .getOption (" fullScreen" )) cm .setOption (" fullScreen" , false );
110
- }
93
+ cmOption: {
94
+ tabSize: 4 ,
95
+ foldGutter: true ,
96
+ styleActiveLine: true ,
97
+ lineNumbers: true ,
98
+ line: true ,
99
+ keyMap: " sublime" ,
100
+ mode: ' text/html' ,
101
+ htmlMode: true ,
102
+ theme: ' base16-dark'
111
103
}
112
- }
113
- }
104
+ };
114
105
},
115
106
mounted () {
116
- this .run ();
107
+ this .run ()
117
108
},
118
109
methods: {
119
110
run () {
@@ -156,7 +147,7 @@ export default {
156
147
157
148
<style >
158
149
.theme-default-content :not (.custom ) {
159
- max-width : 70 % ;
150
+ max-width : 60 % ;
160
151
}
161
152
.CodeMirror {
162
153
border : 1px solid #eee ;
@@ -173,12 +164,14 @@ export default {
173
164
* {
174
165
box-sizing : border-box ;
175
166
}
176
- .title {
167
+ .run {
177
168
display : flex ;
178
169
justify-content : space-between ;
179
170
padding : 10px 0 ;
180
171
}
181
- .title button {
172
+ .run button {
173
+ outline : none ;
174
+ cursor : pointer ;
182
175
padding : 10px 15px ;
183
176
background : #4caf50 ;
184
177
border-radius : 3px ;
@@ -193,6 +186,8 @@ export default {
193
186
margin : 0 ;
194
187
overflow : auto ;
195
188
padding-top : 0 ;
189
+ background : #f9f9f9 ;
190
+ border : 1px solid #e8e8e8 ;
196
191
}
197
192
198
193
.result {
@@ -201,8 +196,9 @@ export default {
201
196
line-height : 1.6 ;
202
197
word-break : break-all ;
203
198
word-wrap : break-word ;
199
+ border-radius : 8px ;
204
200
}
205
- .result h3 {
201
+ .result h3 {
206
202
margin : 0 ;
207
203
}
208
- </style >
204
+ </style >
0 commit comments