Si nunca ha creado una aplicación Vue.js, lo guiaré en la tarea de crear una y comprender cómo funciona. La aplicación que vamos a crear ya está lista y es la aplicación predeterminada de Vue CLI.
Si nunca ha creado una aplicación Vue.js, lo guiaré en la tarea de crear una y comprender cómo funciona.
Primer ejemplo
Primero usaré el ejemplo más básico de usar Vue.
Creas un archivo HTML que contiene
<html>
<body>
<div id="example">
<p>{{ hello }}</p>
</div>
<script src="https://unpkg.com/vue"></script>
<script>
new Vue({
el: '#example',
data: { hello: 'Hello World!' }
})
</script>
</body>
</html>
y lo abres en el navegador. ¡Esa es tu primera aplicación Vue! La página debe mostrar un "¡Hola mundo!" mensaje.
Pongo las etiquetas del script al final del cuerpo para que se ejecuten en orden después de que se cargue el DOM.
Lo que hace este código es instanciar una nueva aplicación Vue, vinculada a la#example
elemento como su plantilla (se define usando un selector CSS generalmente, pero también puede pasar un HTMLElement).
Luego, asocia esa plantilla a ladata
objeto. Ese es un objeto especial que aloja los datos que queremos que Vue represente.
En la plantilla, el especial{{ }}
La etiqueta indica que alguna parte de la plantilla es dinámica, y su contenido debe buscarse en los datos de la aplicación Vue.
Ver en Codepen
Puedes ver este ejemplo en Codepen:https://codepen.io/flaviocopes/pen/YLoLOp
Codepen es un poco diferente de usar un archivo HTML simple, y debe configurarlo para que apunte a la ubicación de la biblioteca Vue en la configuración del Pen:
Segundo ejemplo: la aplicación predeterminada de Vue CLI
Subamos un poco el nivel del juego. La próxima aplicación que vamos a crear ya está lista y estála aplicación predeterminada de Vue CLI.
¿Qué es la CLI de Vue? Es una utilidad de línea de comandos que ayuda a acelerar el desarrollo al crear un esqueleto de aplicación para usted, con una aplicación de muestra en su lugar.
Hay dos formas de obtener esta aplicación.
Utilice la CLI de Vue localmente
El primero es instalar elVue CLIen su computadora y ejecute el comando
vue create <enter the app name>
Usar CodeSandbox
Una forma más sencilla, sin tener que instalar nada, es ir ahttps://codesandbox.io/s/vue.
CodeSandbox es un editor de código genial que le permite crear aplicaciones en la nube, lo que le permite usar cualquier paquete npm y también integrarse fácilmente con Zeit Now para una implementación fácil y GitHub para administrar el control de versiones.
Ese enlace que puse arriba abre la aplicación predeterminada de Vue CLI.
Ya sea que elija usar la CLI de Vue localmente o a través de CodeSandbox, inspeccionemos esa aplicación Vue en detalle.
La estructura de archivos
Junto apackage.json
, que contiene la configuración, estos son los archivos contenidos en la estructura inicial del proyecto:
index.html
src/App.vue
src/main.js
src/assets/logo.png
src/components/HelloWorld.vue
index.html
losindex.html
archivo es el archivo principal de la aplicación.
En el cuerpo incluye solo un elemento simple:<div id="app"></div>
. Este es el elemento que utilizará la aplicación Vue para adjuntar al DOM.
<!DOCTYPE html>
<html>
<head>
<meta charset=“utf-8”>
<meta name=“viewport” content=“width=device-width,initial-scale=1.0”>
<title>CodeSandbox Vue</title>
</head>
<body>
<div id=“app”></div>
<!-- built files will be auto injected -->
</body>
</html>
src/main.js
Estos son los principales archivos JavaScript que impulsan nuestra aplicación.
Primero importamos la biblioteca Vue y el componente de la aplicación desdeApp.vue
.
Establecemos productionTip en false, solo para evitar que Vue genere un "estás en modo de desarrollo”Punta en la consola.
A continuación, creamos la instancia de Vue, asignándola al elemento DOM identificado por#app
, que definimos enindex.html
y le decimos que utilice el componente Aplicación.
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
Vue.config.productionTip = false
/* eslint-disable no-new */
new Vue({
el: ‘#app’,
components: { App },
template: ‘<App/>’
})
src/App.vue
App.vue
es un componente de archivo único. Contiene 3 fragmentos de código: HTML, CSS y JavaScript.
Esto puede parecer extraño al principio, pero los componentes de un solo archivo son una excelente manera de crear componentes autónomos que tienen todo lo que necesitan en un solo archivo.
Tenemos el marcado, el JavaScript que va a interactuar con él y el estilo que se le aplica, que puede tener un alcance o no. En este caso, no tiene alcance, y solo genera ese CSS que se aplica como CSS normal a la página.
La parte interesante radica en elscript
etiqueta.
Importamos uncomponentedesde elcomponents/HelloWorld.vue
archivo, que describiremos más adelante.
Este componente será referenciado en nuestro componente. Es una dependencia. Vamos a generar este código:
<div id="app">
<img width="25%" src="./assets/logo.png">
<HelloWorld/>
</div>
de este componente, que ve hace referencia al componente HelloWorld. Vue insertará automáticamente ese componente dentro de este marcador de posición.
<template>
<div id="app">
<img width="25%" src="./assets/logo.png">
<HelloWorld/>
</div>
</template>
<script>
import HelloWorld from ‘./components/HelloWorld’
export default {
name: ‘App’,
components: {
HelloWorld
}
}
</script>
<style>
#app {
font-family: ‘Avenir’, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>
src/components/HelloWorld.vue
Aquí está el componente HelloWorld, que está incluido en el componente App.
Este componente genera un conjunto de enlaces, junto con un mensaje.
¿Recuerda que antes hablamos de CSS en App.vue, que no tenía alcance? El componente HelloWorld tiene CSS de ámbito.
Puede determinarlo fácilmente mirando elstyle
etiqueta. Si tiene elscoped
atributo, entonces tiene el alcance:<style scoped>
Esto significa que el CSS generado se dirigirá al componente de forma única, a través de una clase que Vue aplica de forma transparente. No necesita preocuparse por esto, y sabe que el CSS nofugaa otras partes de la página.
El mensaje de salida del componente se almacena en eldata
propiedad de la instancia de Vue, y se muestra en la plantilla como{{ msg }}
.
Todo lo que esté almacenado endata
es accesible directamente en la plantilla a través de su propio nombre. No necesitamos decirdata.msg
, solomsg
.
<template>
<div class="hello">
<h1>{{ msg }}</h1>
<h2>Essential Links</h2>
<ul>
<li>
<a
href="https://vuejs.org"
target="_blank"
>
Core Docs
</a>
</li>
<li>
<a
href="https://forum.vuejs.org"
target="_blank"
>
Forum
</a>
</li>
<li>
<a
href="https://chat.vuejs.org"
target="_blank"
>
Community Chat
</a>
</li>
<li>
<a
href="https://twitter.com/vuejs"
target="_blank"
>
Twitter
</a>
</li>
<br>
<li>
<a
href="http://vuejs-templates.github.io/webpack/"
target="_blank"
>
Docs for This Template
</a>
</li>
</ul>
<h2>Ecosystem</h2>
<ul>
<li>
<a
href="http://router.vuejs.org/"
target="_blank"
>
vue-router
</a>
</li>
<li>
<a
href="http://vuex.vuejs.org/"
target="_blank"
>
vuex
</a>
</li>
<li>
<a
href="http://vue-loader.vuejs.org/"
target="_blank"
>
vue-loader
</a>
</li>
<li>
<a
href="https://github.com/vuejs/awesome-vue"
target="_blank"
>
awesome-vue
</a>
</li>
</ul>
</div>
</template>
<script>
export default {
name: ‘HelloWorld’,
data() {
return {
msg: ‘Welcome to Your Vue.js App’
}
}
}
</script>
<!-- Add “scoped” attribute to limit CSS to this component only -->
<style scoped>
h1,
h2 {
font-weight: normal;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
a {
color: #42b983;
}
</style>
Ejecutar la aplicación
CodeSandbox tiene una función de vista previa genial. Puede ejecutar la aplicación y editar cualquier cosa en la fuente para que se refleje inmediatamente en la vista previa.
Descarga mi gratisManual de Vue
Más tutoriales de vue:
- Una descripción general de Vue.js
- La CLI de Vue.js: aprenda a usarla
- DevTools de Vue.js
- Configuración de VS Code para el desarrollo de Vue
- Crea tu primera aplicación con Vue.js
- Componentes de un solo archivo de Vue.js
- Plantillas e interpolaciones de vue.js
- Directivas de Vue.js
- Métodos de Vue.js
- Propiedades calculadas de Vue.js
- Diseñar componentes de Vue.js usando CSS
- Vigilantes de Vue.js
- Métodos Vue vs observadores vs propiedades calculadas
- Filtros de Vue.js
- Componentes de Vue.js
- Tragamonedas Vue.js
- Accesorios de componentes de Vue.js
- Eventos de Vue.js
- Comunicación de componentes de Vue.js
- Vuex, el administrador de estado de Vue.js
- Vue, usa un componente dentro de otro componente
- Vue, cómo usar un accesorio como nombre de clase.
- Cómo usar SCSS con componentes de archivo único Vue.js
- Usando Tailwind con Vue.js
- El enrutador Vue
- Mostrar dinámicamente un componente de Vue
- La hoja de trucos de Vue.js
- Almacene datos de Vue en localStorage usando Vuex
- Cómo aplicar dinámicamente una clase usando Vue
- Vue, cómo usar v-model
- Vue, por qué los datos deben ser una función
- Roadmap to become a Vue.js developer in 2020