Skip to content

Commit 65571bb

Browse files
authored
Update vue.md
1 parent 64e58ac commit 65571bb

File tree

1 file changed

+251
-62
lines changed

1 file changed

+251
-62
lines changed

vue.md

Lines changed: 251 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,101 +1,290 @@
11
# Compatible con Vue
22

3-
!> Este archivo aún no está traducido al español, estamos traduciendo... ¡Danos una mano con la traducción!
3+
Docsify permite agregar contenido de Vue directamente a tus páginas de Markdown, lo que puede facilitar el trabajo con datos y agregar reactividad a tu sitio. Para comenzar, debes agregar Vue 2.x o 3.x a tu archivo `index.html`. Puedes elegir la versión de producción para tu sitio en vivo o la versión de desarrollo para obtener advertencias útiles en la consola y admitir las herramientas de desarrollo de Vue.js.
44

5-
Puede escribir componentes Vue directamente en el archivo Markdown, y será _analizado_. Puede usar esta función para escribir una demostración y documentación vue juntos.
5+
## Vue 2.x
66

7-
## Uso básico
7+
Para Vue 2.x, puedes agregar las siguientes líneas de código a tu `index.html`:
88

9-
Carga VUE en `./index.html`.
9+
```html
10+
<!-- Producción -->
11+
<script src="//cdn.jsdelivr.net/npm/vue@2/dist/vue.min.js"></script>
12+
13+
<!-- Desarrollo -->
14+
<script src="//cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
15+
```
16+
17+
## Vue 3.x
18+
19+
Para Vue 3.x, puedes agregar las siguientes líneas de código a tu `index.html`:
1020

1121
```html
12-
<script src="//unpkg.com/vue"></script>
13-
<script src="//unpkg.com/docsify"></script>
22+
<!-- Producción -->
23+
<script src="//cdn.jsdelivr.net/npm/vue@3/dist/vue.global.prod.js"></script>
1424

15-
<!-- Or use the compressed files -->
16-
<script src="//unpkg.com/vue/dist/vue.min.js"></script>
17-
<script src="//unpkg.com/docsify/lib/docsify.min.js"></script>
25+
<!-- Desarrollo -->
26+
<script src="//cdn.jsdelivr.net/npm/vue@3/dist/vue.global.js"></script>
1827
```
1928

20-
Then you can immediately write Vue code at Markdown file. `new Vue({ el: '#main' })` script is executed by default to create instance.
29+
Una vez que hayas agregado Vue a tu proyecto, podrás utilizar la sintaxis de plantilla de Vue para crear contenido dinámico en tus páginas de Markdown. Esta sintaxis ofrece características útiles como el soporte para expresiones de JavaScript y directivas de Vue para bucles y renderizado condicional.
2130

22-
*README.md*
31+
Por ejemplo, puedes crear elementos condicionales con `v-if`, bucles con `v-for` y utilizar expresiones de JavaScript en tus páginas de Markdown para lograr contenido dinámico.
2332

24-
````markdown
25-
# Vue guide
33+
Si deseas utilizar datos, propiedades calculadas, métodos y hooks de ciclo de vida de Vue, puedes definirlos en tus páginas de Markdown o en opciones globales. Puedes montar elementos Vue utilizando la sintaxis de plantilla de Vue o creando componentes de Vue personalizados.
2634

27-
`v-for` usage.
35+
Recuerda que Docsify procesa el contenido de Vue en un orden específico en cada carga de página, lo que te permite crear contenido dinámico y reactivo en tu sitio web. Puedes definir datos globales, montar elementos Vue en páginas específicas y crear componentes de Vue personalizados para adaptar la experiencia del usuario.
2836

29-
```html
30-
<ul>
31-
<li v-for="i in 10">{{ i }}</li>
32-
</ul>
37+
### Propiedades calculadas
38+
39+
```js
40+
{
41+
computed: {
42+
timeOfDay() {
43+
const date = new Date();
44+
const hours = date.getHours();
45+
46+
if (hours < 12) {
47+
return 'mañana';
48+
}
49+
else if (hours < 18) {
50+
return 'tarde';
51+
}
52+
else {
53+
return 'noche'
54+
}
55+
}
56+
},
57+
}
58+
```
59+
60+
```markdown
61+
¡Buenos {{ timeOfDay }}!
3362
```
3463

35-
<ul>
36-
<li v-for="i in 10">{{ i }}</li>
37-
</ul>
38-
````
64+
<output data-lang="output">
3965

40-
You can manually initialize a Vue instance.
66+
¡Buenos {{ timeOfDay }}!
4167

42-
*README.md*
68+
</output>
69+
70+
### Métodos
71+
72+
```js
73+
{
74+
data() {
75+
return {
76+
message: '¡Hola, Mundo!'
77+
};
78+
},
79+
methods: {
80+
hola() {
81+
alert(this.message);
82+
}
83+
},
84+
}
85+
```
4386

4487
```markdown
45-
# Vue demo
88+
<button @click="hola">Decir Hola</button>
89+
```
4690

47-
<div id="main">hello {{ msg }}</div>
91+
<output data-lang="output">
92+
<p><button @click="hola">Decir Hola</button></p>
93+
</output>
4894

49-
<script>
50-
new Vue({
51-
el: '#main',
52-
data: { msg: 'Vue' }
53-
})
54-
</script>
95+
### Hooks del ciclo de vida
96+
97+
```js
98+
{
99+
data() {
100+
return {
101+
images: null,
102+
};
103+
},
104+
created() {
105+
fetch('https://api.dominio.com/')
106+
.then(response => response.json())
107+
.then(data => (this.images = data))
108+
.catch(err => console.log(err));
109+
}
110+
}
111+
112+
// Respuesta de la API:
113+
// [
114+
// { title: 'Imagen 1', url: 'https://dominio.com/1.jpg' },
115+
// { title: 'Imagen 2', url: 'https://dominio.com/2.jpg' },
116+
// { title: 'Imagen 3', url: 'https://dominio.com/3.jpg' },
117+
// ];
55118
```
56119

57-
!> In a Markdown file, only the script within the first script tag is executed.
120+
```markdown
121+
<div style="display: flex;">
122+
<figure style="flex: 1;">
123+
<img v-for="imagen in images" :src="imagen.url" :title="imagen.title">
124+
<figcaption>{{ imagen.title }}</figcaption>
125+
</figure>
126+
</div>
127+
```
58128

59-
## Combine Vuep to write playground
129+
<output data-lang="output">
130+
<div style="display: flex;">
131+
<figure v-for="imagen in images" style="flex: 1; text-align: center;">
132+
<img :src="imagen.url">
133+
<figcaption>{{ imagen.title }}</figcaption>
134+
</figure>
135+
</div>
136+
</output>
60137

61-
[Vuep](https://github.com/QingWei-Li/vuep) is a component for rendering Vue components with live editor and preview. Supports Vue component spec and JSX.
138+
## Opciones globales
62139

63-
*index.html*
140+
Utiliza `vueGlobalOptions` para especificar [opciones de Vue](https://vuejs.org/v2/api/#Options-Data) que se utilizarán con contenido de Vue que no esté montado explícitamente con [vueMounts](#mounts), [vueComponents](#components), o un [script de Markdown](#markdown-script). Los cambios en los datos globales se mantendrán y se reflejarán en cualquier referencia global donde se utilicen.
64141

65-
```html
66-
<!-- Inject css file -->
67-
<link rel="stylesheet" href="//unpkg.com/vuep/dist/vuep.css">
142+
```js
143+
window.$docsify = {
144+
vueGlobalOptions: {
145+
data() {
146+
return {
147+
count: 0,
148+
};
149+
},
150+
},
151+
};
152+
```
68153

69-
<!-- Inject javascript file -->
70-
<script src="//unpkg.com/vue"></script>
71-
<script src="//unpkg.com/vuep"></script>
72-
<script src="//unpkg.com/docsify"></script>
154+
```markdown
155+
<p>
156+
<button @click="count -= 1">-</button>
157+
{{ count }}
158+
<button @click="count += 1">+</button>
159+
</p>
160+
```
161+
162+
<output data-lang="output">
163+
<p>
164+
<button @click="count -= 1">-</button>
165+
{{ count }}
166+
<button @click="count += 1">+</button>
167+
</p>
168+
</output>
169+
170+
Observa el comportamiento cuando se representan múltiples contadores globales:
171+
172+
<output data-lang="output">
173+
<p>
174+
<button @click="count -= 1">-</button>
175+
{{ count }}
176+
<button @click="count += 1">+</button>
177+
</p>
178+
</output>
73179

74-
<!-- or use the compressed files -->
75-
<script src="//unpkg.com/vue/dist/vue.min.js"></script>
76-
<script src="//unpkg.com/vuep/dist/vuep.min.js"></script>
77-
<script src="//unpkg.com/docsify/lib/docsify.min.js"></script>
180+
Los cambios realizados en uno de los contadores afectan a ambos contadores. Esto se debe a que ambas instancias hacen referencia al mismo valor global de `count`. Ahora, navega a una nueva página y vuelve a esta sección para ver cómo los cambios en los datos globales persisten entre las cargas de página.
181+
182+
## Montajes
183+
184+
Utiliza `vueMounts` para especificar elementos del DOM que se montarán como [instancias de Vue](https://vuejs.org/v2/guide/instance.html) y sus opciones asociadas. Los elementos de montaje se especifican mediante un [selector CSS](https://developer.mozilla.org/es/docs/Web/CSS/CSS_Selectors) como clave y un objeto que contiene las opciones de Vue como su valor. Docsify montará el primer elemento coincidente en el área de contenido principal cada vez que se cargue una nueva página. Los datos del elemento montado son únicos para cada instancia y no persistirán a medida que los usuarios naveguen por el sitio.
185+
186+
```js
187+
window.$docsify = {
188+
vueMounts: {
189+
'#counter': {
190+
data() {
191+
return {
192+
count: 0,
193+
};
194+
},
195+
},
196+
},
197+
};
78198
```
79199

80-
*README.md*
81200
```markdown
82-
# Vuep
201+
<div id="counter">
202+
<button @click="count -= 1">-</button>
203+
{{ count }}
204+
<button @click="count += 1">+</button>
205+
</div>
206+
```
83207

84-
<vuep template="#example"></vuep>
208+
<output id="counter">
209+
<button @click="count -= 1">-</button>
210+
{{ count }}
211+
<button @click="count += 1">+</button>
212+
</output>
85213

86-
<script v-pre type="text/x-template" id="example">
87-
<template>
88-
<div>Hello, {{ name }}!</div>
89-
</template>
214+
## Componentes
90215

91-
<script>
92-
module.exports = {
93-
data: function () {
94-
return { name: 'Vue' }
95-
}
96-
}
97-
</script>
216+
Utiliza `vueComponents` para crear y registrar [componentes Vue](https://vuejs.org/v2/guide/components.html) globales. Los componentes se especifican utilizando el nombre del componente como clave y un objeto que contiene las opciones de Vue como valor. Los datos del componente son únicos para cada instancia y no persistirán a medida que los usuarios naveguen por el sitio.
217+
218+
```js
219+
window.$docsify = {
220+
vueComponents: {
221+
'contador-de-botones': {
222+
template: `
223+
<button @click="count += 1">
224+
Me has clicado {{ count }} veces
225+
</button>
226+
`,
227+
data() {
228+
return {
229+
count: 0,
230+
};
231+
},
232+
},
233+
},
234+
};
235+
```
236+
237+
```markdown
238+
<contador-de-botones></contador-de-botones>
239+
<contador-de-botones></contador-de-botones>
240+
```
241+
242+
<output data-lang="output">
243+
<contador-de-botones></contador-de-botones>
244+
<contador-de-botones></contador-de-botones>
245+
</output>
246+
247+
## Script de Markdown
248+
249+
El contenido de Vue se puede montar usando una etiqueta `<script>` en tus páginas de Markdown.
250+
251+
!> Solo se ejecuta la primera etiqueta `<script>` en un archivo Markdown. Si deseas montar múltiples instancias de Vue utilizando una etiqueta script, todas las instancias deben montarse dentro de la primera etiqueta `<script>` en tu archivo Markdown.
252+
253+
```html
254+
<!-- Vue 2.x -->
255+
<script>
256+
new Vue({
257+
el: '#ejemplo',
258+
// Opciones...
259+
});
98260
</script>
99261
```
100262

101-
?> Example Refer to the [Vuep documentation](https://qingwei-li.github.io/vuep/).
263+
```html
264+
<!-- Vue 3.x -->
265+
<script>
266+
Vue.createApp({
267+
// Opciones...
268+
}).mount('#ejemplo');
269+
</script>
270+
```
271+
272+
## Notas técnicas
273+
274+
- Docsify procesa el contenido de Vue en el siguiente orden en cada carga de página:
275+
1. Ejecutar el markdown `<script>`
276+
1. Registrar `vueComponents` globales
277+
1. Montar `vueMounts`
278+
1. Montar automáticamente componentes de Vue no montados
279+
1. Montar automáticamente la sintaxis de plantilla de Vue no montada utilizando `vueGlobalOptions`
280+
- Al montar automáticamente contenido de Vue, Docsify montará cada elemento de nivel superior en tu markdown que contiene sintaxis de plantilla o un componente. Por ejemplo, en el siguiente HTML, se montarán los elementos de nivel superior `<p>`, `<mi-componente />` y `<div>`.
281+
```html
282+
<p>{{ foo }}</p>
283+
<mi-componente />
284+
<div>
285+
<span>{{ bar }}</span>
286+
<otro-componente />
287+
</div>
288+
```
289+
- Docsify no montará una instancia de Vue existente ni un elemento que contenga una instancia de Vue existente.
290+
- Docsify destruirá/desmontará automáticamente todas las instancias de Vue que crea antes de cada carga de página.

0 commit comments

Comments
 (0)