You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/style-guide/rules-strongly-recommended.md
+65-65Lines changed: 65 additions & 65 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -76,28 +76,28 @@ components/
76
76
77
77
</div>
78
78
79
-
## Base component names
79
+
## Nombres de los componentes base
80
80
81
-
**Base components (a.k.a. presentational, dumb, or pure components) that apply app-specific styling and conventions should all begin with a specific prefix, such as `Base`, `App`, or`V`.**
81
+
**Los componentes base (también conocidos como componentes de presentación, "silentes"" o puros) que aplican estilos y convenciones específicos de la aplicación deben comenzar todos con un prefijo específico, como `Base`, `App` o`V`.**
82
82
83
-
::: details Detailed Explanation
84
-
These components lay the foundation for consistent styling and behavior in your application. They may**only** contain:
83
+
::: details Explicación detallada
84
+
Estos componentes sientan las bases para un estilo y un comportamiento consistentes en tu aplicación. Pueden contener**solo**:
85
85
86
-
-HTML elements,
87
-
-other base components, and
88
-
-3rd-party UI components.
86
+
-Elementos HTML,
87
+
-Otros componentes base, y
88
+
-Componentes de UI de terceros.
89
89
90
-
But they'll **never**contain global state (e.g. from a [Pinia](https://pinia.vuejs.org/) store).
90
+
Pero **nunca**contendrán un estado global (por ejemplo, de una store de Vue como [Pinia](https://pinia.vuejs.org/)).
91
91
92
-
Their names often include the name of an element they wrap (e.g. `BaseButton`, `BaseTable`), unless no element exists for their specific purpose (e.g. `BaseIcon`). If you build similar components for a more specific context, they will almost always consume these components (e.g. `BaseButton`may be used in`ButtonSubmit`).
92
+
Sus nombres a menudo incluyen el nombre del elemento que envuelven (por ejemplo, `BaseButton`, `BaseTable`), a menos que no exista ningún elemento para tu propósito específico (por ejemplo, `BaseIcon`). Si creas componentes similares para un contexto más específico, casi siempre consumirán esos componentes (por ejemplo, `BaseButton`se puede usar en`ButtonSubmit`).
93
93
94
-
Some advantages of this convention:
94
+
Algunas ventajas de esta convención:
95
95
96
-
-When organized alphabetically in editors, your app's base components are all listed together, making them easier to identify.
96
+
-Cuando se organizan alfabéticamente en los editores, los componentes básicos de tu aplicación se enumeran juntos, lo que los hace más fáciles de identificar.
97
97
98
-
-Since component names should always be multi-word, this convention prevents you from having to choose an arbitrary prefix for simple component wrappers (e.g.`MyButton`, `VueButton`).
98
+
-Dado que los nombres de los componentes siempre deben tener varias palabras, esta convención evita que tengas que elegir un prefijo arbitrario para paquetes de componentes simples (por ejemplo,`MyButton`, `VueButton`).
99
99
100
-
-Since these components are so frequently used, you may want to simply make them global instead of importing them everywhere. A prefix makes this possible with Webpack:
100
+
-Dado que estos componentes se usan con tanta frecuencia, es posible que desees simplemente hacerlos globales en lugar de importarlos en todas partes. Un prefijo hace esto posible usando Webpack:
101
101
102
102
```js
103
103
constrequireComponent=require.context(
@@ -156,11 +156,11 @@ components/
156
156
157
157
</div>
158
158
159
-
## Single-instance component names
159
+
## Nombres de componentes de instancia única
160
160
161
-
**Components that should only ever have a single active instance should begin with the `The` prefix, to denote that there can be only one.**
161
+
**Los componentes que solo deben tener una única instancia activa deben comenzar con el prefijo `The`, para indicar que solo puede haber uno.**
162
162
163
-
This does not mean the component is only used in a single page, but it will only be used once _per page_. These components never accept any props, since they are specific to your app, not their context within your app. If you find the need to add props, it's a good indication that this is actually a reusable component that is only used once per page _for now_.
163
+
Esto no significa que el componente solo se use en una sola página, sino que solo se usará una vez _por página_. Estos componentes no aceptan props, ya que son específicos para tu aplicación, no del contexto de la misma. Si encuentras la necesidad de agregar props, es buen indicio de que este es en realidad un componente reutilizable que solo se usa una vez por página _por ahora_.
164
164
165
165
<divclass="style-example style-example-bad">
166
166
<h3>Incorrecto</h3>
@@ -184,14 +184,14 @@ components/
184
184
185
185
</div>
186
186
187
-
## Tightly coupled component names
187
+
## Nombres de componentes fuertemente acoplados
188
188
189
-
**Child components that are tightly coupled with their parent should include the parent component name as a prefix.**
189
+
**Los componentes hijos que están fuertemente acoplados con su padre deben incluir el nombre del componente padre como prefijo.**
190
190
191
-
If a component only makes sense in the context of a single parent component, that relationship should be evident in its name. Since editors typically organize files alphabetically, this also keeps these related files next to each other.
191
+
Si un componente solo tiene sentido en el contexto de un único componente padre, dicha relación debe ser evidente en su nombre. Dado que usualmente los editores organizar los archivos alfabéticamente, esto también mantiene a estos archivos relacionados cercanos visualmente.
192
192
193
-
::: details Detailed Explanation
194
-
You might be tempted to solve this problem by nesting child components in directories named after their parent. For example:
193
+
::: details Explicación detallada
194
+
Puede que tengas la tentación de resolver este problema anidando componentes hijos en directorios nombrados como su componente padre. Por ejemplo:
195
195
196
196
```
197
197
components/
@@ -202,7 +202,7 @@ components/
202
202
|- index.vue
203
203
```
204
204
205
-
or:
205
+
o:
206
206
207
207
```
208
208
components/
@@ -213,10 +213,10 @@ components/
213
213
|- TodoList.vue
214
214
```
215
215
216
-
This isn't recommended, as it results in:
216
+
Esto no es recomendado ya que da como resultado:
217
217
218
-
-Many files with similar names, making rapid file switching in code editors more difficult.
219
-
-Many nested sub-directories, which increases the time it takes to browse components in an editor's sidebar.
218
+
-Muchos archivos con nombres similares, haciendo difícil el cambio rápido entre archivos en los editores de código.
219
+
-Muchos subdirectorios anidados, lo que aumenta el tiempo que lleva buscar componentes en la barra lateral de un editor.
220
220
:::
221
221
222
222
<divclass="style-example style-example-bad">
@@ -255,24 +255,24 @@ components/
255
255
256
256
</div>
257
257
258
-
## Order of words in component names
258
+
## Orden de las palabras en los nombres de los componentes
259
259
260
-
**Component names should start with the highest-level (often most general) words and end with descriptive modifying words.**
260
+
**Los nombres de los componentes deben comenzar con las palabras del nivel más alto (a menudo el más general) y terminar con palabras descriptivas.**
261
261
262
-
::: details Detailed Explanation
263
-
You may be wondering:
262
+
::: details Explicación detallada
263
+
Te estarás preguntando:
264
264
265
-
> "Why would we force component names to use less natural language?"
265
+
> "¿Por qué forzar un lenguaje poco natural al nombrar componentes?"
266
266
267
-
In natural English, adjectives and other descriptors do typically appear before the nouns, while exceptions require connector words. For example:
267
+
En inglés natural, los adjetivos y otros descriptores suelen aparecer antes de los sustantivos, mientras que las excepciones requieren palabras conectoras. Por ejemplo:
268
268
269
-
-Coffee _with_ milk
270
-
-Soup _of the_ day
271
-
-Visitor _to the_ museum
269
+
-Café _con_ leche
270
+
-Sopa _del_ día
271
+
-Visitante _del_ museo
272
272
273
-
You can definitely include these connector words in component names if you'd like, but the order is still important.
273
+
Definitivamente, puedes incluir estas palabras conectoras en los nombres de los componentes si lo deseas, pero el orden sigue siendo importante.
274
274
275
-
Also note that **what's considered "highest-level" will be contextual to your app**. For example, imagine an app with a search form. It may include components like this one:
275
+
También ten en cuenta que **lo que se considera "el nivel más alto" será contextual a tu aplicación**. Por ejemplo, imagina una aplicación con un formulario de búsqueda. Puedes incluir componentes como este:
276
276
277
277
```
278
278
components/
@@ -284,7 +284,7 @@ components/
284
284
|- TermsCheckbox.vue
285
285
```
286
286
287
-
As you might notice, it's quite difficult to see which components are specific to the search. Now let's rename the components according to the rule:
287
+
Como puedes notar, es bastante difícil ver qué componentes son específicos de la búsqueda. Ahora cambiemos el nombre de los componentes de acuerdo con la regla:
288
288
289
289
```
290
290
components/
@@ -296,13 +296,13 @@ components/
296
296
|- SettingsCheckboxTerms.vue
297
297
```
298
298
299
-
Since editors typically organize files alphabetically, all the important relationships between components are now evident at a glance.
299
+
Puesto que los editores normalmente organizan los archivos alfabéticamente, todas las relaciones importantes entre los componentes ahora son evidentes de un vistazo.
300
300
301
-
You might be tempted to solve this problem differently, nesting all the search components under a "search" directory, then all the settings components under a "settings" directory. We only recommend considering this approach in very large apps (e.g. 100+ components), for these reasons:
301
+
Pudieras verte tentado a resolver este problema de manera diferente, anidando todos los componentes de búsqueda en un directorio de "búsqueda", luego todos los componentes de configuración en un directorio de "configuración". Recomendamos considerar este enfoque solo en aplicaciones muy grandes (por ejemplo, más de 100 componentes), por las siguientes razones:
302
302
303
-
-It generally takes more time to navigate through nested sub-directories, than scrolling through a single `components` directory.
304
-
-Name conflicts (e.g. multiple `ButtonDelete.vue` components) make it more difficult to quickly navigate to a specific component in a code editor.
305
-
-Refactoring becomes more difficult, because find-and-replace often isn't sufficient to update relative references to a moved component.
303
+
-Por lo general, lleva más tiempo navegar a través de subdirectorios anidados que desplazarse por un solo directorio de "componentes".
304
+
-Los conflictos de nombres (por ejemplo, múltiples componentes `ButtonDelete.vue`) dificultan la navegación rápida a un componente específico en un editor de código.
305
+
-La refactorización se vuelve más difícil, porque buscar y reemplazar a menudo no es suficiente para actualizar las referencias relativas a un componente movido.
306
306
:::
307
307
308
308
<divclass="style-example style-example-bad">
@@ -335,24 +335,24 @@ components/
335
335
336
336
</div>
337
337
338
-
## Self-closing components
338
+
## Componentes de cierre automático
339
339
340
-
**Components with no content should be self-closing in [Single-File Components](/guide/scaling-up/sfc.html), string templates, and [JSX](/guide/extras/render-function.html#jsx-tsx) - but never in DOM templates.**
340
+
**Los componentes sin contenido deben cerrarse automáticamente en [Componentes de un Solo Archivo](/guide/scaling-up/sfc.html), templates de cadena y [JSX](/guide/extras/render-function.html#jsx-tsx), pero nunca en templates del DOM.**
341
341
342
-
Components that self-close communicate that they not only have no content, but are **meant**to have no content. It's the difference between a blank page in a book and one labeled "This page intentionally left blank." Your code is also cleaner without the unnecessary closing tag.
342
+
Los componentes de cierre automático comunican que no solo no tienen contenido, sino que están **destinados**a no tener contenido. Es la diferencia entre una página en blanco en un libro y una etiquetada como "Esta página se dejó en blanco intencionalmente". Tu código también es más limpio sin la etiqueta de cierre innecesaria.
343
343
344
-
Unfortunately, HTML doesn't allow custom elements to be self-closing - only [official "void" elements](https://www.w3.org/TR/html/syntax.html#void-elements). That's why the strategy is only possible when Vue's template compiler can reach the template before the DOM, then serve the DOM spec-compliant HTML.
344
+
Desafortunadamente, HTML no permite que los elementos personalizados se cierren automáticamente, solo los [elementos "vacíos" oficiales](https://www.w3.org/TR/html/syntax.html#void-elements). Es por eso que la estrategia solo es posible cuando el compilador de templates de Vue puede alcanzar la template antes del DOM y luego servir el HTML compatible con las especificaciones del DOM.
345
345
346
346
<divclass="style-example style-example-bad">
347
347
<h3>Incorrecto</h3>
348
348
349
349
```vue-html
350
-
<!-- In Single-File Components, string templates, and JSX -->
350
+
<!-- En Componentes de un Solo Archivo, templates de cadenas y JSX -->
351
351
<MyComponent></MyComponent>
352
352
```
353
353
354
354
```vue-html
355
-
<!-- In DOM templates -->
355
+
<!-- En templates del DOM -->
356
356
<my-component/>
357
357
```
358
358
@@ -362,46 +362,46 @@ Unfortunately, HTML doesn't allow custom elements to be self-closing - only [off
362
362
<h3>Correcto</h3>
363
363
364
364
```vue-html
365
-
<!-- In Single-File Components, string templates, and JSX -->
365
+
<!-- En Componentes de un Solo Archivo, templates de cadenas y JSX -->
366
366
<MyComponent/>
367
367
```
368
368
369
369
```vue-html
370
-
<!-- In DOM templates -->
370
+
<!-- En templates del DOM -->
371
371
<my-component></my-component>
372
372
```
373
373
374
374
</div>
375
375
376
-
## Component name casing in templates
376
+
## Nombre de componente enmarcados en templates
377
377
378
-
**In most projects, component names should always be PascalCase in [Single-File Components](/guide/scaling-up/sfc.html)and string templates - but kebab-case in DOM templates.**
378
+
**En la mayoría de los proyectos, los nombres de los componentes siempre deben estar en PascalCase en [Componentes de un Solo Archivo](/guide/scaling-up/sfc.html)y templates de cadenas, pero en kebab-case en las templates del DOM.**
379
379
380
-
PascalCase has a few advantages over kebab-case:
380
+
PascalCase tiene algunas ventajas sobre kebab-case:
381
381
382
-
-Editors can autocomplete component names in templates, because PascalCase is also used in JavaScript.
383
-
-`<MyComponent>`is more visually distinct from a single-word HTML element than `<my-component>`, because there are two character differences (the two capitals), rather than just one (a hyphen).
384
-
-If you use any non-Vue custom elements in your templates, such as a web component, PascalCase ensures that your Vue components remain distinctly visible.
382
+
-Los editores pueden autocompletar los nombres de los componentes en las templates, porque PascalCase también se usa en JavaScript.
383
+
-`<MyComponent>`es visualmente más diferente de un elemento HTML de una sola palabra que `<my-component>`, porque hay dos caracteres diferentes (las dos mayúsculas), en lugar de solo uno (el guión).
384
+
-Si usas elementos personalizados que no son de Vue en tus templates, como un componente web, PascalCase garantiza que tus componentes de Vue permanezcan claramente visibles.
385
385
386
-
Unfortunately, due to HTML's case insensitivity, DOM templates must still use kebab-case.
386
+
Desafortunadamente, debido a la insensibilidad de mayúsculas y minúsculas de HTML, las templates del DOM deben seguir usando kebab-case.
387
387
388
-
Also note that if you've already invested heavily in kebab-case, consistency with HTML conventions and being able to use the same casing across all your projects may be more important than the advantages listed above. In those cases, **using kebab-case everywhere is also acceptable.**
388
+
También ten en cuenta que si ya has invertido mucho en kebab-case, la coherencia con las convenciones de HTML y poder usar el mismo enmarcado en todos tus proyectos puede ser más importante que las ventajas enumeradas anteriormente. En esos casos, **también es aceptable usar kebab-case en todas partes.**
389
389
390
390
<divclass="style-example style-example-bad">
391
391
<h3>Incorrecto</h3>
392
392
393
393
```vue-html
394
-
<!-- In Single-File Components and string templates -->
394
+
<!-- En Componentes de un Solo Archivo y templates de cadenas -->
395
395
<mycomponent/>
396
396
```
397
397
398
398
```vue-html
399
-
<!-- In Single-File Components and string templates -->
399
+
<!-- En Componentes de un Solo Archivo y templates de cadenas -->
400
400
<myComponent/>
401
401
```
402
402
403
403
```vue-html
404
-
<!-- In DOM templates -->
404
+
<!-- En templates del DOM -->
405
405
<MyComponent></MyComponent>
406
406
```
407
407
@@ -411,19 +411,19 @@ Also note that if you've already invested heavily in kebab-case, consistency wit
411
411
<h3>Correcto</h3>
412
412
413
413
```vue-html
414
-
<!-- In Single-File Components and string templates -->
414
+
<!-- En Componentes de un Solo Archivo y templates de cadenas -->
0 commit comments