ToCode
Ir al canal en Telegram
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Mostrar mรกs1 419
Suscriptores
Sin datos24 horas
-17 dรญas
Sin datos30 dรญas
Archivo de publicaciones
1 419
# ืืืืกืืจื ืฉื ืืื ืืืืืืืช ื ืืืฉืืช
ืืืืฅ ืืขืืื ืืืื ื ืฉื ื ืืืฉืืช ืืชืจืื, ืืคืฉืจ ืืืืจ ืขื ืคืจืืืืืืจืง "ื ืืืฉ" ืืชืืจ ืคืจืืืืืืจืง ืฉืงื ืืืืฅ ืืืชื, ืืฉืื ืฉืืื ื ืืืฉ ืขืืืจื ื. ืืฉ ืื ืืื ื ืืืคืืื ืื ืฉืืืคืืื ืกืคืจืื ืื ืคืจืืืืืืจืง ืื ืืืฉืื-
ืชืงืืคื ืืจืืื PHP ืืื ื ืืืฉ ืื ืืกืคืืง ืืื ืืฉืื ืงืืืฅ PHP ืขื ืืฉืจืช ืืื ืืงืื ืืชืจ ืืื ืื (ืื ืืืื ื setup ืืืกืืจืื ืฉื CGI Scripts ืฉืืื ืืคื ืื). jQuery ืืื ื ืืืฉ ืื ืืื ืืืื ืงื ืืืชืื ืชืื ืืืืื ืืื ืืืฉืชืืฉ ืื ืืืื ืืช ืงืื ืฉืขืืื. ืจืืืืก ื 2005 ืืื ืืืื ื ืืืฉ ืื ืืื ืืืืจ ืืืืชื ืืืืืืื PHP ืฉืืืคืฉื ืืืชืจ ืกืืจ ืืงืื ืฉืืื, ืืื ืื ืืจืืืฉื ืื ืื ืืขืืืจ ื Java ืื .NET, ืื ืืืืจ1 ืืื ืืืชืจ ื ืืืฉ ื Backbone ื Ember ืืืชืื ืชื Backend ืื ืืื ืืืคืฉืจ ืืื "ืืืื" ืขื ืืืืื ืขืืื ื Front End ืืืืชืื ืืืจืื ืกืืืจืื ืืื ืืืืื ืืช ืืืื ืืงื ืฉืืชืืช, ืืืืื Vue ืืืชืจ ื ืืืฉ ื React ืื Angular ืืกืืืืช ืืืืืช.
ืืืืกืืจื ืืื ืฉืืืขื ืืื ืืื ืืืืืื ื ืืืฉื ืืืืข ืืกืืฃ ืจืืข "ืืืชืคืืืืช", ืฉืื ืื ืื ื ืืืื ืื ืฉืจืง ืืืื ืฉืืื ืงื ืืืชืืื ืืขืืื ืืืื ืืืืืื ืืกืืืืช ืื ืืืืจื ืืืคื ืืืชื ืืืืื. ื Angular1 ืื ืืื ืขื ืืคืืคืืืจืืืช ืฉื ื'ืื ืคืืคื ืื Style Guide ืืืคืืจืกื ืฉืื. ืจืืืืก ืืคืื ืืืกืืจืืืช ืืืืืจ 2010 ืืื ืฉืขืืชื ืืคืืคืืืจืืืช ืฉื Node.JS ืืืืงืจื ืคืจืืืืืืจืงืก ืืฆื ืฉืจืช ื jQuery ืืคืกืืงื ืืืืืช ืืืจืงืฆืื ืืฉืืชืื ืชืื "ืจืฆืื ืืื" ืืชืืืื ืืืืื ืืขืืื ื Front End ืจืขืืื ืืช ืฉื ืชืื ืืช ืืื ืื ืขืฆืืื ืืื ืงืคืกืืืฆืื ืฉืื ืืืืจื ืืกืืืืืช ืืืจืืช, ืืืืืื ืืื ื 2008 ืขื ืืกืคืจ JavaScript The Good Parts.
ืืืชืคืืืืช ืื ืืืืขื ืืืื ืฉืืืื ืืืืืื ืืฉืชื ื ืืื ืืืื ืฉืืืจืืฉืืช, ืืืืฉืืืื ืืืืฉืชืืฉืื ืืฉืชื ื. ืฆืืืชืื ืืืื ืฉืืช ืืืืฆืจ ืฉืื ืืชืื ืืงืืืช ื Angular.JS ืื ืจืืืืก ืื ืืืจ ืื ืืฆืืืืื ืืชืืืง ืืืจื ืฉื ืชืืื ืฉื ืคืืชืื. ืืืืกืืจื ืืื ืฉืืืืงื ืืืื ืฉืืื ืื ืื ืงื ืืืชืืื ืืืฉืชืืฉ ืืืื ืืืืืื X, ืื ืขืฆืจื ื ืืืฉืื ืืื ืืืื ื ืืื ืืืฉืชืืฉ ืื ืืืื ืืื ืืช ืืจืืืืงืืืจื ืฉืชืืืืง ืืขืื ืืืืจื ืฉื ืื.
1 419
1. ืฉืืืืฉ ื Programmatic Navigation ืืื ืื ืืื ืืฆืืจื ืืืืื ืืฉืืฉืชืืฉ ืืืืฅ ืขื ืืืคืชืืจ ืืืืฉื.
2. ืฉืืืืฉ ื Navigation Guards ืืื ืืื ืืข ืืืฉืชืืฉ ืืืืืข ืืืฃ ืืืฉืืง ืื ืฉื ืืืฉืชืืฉ ืืื ืจืืง.
ื ืกื ืืื ืืช ืืช ืืคืืชืจืื ืืื ืืืช ืืฉืชื ืืืจืืื ืืื ืืจืืืช ืืืื ืืจื ืืชื ืืขืืืคืื.
1 419
<li v-for="n in 10" :key="`item-${n}`"><router-link :to="`/products/${n}`">Product {{n}}</router-link></li>
</ul>
</nav>
<router-view />
</div>
</div>
</template>
<script>
export default {
}
</script>
<style scoped>
.buy-page {
padding: 1rem;
}
.container {
display: flex;
}
nav {
margin-right: 2rem;
}
ul {
list-style: none;
padding: 0;
}
</style>
ืืงืืืฅ ืืืืืื ืืืืช ืืื ProductPage.vue:
<template>
<div v-if="data">
<p>Product page for {{ data.name }}</p>
</div>
<div v-else>
Loading...
</div>
</template>
<script>
import { useSWR } from 'vswr'
import { useRoute } from 'vue-router'
export default {
name: 'ProductPage',
setup() {
const route = useRoute()
const { data, error } = useSWR(() => `https://swapi.dev/api/people/${route.params.id}`);
return {
data,
error,
}
}
}
</script>
<style scoped>
</style>
ืงืื ืื ืืจืื ืืื ืขืืฉื ืืกืคืจ ืืืจืื ืืขื ืืื ืื. ืชืืืื ืืชืื ืคืื ืงืฆืืืช setup ืืคืื ืงืฆืื useRoute ืืืืืจื ืืช "ืื ืชืื" ืื ืืืื. ืืจื ืืืืืงื ืื ืชืื ืื ื ืืืื ืืงืื ืืช ืืคืจืืืจ id ืืืืฆืขืืช ืืงืจืืื route.params.id.
ืฉื ืืช ืืคืื ืงืฆืื useSWR ืขืืื ืืืจ ืืืืจืชื ืืืื ืืคืจืงืื ืืงืืืืื ืืืืจืื ืื, ืืงืืืช ืคืื ืงืฆืื ืฉืืืืืจื URL ืืืืฉืืช ืืช ืืืืืข ืืืืชื URL. ืืจืืข ืฉืืืื ืฉืื ืื ื route.params.id ืืคืื ืงืฆืื ืชืืคืขื ืฉืื ืืชืืฉืื ืืช ืืืืืข ืืืืฉ.
ืืืื ื ืืื ืื ืื ื ืืืฉืืื ืืช ืืืืืข ืืืฉืจืช ืืืจื ืฉืืงืืืคืื ื ืื ProductPage ื ืื ืกื ืืขืืื ืืืื ืืชืื ืืช ืฉื ืืงืืืคืื ื ืื ืื ื ืืืคื ืื ืืืงืจื ืื ืืืืืข ืขืืืื ืื ืืืื. ืื ื if/else ืฉืืืคืืข ืฉื ืฉืืฆืื ืืช ืืืืื Loading ืื data ืขืืืื ืจืืง.
ืืฉืื ืื ืืืืจืื ืืื ืืชืืกืคืช:
<router-link to="/products">Shop</router-link>
ืืชืคืจืื ืืขืืืื ืืงืืืคืื ื ืื App.vue.
ื .ื. ืืชื ืืืืืื ืืฉืื ืื ืฉืืืกืคืชื ืื ืงืืืฅ CSS ืืฉื assets/main.css. ืืขืืืื ืขื vue ืื ื ืืขืืืฃ ืืืืกืืฃ ืงืืืฅ CSS ืืกืืืจ ืขืืืจ ืืืื CSS ืืืืืืืืื ืฉืืฉืคืืขืื ืขื ืื ืืืคืื, ืืืืฉืชืืฉ ืืืืืจืืช ื style ืืชืื ืงืืฆื vue ืืฉืืื ืืืื ืขืืฆืื ืฉืจืืืื ืืื ืืงืืืคืื ื ืื ืืกืืืืช.
## ื ืชืืืื ืขื ืฉืืืช
ืืจืืง ืืืจืื ืฉื Vue Router ืฉืื ื ืจืืฆื ืืืจืืืช ืืื ืืชืืืื ืื ืืืื ืืคื ืฉืืืช. ืฉืืื ืื ืืคืงืืืืช ื router-link ืืืืคืืืื ืฉืื ื:
<router-link to="/contact">Contact Us</router-link>
ืื ืืืจ ืื ื ืืจืฆื ืืฉื ืืช ืืช ืืื ื ืื ืชืื, ืืืฉื ืืฉื ืืช ืืช ื URL ืฉืืืื /contact-us ืื ื ืืฆืืจื ืืืืช ืืื router-link ืฉืืืืื ืื ืชืื ืื ืืืฉื ืืช ืืืชื, ืืืืขืจืืช ืืืืื ืื ืขืืื ืืืืืช ืืจืื ืืืืขื ืืืขืืืืช. ืืจืืง ื ืืื ืฉืืคืฉืจ ืืขืฉืืช ืืืงืื ืืื ืืืืกืืฃ ืืืคืืื name ืืืืืจืช ืื ืชืื ืืืืคื ืืื:
{ path: "/contact", component: Contact, name: "contact" },
ืืื ื router-link ืื ื ืืืื ืืืฉืชืืฉ ืืืืชื name ืฉืืื ืืืื ืคื ืืื ืฉืื ืงืฉืืจ ื URL. ืงืื ื router-link ืฉืืฉืชืืฉ ื name ืืืื:
<router-link :to="{ name: 'contact' }">Contact Us</router-link>
ืื ืชืื ืขื ืคืจืืืจืื, ืืืืืื ืืงืืฉืืจ ืืืฃ ืืืฆืจ, ืืงืื ืืจืื ืื:
<router-link :to="{ name: 'product', params: { id: 7 } }">Product 7</router-link>
ืืื ื ืืื ืืืคืฉืจ ืื ืืฉื ืืช ืืช ื URL-ืื ืืื ืฉืืฆืืจื ืืจืืฅ ืืฉื ืืช ืืืชืืื ืืช ืื ืืืื ืงืื ืืื ืืืขืจืืช.
## ืขืืฉืื ืืชื
ืืชืจืืื ืืคืขื ืื ื ืจืืฆื ืืฉืืื ืืชืื ืืืืื ืืฉืื ืืืฉ ืขื ื Router ืืืฉืื ืืช ืื ืขื ืคืืชืื ืืฉืืงืื ื Vue:
1. ืืชืื ืืฉืืง ืืืืจืื ื Vue. ืืืฉืืง ืืฆืื 10 ืจืืืืขืื ืืคืืจืื, ืื ืืื ืืืืฆื ืงืืฃ ืืืงืืคืื ืืืืกืคืจืื ื-1 ืขื 5. ืืืืฆื ืขื ืงืืฃ ืืืคืืช ืืืชื ืืืืฉืคืช ืืช ืืืกืคืจ ืฉืื. ืืืจื ืืืืืฆื ืขื ืงืืฃ ื ืืกืฃ ืื ืืฉื ื ืืงืืคืื ืืืชื ืืกืคืจ ืฉื ืืื ื ืฉืืจืื ืืืืืื, ืืื ืืกืคืจืื ืฉืื ืื ืฉื ืืื ืืืกืชืจื.
2. ืืืจื ืฉืืฉ ืืื ืืฉืืง ืืืืจืื ื ืืฉืื ืืฉืืืื ื Router. ืืชืื ืืกื ืคืชืืื ืืืืื ืชืืื ืืืืืจืช ืฉื ืืฉืชืืฉ ืืืคืชืืจ "ืืชืืืื ืืฉืืง". ืืืืฆื ืขื ืืืคืชืืจ ืืืจื ืืืืจืช ืฉื ืืฉืชืืฉ ืืชืืืื ืืฉืืง.
3. ืืืืื ืืืฉืืง ื ืกืคืืจ ืืฉืืงื ืืื ืืื ืืงื ืืืคืื ืืช ืื ืืงืืคืื - ืืืืืจ ืืืืืข ืื ืืฆืืื. ืืช ืืืื ื ืฉืืืจ ืืืืืช ืฉืืืื.
4. ืืืกืืคื ืืืกื ืืคืชืืื ืงืืฉืืจ ืืืืืช ืืฉืืืื ืฉืืจืื ืืช 5 ืืฉืืงื ืื ืฉืกืืืื ืืช ืืืฉืืง ืืื ืืืจ. ืืืืืช ืืฉืืืื ืืคืฉืจ ืืืืืจ ืืืกื ืืคืชืืื ืืื ืื ืืืชืืื ืืฉืืง ืืืฉ.
ืืฉืืื ืืคืชืืจ ืืช ืืชืจืืื ืชืฆืืจืื ืืืืืช ืืื ืืขืืืจ ืืืกื ืืคืชืืื ืืืกื ืืืฉืืง ืจืง ืื ืืืืืฉ ืืืจ ืฉื ืืฉืชืืฉ, ืืื ืื ืืืคืฉืจ ืืขืืจ ืื ืฉื ืืืฉืชืืฉ ืจืืง. ื Vue Router ื ืืชื ืืคืชืืจ ืืช ืืืขืื ืืืกืคืจ ืืจืืื:1 419
ืืืฆื ืขื ืืื ืื ืจืืื ืคืจืืืจ ืฉืงืืืคืื ื ืื ืืงืืืช ืขืืืจ ืืืื ืืชืืจ Prop; ืืื ืืฉืืงืืืคืื ื ืื ื ืืฆืืช ืืชืืจ ื ืชืื ื Router ืืคืจืืืจ ืขืืืจ ืืฆืืจื ืงืฆืช ืฉืื ื. ืืฉืืื ืืจืืืช ืืช ืื ื ืืกืืฃ ืืืชืจ ืฉืื ื ืืฃ ืฉื ืื ืืช ืืจืฆ'ื ืืืื ืฉืืืืจืช ืืืืืช ืฉื ืืืืืช ืืืืืืื. ืื "ืืืฆืจ" ืืืื ืืกื ืืื ืืฃ ืขื ืฉื ืฉื ืืืืช ืืืจืช ืืืกืจื. ืืคื ื ืืืขืืจ ืืคืจืืืงืฉื ื ืฆืืจื ืืืืกืืฃ ืขืืฆืื, ืืืืจ ืืชืืืืจ ืืื ืืืื - ืืื ืืื ืชืืื ืืืฉืืื ืืืืืื ืฉื ืืืืืช ืืกืคืืง. ืื ื ืืืืื ืืช ืืื ื ืื ืชืืืื ืืคืฉืจ ืืืืืื ื ืชืื ืจืืฉื ืฉื ืืื ืืช
/products, ืืืืจืื ื ืชืืืื ืืื ืืื ืืืืืฆืจืื ืืื /products/1, /products/2 ื /products/7. ืื ืืกืคืจ ืืืืฆื ืืืื ืฉื ืืืฆืจ ืืืจ.
ืื ืื ื ืืืจ ืืืืขืื ืฉืื ืชืื ืืจืืฉื ืืืื ืืืืจืืืช /products. ืืืื ื ืชืืื ืืืืฆืจืื ืื ื ืงืจืืื ื ืชืืืื ืขื ืคืจืืืจืื ืืื ืื ื ืืชืืจืื ืืืชื ืืืืฆืขืืช ืืืืคืช ืืืืง ืืืฉืชื ื (ืืืกืคืจ) ืืืืื ืฉืชืืื ืฉื ืืคืจืืืจ ืขื ืชืืืืืช :, ืืืืืจ ืืืงืจื ืฉื ืืื ืืช ืืืื ืื ื /products/:id.
ืื ืืกืฃ ืฉื ื ืื ืชืืืื /products ื /products/:id ืืืืืื ืืืงืื ืืฉืืชืคืื: ืื ืชืื products ืื ื ืืฆืคื ืืจืืืช ืจืฉืืื ืฉื ืื ืืืืฆืจืื ืืืืืฉืื ืชืคืจืื ืฆื ืืืืฉืืืจ ืืช ืืืืืจ ืืืจืืื ืจืืง ืื ืืจืืข ืื ืื ื ืื ืืกืชืืืื ืขื ืืฃ ืืืฆืจ; ืืื ืชืื /products/:id, ืื ืืฉื ื ืขืืืจ ืืืื id, ืื ื ืืฆืคื ืืจืืืช ืืช ืืืชื ืชืคืจืื ืฆื ืขื ืจืฉืืืช ืืืืฆืจืื ืืื ืืคืขื ืืืืง ืืืจืืื ืืช ืคืจืื ืืืืฆืจ ืฉืืชืืื ื id.
ืืฉ ืืกืคืจ ืืจืืื ืืืฆืื ืชืืื ืืฉืืชืฃ ืืื ืืกืคืจ ืืคืื ื Vue, ืืื ืืืื ืฉืื ืื ื ืืืืจืื ืืื ืขื Vue Router ืื ื ืืจืื ืืช ืืืจื ืฉืืฉืชืืฉืช ื Router - ืืืื ืืฉืืืืฉ ื children. ืืจืขืืื ืืื ืฉืื ืงืืืคืื ื ืื ืืืืื ืืืืื ืชืชื-ื ืชืืืื ืขืืืจ ืืืคืขืื ืฉื router-view ืฉื ืืฆืืื ืืชืืื. ืืืืืจ ืื ื ืืืื ืืืชืื ืืชืื ืืืืจืช ื ืชืื:
{
path: '/products',
component: Store,
children: [
{ path: ':id', component: ProductPage },
]
}
ืืืชืื ืืงืืืคืื ื ืื Store ืืืืฆืจ router-view, ืืื ืื ืื ืชืื ืืชืืื ื /products ืืืชื router-view ืคื ืืื ืืืคืืข ืจืืง; ืืื ืื ืชืื ืืชืืื ื /products/:id (ืืืฉื ืื ืื /products/8) ืื ืืชืื ื router-view ืชืืคืืข ืืงืืืคืื ื ืื ProductPage ืฉืชืงืื ืืช ืืคืจืืืจ id.
ื ืืฉืื ืืืชืืืช ืืงืื ืืื ืืช ืืืืืฆืจืื ืืืืจ ืื ืืกืืจ ืขืืื. ืืชื ืืืืื ืื ืืืจ ืืจืืืช ืืช ืืชืืฆืื ืืงืืืกื ืืืืงืก ืืื:
<iframe src="https://codesandbox.io/embed/vue-router-demo-1-forked-e2nq9?fontsize=14&hidenavigation=1&theme=dark"
style="width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;"
title="vue-router-demo-1 (forked)"
allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking"
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
></iframe>
ืื ืืงืืฉืืจ: https://codesandbox.io/s/vue-router-demo-1-forked-e2nq9?file=/src/assets/main.css.
ืืงืื ืืืื ืงืฆืช ืืจืืื ืืืืฉ ืืืฉืืืื ืืืืืื ืืงืืืืช. ืืืฆืืช ืืช ืื ืชืืืื ืืงืืืฅ routes.js ืืื ืฉืื ืืชืขืจืืื ืขื ืืืจืื ืืืจืื ืืงืืืฅ main.js. ืืงืืืฅ routes ืืืกืคืชื ืืช ืื ืชืื products ืืืช ืืืืืื ืฉืื ืื ืชืื /products/:id. ืืื ืื ื ืจืื:
import Home from "./components/Home";
import About from "./components/About";
import Contact from "./components/Contact";
import Store from "./components/Store";
import ProductPage from "./components/ProductPage";
const routes = [
{ path: "/", component: Home, name: "home" },
{ path: "/about", component: About, name: "about" },
{ path: "/contact", component: Contact, name: "contact" },
{
path: "/products",
component: Store,
name: "shop",
children: [
{ path: "/products/:id", component: ProductPage, name: "product" }
]
}
];
export default routes;
ืืฉืื ืื ืืคืฉืจ ืืืชืขืื ืืฉืื name ืฉืืืกืคืชื ืืื ื ืชืื. ืืืืืื ืืืื ืืกืคืจ ืืื ืืื ืืื ืืื. ืืงืืืคืื ื ืื Store ืื ืืืืืช ืืจืื ืชืืื ืืืฉ ืืืกื ืืื ืืฆืืื ืงืื ืืืื ืจ ืขื ืชืคืจืื ืฆื ืฉืืฆืื ืืคืชืืจ ื ืืืื ืืื ืืื ืืืืืฆืจืื - ืื ื ืจืื ืืงืืืฅ Store.vue:
<template>
<div class='buy-page'>
<h1>Buy Some Stuff</h1>
<p>Please find below the descriptions for our star wars action figures</p>
<div class="container">
<nav class="sidenav">
<ul>1 419
<router-link to="/">Home</router-link>
<router-link to="/about">About Us</router-link>
<router-link to="/contact">Contact Us</router-link>
</nav>
<main>
<router-view />
</main>
</div>
</template>
<script>
export default {
name: 'App',
}
</script>
<style>
html, body {
padding: 0; margin: 0;
}
nav {
padding: 1rem;
padding-left: 0.1rem;
background: #595959;
}
nav a {
margin: 0.2rem;
text-decoration: none;
background: #99aabc;
padding: 0.2rem 0.5rem;
width: 5rem;
text-align: center;
display: inline-block;
color: #2211f1;
}
nav a::visited {
color: #2211f1;
}
nav a.router-link-active {
background: yellow;
}
</style>
ืืช ืืชืืฆืื ืืคืฉืจ ืืจืืืช ืืงืืืกื ืืืืงืก ืืื:
<iframe src="https://codesandbox.io/embed/vue-router-demo-1-cp0e7?fontsize=14&hidenavigation=1&theme=dark"
style="width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;"
title="vue-router-demo-1"
allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking"
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
></iframe>
ืืืงืืฉืืจ:
https://codesandbox.io/s/vue-router-demo-1-cp0e7?file=/src/App.vue.
ืื ืงืืื ืืจืืฉืื ื ืืืชื ืืืืจืช ืื ืชืืืื. ืฉืืื ืื ืืงืืข ืืื ืืืงืืืฅ main.js:
const routes = [
{ path: '/', component: Home },
{ path: '/about', component: About },
{ path: '/contact', component: Contact },
];
ืืงืืข ืืืืืจ ืืขืจื ืฉื 4 ืืืืืงืืื, ืื ืืืืืงื ืืืืฆื "ื ืชืื". ืื ืชืื ืืฉ ืืช ื URL ืฉืื ืืืช ืืงืืืคืื ื ืื ืฉืชืืคืืข ืืฉืืฉืชืืฉ ืืืื ืก ืื ืชืื.
ืืฉืืื ืืืชืื ืืช ืืืคืืืงืฆืื ืขื ืื ืชืืืื ืื ื ืืฉืชืืฉ ืืงืื:
const router = VueRouter.createRouter({
history: VueRouter.createWebHashHistory(),
routes,
});
createApp(App)
.use(router)
.mount('#app')
ืืคืื ืงืฆืื createRouter ืืืฆืจืช ืืช ืืืืืงื ื Router, ืืืคืื ืงืฆืื use ืืืกืืคื ืืช ื Router ืืืืฉืื. ืืคืงืืื createWebHashHistory ืืื ืืืช ืฉืืืืื ืื ืื ืชืืืื ืืืคืืขืื ืขื ืกืืื ื #. ืืืืืจื ืืืื ื ืงืจืืช createWebHistory ืืชืฉืชืืฉ ื History API.
ืืชืื ืืงืืืฅ App.vue ืืคืฉืจ ืืจืืืช ืฉืืืืจืชื ืืชืื ืืช ืืช ืืคืชืืจื ืื ืืืื ืืชืืจ router-link:
<nav>
<router-link to="/">Home</router-link>
<router-link to="/about">About Us</router-link>
<router-link to="/contact">Contact Us</router-link>
</nav>
ื ืืื, ืืืงืื herf ืื ืื ื ืืฉืชืืฉืื ืืืืคืืื to, ืืื ืืืฅ ืืื ืื ืืกืคืืง ืืืื ื a. ืืื ืืก ื ืืื ืฉืงืืืื ื ืืื CSS Class ืืฉื ืืืืืื router-link-active ืฉืืชืืืกืฃ ืืืืืืืืช ื router-link ืฉืืืืฆื ืืช ืืืฃ ืฉืืจืืข ืื ื ื ืืฆื ืื. ืงืื ื CSS ืืื ืืืจื ืืงืืฉืืจ ืื ืืงืื ืจืงืข ืฆืืื:
nav a.router-link-active {
background: yellow;
}
ืฉืืจื ืืืจืื ื ืืืืคืืืื ืืืืชื ืงืืืฅ App.vue ืืื:
<main>
<router-view />
</main>
ืืชืื ืืืื ื ืื Vue ืืืชื ืืช ืืงืืืคืื ื ืื ืืืชืืืื ืื ืชืื ืืืื ืืงืืืคืื ื ืืืช ืฉืืืคืืขืืช ืืืืืช ืื ืชืืืื ืฉืื.
## ืืฆืืจืช ืงืืืคืื ื ืื ืืืช ืืืืคืื ืื ืชืื ืขื ืคืจืืืจืื ืฉืื ืื
ืืคืืืงืฆืืืช ืืขืืื ืืืืืชื ืืจืื ืคืขืืื ืฆืจืืืืช ืืืฆืื ืืืืข ืืืจืื ืคืขืืื ืืฉืืื ืืืฆืื ืืืืข ืื ืื ื ืืฉืชืืฉืื ืืืืชื ืชืื ืืช, ืืืฉืจ ืื ืคืขื ืืืืืื ืืืชื ืืืืืข ืืืจ. ืืืืืื:
1. ืืชืจ ืฉื ืื ืืช ืฉืืฆืื ืืืฆืจืื ืฉืื ืื - ืืชืื ืืช ืฉื ืืฃ ืืืืฆืจ ืืื ืืื ืืืืฆืจืื, ืืื ืืชืืื ืฉืื ื ืืื ืืืฆืจ ืืืืฆืจ.
2. ืืชืจ ืฉื ื ืืืื ืืืจืืขืื ืฉืืืคืฉืจ ืืืฆืื ืืฃ ืืื ืืืจืืข. ืืชืื ืืช ืืื ืืืจืืข ืืื ืืื ืืืืืข ืืื ืฉื ืืืืจืืข, ืืชืืจืื ืืืืงืื ืืืื ืฉืื ืื ืืื ืืืืจืืขืื.
3. ืืชืจ ืฉื ืืืช ืืืื ืฉืืืื ืืฃ ืืืืข ืขื ืื ืกืื ืืืจ. ืชืื ืืช ืืฃ ืืืืืข ืืื ืืื ืืืืืข ืืื ืืืื ืืืืจ, ืืชืืื ืืช ืืืืืืจ ืฉืื ืื ืืื ืกืืื ืืืืจืื ืืฉืื ืื.
ืืืฉืืชืฃ ืืื ืืืชืจืื ืืื ืฉืืฉ ืื ื ืชืื ืืช ืืื ืืืชืืื ืื ืื ื ืืืชืืื ืื ืคืขื ืชืืื ืืืจ. ืืคืฉืจ ืืืฉืื ืขื ืืชืื ืืช ืืชืืจ ืงืืืคืื ื ืื ืืืชืืื ืืืืจ ืืืืคืืื ืืืืฆืขืืช ืคืจืืืจืื ืืกืืืืื ืฉืขืืืจืื ืืงืืืคืื ื ืื. ืืืืืื ืืืชืจ ื ืืืื ืืืืจืืขืื ืชืืื ืงืืืคืื ื ืื ืืืฆืืช ืคืจืื ืืืจืืข ืฉืชืงืื ืืชืืจ ืคืจืืืจ ืืช ืืืื ืืืืจืืข, ืืชืืื ืืืืฆืขืืช ืืืื ืื ืืืฉืื ืืืฉืจืช ืืช ืืืืืข ืขื ืคืจืื ืืืืจืืข.1 419
ืื ืชืืืื ืืืืฆืจ ืงืืฉืืจ ืขื ืกืืื
# ืฉืืืืื ืืืฃ ื HTML ืืื ืืื ืงืืื ืืกืคืฆืืคืืช tasks ืืชืื ืืืฃ. ืื ืืืืืื ืืชืืชื ืืช ืชืืืช ื a ืืชืื ืืฃ HTML ืฉื ืงืจื demo.html ืื ืืงืืฉืืจ demo.html#tasks ืืืืื ืืช ืืืืืฉ ืืฉืืจืืช ืืืงืื ืืขืืื ืื ืืืคืืข ื a, ืืืืืจ ืืฉืืจืืช ืืจืฉืืืช ืืืฉืืืืช.
ืฉืื ืื ื Hash ืืื ืืืจื ืืืืืื ืฉืืืชื ืื ื ืืฉื ืืช ืืช ื URL ืืื ืืืืื ืืืฉื ืืืืฉ ืืฉืจืช, ืืืื ืงืื ืกืคื ืจืืฉืื ืฉื Single Page Application ืฉื ืืฆืจ ื ืงืจื Hash Navigation. ืืกืืืื ืื ืื "ืืฃ" ืืืืฉืื ืืื ืคืฉืื Hash ืฉืื ื ืืชืื HTML ืืืื. ืื ืืืื ืื ื index.html#home, index.html#about, index.html#contact ืืืคืืื index.html#products/2.
ืืื ืืื ืืืืงืจืื ืืืคืืคื ืืคื ื ืืฉืจืช ืืื ืืืฉืื ืืช ืืงืืืฅ index.html, ืืงืื JavaScript ืืกืชืื ืขื ื Hash ืืืืื ืืช ืืชืืื ืฉืื ืื ื ืจืืืื ืืขืืื ืืื ืืืชืืื ื"ืืฃ" ืื ืจืฆืื ื ืืืงืจ.
ืืืืื ืืคืืคื ืื ืืืกืืคื ืชืืืื ืืื ืื ืื ืฉื ืงืจื History API. ืืื ืื ืื ืื ืืคืฉืจ ืืื ืืืจ ืืชืื ืงืื JavaScript ืืฉื ืืช ืืช ื URL ืืื ืฉื ืฆืืจื ืคื ืื ืืฉืจืช, ืืืื ืื ื ืืืื ืืืฉืชืืฉ ื URL-ืื ืจืืืืื ืืืืจื, ืืืฉืืฉืชืืฉ ืจืืฆื ืืขืืืจ ืืฃ ืื ื ืคืฉืื ืืชืื JavaScript ืืฆืืจื ืืืืื ืืฉื ื ืืช ื URL. ืขืืฉืื ื ืืฆืจื ืืขืื ืืืฉื ืฉืืื ืฆื ืืฉืจืช - ืฉืืื ืฆืจืื ืืืชืืืื ืขื ืื ืืกื ืืื ืืื ื URL-ืื ืืคืืื ืฉืืื ืงืืฆื HTML ืื ืงืื ืฆื ืฉืจืช ืฉืืืืข ืืืคื ืืื. ืืืืืื ืืืื ืืืืืช ืฉืืฉ ืื ืจืง ืงืืืฅ index.html ืขื ืืฉืจืช ืืื ืืืขืื ื ืืจืืฉืื ื ื URL ืืื index.html, ืืื ืืฉืชืืฉ ืขืืืจ ืืืฃ "ืืืืืช" ืืงืื JavaScript ืืฉื ื ืืช ื URL ื about.html (ืืืื ืงืืืฅ ืืื ืขื ืืฉืจืช). ืขืืฉืื ืขื ืืคื ืืื ืขืืื ืื ืฉืื ืื ื URL ืืืฆืข ืจืง ืืงืื JavaScript ืืื ืคื ืื ืืฉืจืช, ืืื ืื ืืฉืชืืฉ ืืฉืืืจ ืืช ื URL ืืืืฉ ืืชืืจ ืกืืื ืื ืื ืืจืขื ื ืืช ืืขืืื, ืืฉืจืช ืืฆืืจื ืืืชืืืื ืขื ืคื ืื ืื ืชืื about.html ืฉืื ืงืืื ืฉื.
ืืฉืื ืื ื ืืืชืืื ืืืฉืืื Single Page ืืืื ืืฉ ืื ื ืืื ืฉืชื ืืคืฉืจืืืืช:
1. ืื ืื ื ืืืืืื ืืืฉืชืืฉ ืืื ืื ืื ื Hash ืืืฉื ืฉืขืืืื ืขืืื. ื URL ืืจืื ืงืฆืช ืืืืจ ืืื ืื ื ืืจืฉืช ืฉืื ืืชืืื ืืงืื ืฆื ืืฉืจืช ืืฉืืื ืืืฉืชืืฉ ืืื.
2. ืื ืื ื ืืืืืื ืืขืืื ืืช ืงืื ืฆื ืืฉืจืช ืื ืฉืืขื ื ืืื ืืืงืฉืืช (ืื ืืืื ืืืคืื ืฉืืื ืื ืืืืจ) ืืชืืื ืืืืืจ ืืช ืงืืืฅ ื HTML ืืจืืฉื ืฉื ืืืคืืืงืฆืื.
ืืืืืืืืช ืืคืืกื ืื ืืฉืืื ืื ืืืชืขืกืง ืขื ืฉืื ืืืื ืืงืื ืฆื ืฉืจืช ืื ื ืืฉืชืืฉ ื Hash History. ืืชื ืชืจืื ืฉื Vue ืืืื ืงื ืืืืืจ ืืื ืืฉื ืืื, ืืืฉืชืจืืืฉื ืืืื ืื ืืฉื ืืช ืืช ืงืื ืฆื ืืฉืจืช ืื ืฉืื ืืชืืื ืืืื ื ืฉื Single Page App ืชืืืื ืืืืืืฃ ื History API ืืืืฉ ืืืชืจ.
## ืืฆืืจืช SPA ืจืืฉืื ืขื Vue Router
ืืืจื ืื ืื ืฉืืืืจื ื ืขื Single Page Applications ืืืืข ืืืื ืืจืืืช ืืืืื ืืืื ืืื ืืืืฆืขืืช Vue ื Vue Router. ืืชืืืื ืืืฆืืจืช ืคืจืืืงื Vue ืืืืกืืคื ืื ืืช vue-router ืขื ืืคืงืืื:
yarn add vue-router@4
ืฉืืื ืื ืฉื ืืื ืืืชืืืช ืืคืืกื ืืจืืจืช ืืืืื ืืื vue-router ืืืืจืกื 3 ืืืฉื ื ืืืชืจ ืืืื ืื ื ืืฉืชืืฉ ื @ ืืื ืืงืืช ืืช ืืืืจืกื ืืืืฉื.
ืืฉืืื ืืืชืื ืืืฉืื Single Page ืขื Vue Router ืื ื ืืกื ืืื ืฆืจืื ืืืคื ืืืกืคืจ ื ืงืืืืช:
1. ืื ื ืฆืจืื ืืืืืืจ ืืืื ื ืชืืืื ืืืคืืืงืฆืื ืฉืื ืืืืจื
2. ืื ื ืฆืจืื ืืืชืื ืืช ืืคืืืงืฆืืืช ื Vue ืฉืื ืืืืืกืืฃ ืืืื ืืช Vue Router ืขื ืจืฉืืืช ืื ืชืืืื
3. ืื ื ืฆืจืื ืืืฉืชืืฉ ืืงืืืคืื ื ืื ืืืืืืช ืฉื vue-router ืฉื ืงืจืืช router-link ืืื ืื ืืื ืืื ืืคืื
4. ืื ื ืฆืจืื ืืืฉืชืืฉ ืืงืืืคืื ื ืื ืืืืืืช ืฉื vue-router ืฉื ืงืจืืช router-view ืืื ืืืฆืื ืชืืื ืฉื ืืฃ ืฉืืฉืชื ื ืืฉืืฉืชืืฉืื ืขืืืจืื ืืื URL-ืื.
ืืืื ื ืจืื ืืช ืืจืืขืช ืื ืงืืืืช ืืงืื. ืชืืืื ืืงืืืฅ main.js ื ืืชืื ืืช ืืงืื ืืื:
import { createApp } from 'vue';
import * as VueRouter from 'vue-router';
import Home from './components/Home';
import About from './components/About';
import Contact from './components/Contact';
import App from './App.vue';
const routes = [
{ path: '/', component: Home },
{ path: '/about', component: About },
{ path: '/contact', component: Contact },
];
const router = VueRouter.createRouter({
history: VueRouter.createWebHashHistory(),
routes,
});
createApp(App)
.use(router)
.mount('#app')
ืืืืจ ืืื ื ืืฉืื ืืืฆืืจืช ืืงืืืคืื ื ืืืช: ืืงืื ืื ื ืืชืืืก ื-3 ืงืืืคืื ื ืืืช ืืฉื Home, About ื Contact. ืื ืงืืืคืื ื ืื ืื ืฆืจืืื ืืืืื ืืืชืจ ืืื ืงืื ืืื ืืืืื ืืงืืืคืื ื ืืช Home ืืฆืื:
<template>
<p>This is my homepage</p>
</template>
<script>
export default {
name: "Home",
};
</script>
ืืืกืืื ื ืขืืื ืืช ืืงืืืฅ App.vue ืืชืืื ืืื:
<template>
<div class="container">
<nav>1 419
# ืืืจืื Vue ืืืชืืืืื - ืืืง 6 - ืืืฉืืื Single Page Apps ืขื Vue Router
ืืื ืืื ืกืคืจืื ืืคืืชืื ืืืฉืืื ืฆื-ืืงืื ืืืจืืืื. ืืฉืืืขืืช ืืืืจืื ืื ืื ื ืืคืจืกื ืืื ืืืจืื Vue ืืืชืื ืชื Front End ืฉืจืืฆืื ืืืชืืื ืืขืืื ืขื ืืกืคืจืื. ืขื ืื ืคืืจืกืื ืืคืจืงืื:
1. ืคืจืง 1 - ืคืืชืื ืงืืืคืื ื ืื ืจืืฉืื ื
2. ืคืจืง 2 - ืชืงืฉืืจืช ืืื ืงืืืคืื ื ืืืช
3. ืคืจืง 3 - ืชืื ืืืช ืืื ืืืืืช
4. ืคืจืง 4 - ืืืฉืง ืืืจืืื Composition API
5. ืคืจืง 5 - ืืืืืช ืคืืชืื ื ืื YouTube ื Vue
ืื ืขืืจืชื ืขื ืื ืืืืงืื ืืชื ืืืจ ืฆืจืืืื ืืืืื ืื ืจืข ืื ืื ืืืืืื ืกืืื Vue ืืื ืืกืืืืื ืืืจ ืืื ืืช ืืืฉืืืื ืืกืืกืืื. ืืคืจืง ืืืื ื ืืืจ ืขื Vue Router ืื ืจืื ืืื ืืืฉืืื ืขืืื-ืืืื ืืืื Vue ืขืืืจ ืื ื ืืื ืืช ืืืื ืืงืืืช.
## ืืื Single Page App
ืืืช ืืืืคืืืช ืืืขื ืืื ืืช ืืคืืชืื ืืื ืืื ืืืขืืจ ืืคืืชืื "ืืชืจืื" ืืคืืชืื "ืืคืืืงืฆืืืช". ืืชืืืื ืืื ืืืฉืคืข ืืืกืคืจ ืคืืชืืืื ืืงืืืืื, ืืฆื ืืื ืฉืืคืืจืื ืืืืืืืช ืฉื ืืคืืคื ืื ืืืคืฉืจื ืืืชืื ืืืฉืืืื ืขื ืงืื JavaScript ืืืื ืืืจืื, ืืืฆื ืฉื ื ืืืฉืจืื ืฉืงืืืื ืืคืชืื ืืื ืืขืืื ื Mobile ืืืืคืืคืืืจืืืช ืฉื ืืืืืช ืืืฉืชืืฉ ืืชืื ืืคืืืงืฆืืืช ืืืืคืื ืื.
ืื ืฉืืืืื ืืืคืืืงืฆืืืช, ืืื ืื ืืืืคืื ืื ืื ืืืคืืคื ืื, ืืื ืฉืืคืืืงืฆืื ืฉืืืจืช ืขื ืงืื ืืงืกื. ืืืขืืจืื ืืื ืืคืื ืืืชืจ ืืื ืฉื ืคืขื ืืืื ืืขืื ื ืฉื ืงืืืฅ HTML ืืืฉ ืืืืชื ืงืืฆื CSS ื JavaScript ืืื ืืจืฆื ืืืืฉ ืฉื ืื ืงืื ื JavaScript ืฉื ืืขืืื. ืื ืืืืจ ืฉืืื ืืืืฆื ืขื ืงืืฉืืจ ืืืืฉื ืขืืืื ืืืฃ ืืื ืื ืื ื ืืืืื ืืืขืื ื ืฉื ืืืฃ ืืืืฉ ืืงืืืขืื ืืช ืืจืฆืฃ. ืืืฉืืืื, ืืืคืืืงืฆืืืช ืื ืคืขืืืืช ืืชืื ืืคืื ืืื ืืขืืจ ืืืคืื ืืืจืื ืงืืจืื ืืฆืืจื ืืืืืืช.
ืืชืื ืืคืืคื ืืงืื ืกืคื ืฉื ืฉืื ืื ืจืง ืืืงืื ืืืขืืื ืืื ืืฉืืืืฉ ืขืื ืืืืืจ 2005 ืืืื ืืฉื Ajax. ืืื ืจืง ื 2010, ืืืงืืื ืืคืืคืืืจืืืช ืฉื ืืคืืืงืฆืืืช ืืืืืืื, ืืชืื ืชืื ืืืื ืืืฉืื ืืจืฆืื ืืช ืขื ืฉืื ืื ืืขืืื ืืืื ื Ajax ืืื ืืชืช ืืืืืช ืืฉืชืืฉ ืืืืืืช ืืืขืืจืื ืืื ืืคืื. ืฉืื ืื ืื ืืืื ืืืชื ืื ืืืืื ืืืืช ืืื ืืชืืจืื: ืืฆื ืืืืืื ืืืืช ืืฉืื ื ืืืืืฃ ืจืง ืืช ืชืืื ืืืฃ ื Ajax ืื ื ืฆืจืื ืืืขืื ืืจืื ืคืืืช ืืืืข ืืืฉืจืช (ืื ืฆืจืื ืืืขืื ืืช ืื ื HTML ืืืช ืื ืืงืืฆืื ืฉืกืืืื); ืืื ืืฆื ืืืชืืจืื ืฆืจืื ืืืืืจ ืฉืืคืืคื ืื ืื ื ืืขืื ืืฉืืืช ืขืืืื ืื, ืืืื ืงืื JavaScript ืฆืจืื ืืืื ืชืคืงืืืื ืฉืืืืคื ืจืืื ืขืืฉื ืืคืืคื ืืืืืืช ืืคืฉืจืืช ืืืคืืืฃ ืืืืจื ืืืคืื, ืืคืฉืจืืช ืืฉืืืจืช ืืฃ ืืกืืื ืืืืชืจ ืืชืืจ ืกืืื ืื, ืฉืืืจื ืขื ืืืงืื ืืืืืื ืืืขืื ื ืืืืฉ ืฉื ืขืืื ืืื ืืืืื ืืจืืฉ ืืขืืื ืืืขืืจ ืืื ืขืืืืื ืืืฉืืืืช ื ืืกืคืืช ืืกืื ืื ืื.
ืืืืืจ ืฉื ืช 2015 ืคืจืืืืืช ืคืืชืื Web Applications ืืืื ืืฆืืืจ ืคืืคืืืจืืืช ืืื ืื ืขืื ืืื ืงืฉื ืืื ืืช ืืคืืืงืฆืืืช ืืืื ืื ืจืื ืืื ืืคืืชืื ืืืกืคืจืืืช ืฉืืื ืืฉืืืืฉ ื ืืขืื ืืื ืืืช ืืชืจืื - ืืื ืงืืืฅ HTML ืืืืฆื ืืฃ ืืืชืจ ืืืืืฉื ืืืฃ ืืืจ ืืืืืืช ืืขืืจ ืืงืืืฅ HTML ืืืจ. ืืฉืคืจืืืืืืจืงืก ืคืืชืื ืืื ืืืื ืืืืคืืข ืืืช ืืืืืืืช ืฉืืื ืืืชื ืืืคืื ืืช ืชืืืื ืคืืชืื ื"ืืคืืืงืฆืื" ืืืจืื ืืืชืจ ืงื ืืืืืื ืืฉืืืื ื ืืื ืืฉืืืืช ืื ืืืื ืืืงืื ืืืคืืคื. ืืขืืื ืฉื ืืืื ืืจืื ืคืขืืื ืืืจ ืืืชืจ ืงื ืืืชืื Web Application ืืืฉืจ "ืืชืจ" ืงืืืกื, ืืืื ืฉืืื ืืคืืชืื ืืืชืืืื ืืืืฉื ืื.
ืืืืคืืื ืื ืืืจืืืืื ืฉื Single Page Application ืื:
1. ืืฃ HTML ืืืื ืฉืื ืืืื ืชืืื, ืืงืื JavaScript ืฉืืืจืื ืขื ืืืืื ืืชืืื ืขืฆืื.
2. ื URL ืืฉืชื ื ืืืชืืื ืืชืืื ืืืฉืชื ื ืขื ืืืกื, ืืืจืืช ืฉืืื ืืขืื ื ืฉื ืืฃ HTML ืืืฉ.
3. ืืขืืจ ืืื ืืคืื ืืื ืืืืื ืื ืืืขื ืืืืื, ืืืืงืื ืืขืืื ืืืืืื ืืืืฉืืจ ืงืืืขืื ืืืจืืช ืืืขืืจ.
4. ืืืจื ืืื ืขืืืื ืืชืื Framework ืฉืืืื ืืืื ืืช ืืชืคืงืื ืฉื ืืืคืืคื ืืฉืขืืจื ื ืืืืฉื ืื.
ื Vue ืืกืคืจืื ืฉืขืืืจืช ืื ื ืืื ืืช Single Page Applications ื ืงืจืืช Vue Router. ืืืืจืื ืื ื ืจืื ืืื ืืืชืงืื ืืืชื ืืืื ืืื ืืช ืืืืฆืขืืชื ืืืฉืืื ืขืืื ืืืื.
## ืืืืื ืืื Hash Navigation ื History Navigation
ืืืืฉืืื ืขืืื ืืืื ื URL ืืฉืชื ื ืืื ืขื ืืชืืื ืฉืืฉืชื ื ืขื ืืืกื, ืืื ืชืงืืคื ืืจืืื ืืืืื ืฉืืชืื ืชืื ืืืจ ืืชืื ืืืฉืืื Single Page ืืคืืคื ืื ืขืืืื ืื ืืืคืฉืจื ืื ื ืืฉื ืืช ืืช ื URL ืืื ืืืขืื ืืฃ ืืืฉ. ืืฉืืื ืืืชืืืื ืขื ืื ืืฉืชืืฉื ื ื"ืืขืงืฃ" ืฉื ืงืจื Hash.
ื HTML ืชืืืช a ืืื ืงืืฆืืจ ืฉื ืืืืื anchor ืื ืขืืื. ืืื ืฉืืื ืืืืฆืืช ืงืืฉืืจ ืืื ืื ืืืืื ืืืืฆื ืืช ืืืขื ืฉืืืื ืืงืฉืจืื, ืื ืืช ืืขืืื ืขื ืืขืืื ืฉืืืื ืื ืื ื ืจืืฆืื ืืืืช. ืื ืชืืชืื ืืื ืืงืื ืืืฃ HTML ืืช ืืชืืื:
<a name="tasks">Tasks</a>1 419
# ืื ืืขืืื ืืกืืฃ
ืืจื ืคืืคืืืจืืช ืืืฆืืจ ืงืื ืืจืืข ืืื ืืืคืื ืืืืืืืช ืืืืฅ. ืื ืขืืื ืืื, ืืช ืขืืืืช ืขื ืคืืฆ'ืจ ืืื ืืืืื ืขืืืื ืฉืืืจื ืฉืืืจืช ืืื ืืืจื ืื ืืื ื. ืืื ืืช ืืืืจืช ืืขืฆืื:
"ืื ื ืืืืื ืืืชืื ืืช ืืคืืฆ'ืจ ืืื ืืื ืฉืฆืจืื ืขื ืืืืงื ื ืืื ื ืืคืื ืงืฆืืืช ืืืืืงืืช ืืขื ืชืืขืื ืืืืืงืืช ืืืืื, ืขื ืืืคืื ืืกืืืจ ืืฉืืืืืช ืืขื ืืชืืืช ืฉืืืืชืช SQL ื ืืื ื, ืืื, ืื ืื ื ืืืจื ืืื ื ืืื ื ืืืืืืื ืืื ืื ืืืื ืืืชื ืืคืืชืจืื ืฉืขืืื ืื ืจืง ืืืืืชื ืืื, ืืื ืขืืืฃ ืื ืืืชืื ืืฉืื ืืืจ ืจืง ืืฉืืื ืืจืืืช ืฉืื ืขืืื ืืืืจ ืื ืืืืืจ ืืชืงื".
ืืืจื ืฉืืื ืขืืื ืืกืชืืจ ืฉืืืจ ืื ืื ืื ืงื ืืืฆืื ืืื ืืืืืืืฆืื ืืืืืจ ืืชืงื, ืืืื ื ืฉืืจืื ืขื ืคืืชืจืื ืืช ืืฆื ืืคืืืื.
ืืืืืจื ืืืื ืืื ืืืชืื ืจืง ืงืื ืฉืื ืื ื ืืืื ืื ืืืคืชืืจ ืืขืืืช ืืฉืื ืืืคืืขืืช - ืืคื ืืฉ ืฉื ื ืืชืจืื ืืช: ืืจืืฉืื ืืืืจืืจ ืืื ืฉืืื ืกืืืื ืืืืชืงืข ืขื ืงืื ืืจืืข ืื ืืื ืืจืืฉ ืื ื ืืชื. ืืฉื ื ืืืืืชืจ ืืฉืื, ืืื ืฉืืื ืืื ืืืชืืื ืฉื ืงืื ืืื ื ืืืืช ืงืื ืืืชืจ ืืืช ืืืืืช ืืคืชืืจ ืืขืืืช ืืื ืืืชืจ ืืืืจ ืืืชืจ.
(ื ืืืืจ: ืืืชืื ืงืื ืฉืื ืื ื ืืืื ืื ืื ืื ืืืืจ ืืคืชืืจ ืืช ืื ืืขืืืช ืืขืืื ืืจืืฉ ืืืคื ื ืฉืื ืืืคืืขืืช. ืื ืืกื ืืื ืืืืจ ืืืชืื ืงืื ืฉืื, ืืืชืื ืงืื ืฉืื ืืคืฉื ืืืขืืจ ืืคืจืืืงืฉื, ืฉืื ืืืคืื ืืืื ืกืืฃ ืืงืจื ืงืฆื, ืืฉืืืื ืืคืฉืจ ืืืกืชืื ืขืืื. ืืืืื ืืงืื ืจืข ืืื ืืืฉืืืจ ืืช ืืืืคืื ืืฉืืืืืช ืื ืืงืจื ืงืฆื ืืขืชืื, ืื ืืืืชืจ ืขื ืืืืืืฆืื ืฉื ืงืื ืืื ืืืชืื ืืืชื ืืื ืืื ืืฉืืืื ืืื. ืืื ืืืจืื ืฉืืืขืืืื ืืงืื ืื ืืืืช ืขืืื ืืื ืจืง ื ืจืื ืขืืื; ืืฆื ืฉื ื ืงืื ืืื ืืืื ืืืืื Duplication ืืืืฉืืืจ ืืขืชืื ืืืืื ืขื ืืืกืืจืงืฆืื ืืกืืืืช, ืืืืืื ืฉืื ืืืืืื ืืืืฉ ืืช ืื ืืคืืฆ'ืจืื ืืืื ืืืช. ืืื ืืฆืืข ืืืขืื ืืื ืืื ืืฉืืื, ืื ืืืจ ืื ื ืขืืื ืืช ืืคืจืืืงื ืืืืื ืื ืืื ืืืจ ืืืืืืฃ ืืืชื, ืื ืืื ืืืฉืื ืขืืื ืืฉืืงืจื ืืช ืืงืื).
1 419
# ืืืคืืจ ืืืืืืช ืืืืข
ืื ืื ืืืืืื ืืืื, ืืืืขืื ืฉืืืืคืืจ ืจืง ืืืืืจ ืืช ืืืฆื. ื ืคืืชื ืืืงืจื ืขื ืืืฃ ืืื ืืืื:
https://docs.npmjs.com/docker-and-private-modules
ืื ืืชืื ืืชืืขืื ืฉื npm. ืืืฃ ืืกืืืจ ืืื ืืืฆืืจ ืงืืืฅ
.npmrc ืืชืืจ Docker Image, ืืืฉื ืืฉืืื ืืืฉืื ืืืื' ืืืืืจ ืคืจืื. ืื ืืืืืฆืื ืืืฉืชืืฉ ื Dockerfile ืืื:
FROM risingstack/alpine:3.3-v4.3.1-3.0.1
ARG NPM_TOKEN
COPY .npmrc .npmrc
COPY package.json package.json
RUN npm install
RUN rm -f .npmrc
# Add your source files
COPY . .
CMD npm start
ืืืชืื ืืช ืืืื ืขืืืจ npmrc:
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
ืฉืืื ืื ืืืืคืืจ: ืื ืืืชืืื ืืช ืืืืงื ืืชืื ืืงืื ืืื ืืฉืชืืฉืื ืืืฉืชื ื ืืืืืงืื ืืช ืืงืืืฅ .npmrc ืืืจื ืฉืืฉืชืืฉื ืื ืืื ืืืคืขืื npm install. ืืื ืืืืื ืฉืื ืืืคืืจ ืื ืื ืื ื ืืืืขืื ืฉืื ืคืงืืื ืฉืืจืืฆืื ืืชืื Dockerfile ื ืฉืืจืช ืืืืกืืืจืื ืฉื ืืืืื'. ืชืืื ืืืฉืชื ื NPM_TOKEN ืืืื ืืืื ืืื ืื ืฉืืฉ ืื ืืช ืืืืื', ืืืืืง ืืื ืฉืืื ืื ืืืื ื ืคืฉืื ืฉืืืจืื ืืช ืืงืืืฅ .npmrc ืขื ืืืืงื ืืชืื ืืืืื'.
ืืฉืืื ืืืฉืืง ืืงืืชื ืืช ื Dockerfile ืฉืืื ืืื ืืชื ืืื ื ืืืื' ืืื ืคืืจืกืืชื ืืืชื ื Dockerhub. ืชืจืื ืื ืชืฆืืืื ืืืืืช ืื ืืขืจื ืฉื NPM_TOKEN ืืืืืื ืฉืื:
https://hub.docker.com/layers/ynonp/dtest/latest/images/sha256-7eb4139557b15d6dd86cd5d9511863aaa03cb4271f3f799d701d5c80aa357575?context=explore&tab=layers.1 419
# ืืื ืื ื ืืจืืฅ ืฉืืืืชืช SQL ืืชืื ืืืคืืคื?
ืฉ: ืืื ืื ื ืืจืืฅ ืฉืืืืชืช SQL ืืชืื ืืืคืืคื?
ืช: ืืชื ืื
ืืื ืืฉืืง ืฉืืฉื ื ืืช ืืื. ืจืง ืืืจื ืฉืืชื ืจืืื ืืช ืืืขืื ืืืืื ืืืืช ืืช ืืืฉืืขืืช ืฉื "ืฆื ืฉืจืช" ื"ืฆื ืืงืื" ืืคืฉืจ ืืืชืืื ืืืืจ ืขื ืืคืืชืจืื ืืช, ืขื ืฉืืืืช ืืฉืืืืชื ืืฉืจืช ืืขื ืื ืืืฉืืืืช ืฉื ืืืฉื ืื ืขื ืืืืืช ืืืืข ืืืืฆืืขืื ืืื ืฉืื ืชืจืฆื.
ืืืืืืช ืืื ืืืช ืื ืื ืืฉืื ืฉืฆืจืื "ืืขืงืืฃ"; ืื ืงืืื ืื ืืฉืื ืฉืฆืจืื ืืจืืืช. ืจืง ืืฉืื ืื ื ืจืืืื ืืช ืืืืืืืช ืื ืื ื ืืืงืื ืืืฆืืจ ืืขืจืืืช ืืืืืช ืืืชืจ.
1 419
ืืืืื ืืืจืื ื ืขื ืคืขืืืช ื
.value. ืฉื ื ืืืฉืชื ืื playerRef ื videoId ืืืืืจื ืืืืฆืขืืช ืืืืื ืืฉืืืจื ref. ืคืื ืงืฆืื ืื ืฉื vue ืืืฆืจืช ืืฉืชื ืื ืฉืืืืืื ืืฉื ืืช ืืช ืขืจืื ืืฆืืจื ืจืืืงืืืืืช, ืืืืืจ ืฉืงืื ืืืจ ืืืื ืืคืขืื ืืฉืืฉืชื ืื ืืื ืืฉื ืื ืืช ืขืจืื. ืืื ืืฉืืื ืฉืื ืืขืืื ืืื ืฆืจืื ืืจื ืืฉื ืืช ืืช "ืืขืจื" ืฉื ืืืฉืชื ืื ืืื ืืฉื ืืช ืืช ืืืฉืชื ืื ืขืฆืื, ืืืืืจ ืืื ืฉืื ืืขืืจื ืืืฆืืืข ืขื ืืืืืงื ืืืจ. ืืืช ืืืืจื ืฉื ื value. ืืื ืืืืืงื ืืกืื ref ืืฉ ืฉืื value. ืืชืืื ื value ืืขืืื ืช ืืช ืื ืื ืฉืฆืจืื ืฉืืฉ ืขืจื ืืืฉ ืืฉืื ืืืืจืืช ืืืคืขืืช ืืืฉืื ืืืืฉ ืขื ืื ืืขืจืืื ืฉืชืืืืื ืืฉืื ืื, ืื ืืืคืขืืช ืื ืคืื ืงืฆืืืช ื watch ืฉืืชืืืืืช ืืฉืื. ืงืจืืื ื value ืืืืืจื ืืช ืืขืจื ืฉื ืืืืืืงื. ืืงืจืืื ืืจื value ืืืจืืืช ืืฉืื ืื ื ืงืืจืืื ืืช ืืขืจื ืืชืื ืงืื Vue, ืื ืขืฉืืช ืืฆืืจื ืืืืืืืืช ืืฉืงืืจืืื ืืช ืืขืจื ืืชืื ืืชืื ืืช. ืืืื ืื ืฉืืจื ืื ืืชืื ืืชืื ืืช:
<p>Loading {{videoId}}</p>
ืขืืื ืืืฉ ืืกืืจ ืืืฆืืื ืืช ืืขืจื ืืืืืชื, ืืื ืืฉืืืขื ื ืืืขืื ืืช ืืืืืื ืืงืื ืืืื ื ืฆืจืืืื ืืืชืื:
player.loadVideoById(videoId.value);
## ืขืืฉืื ืืชื
ืืื ืืืืจืื ืืฉืืืืฉืืื ืฉืืคืฉืจ ืืขืฉืืช ืขื Template Refs ืืื ื ืืืื ืคืืงืืก. ืืฉืืื ืืืขืืืจ ืคืืงืืก ืืงืืืช ืืงืืืคืื ื ืื ืื ืื ื ืืฉืชืืฉืื ืืคืื ืงืฆืื focus ืฉื ืืงืืืคืื ื ืื. ืืชืื ืงืืืคืื ื ืื ืฉืืงืืืช ืืืฉืชืืฉ ืืกืคืจ ืืืคืื ืืฉื ื ืฉืืืช ืงืื, ืืฉืื ืืจืืฉืื ืืืฉืชืืฉ ืืงืืื 3 ืกืคืจืืช ืฉื ืงืืืืืช ืืืืจ ืื ืืืืคื ืืืืืืื ืืคืืงืืก ืขืืืจ ืืฉืื ืืฉื ื ืืื ืฉืืืฉืชืืฉ ืืืื ืืืงืืื ืืช ืืืฉื ืืืกืคืจ.
ืืืืจ ืืื ื ืกื ืืขืืื ืืช ืืงืื ืืื ืฉื input ืืจืืฉืื (ืฉื ืืงืืืืืช) ืืชืคืืก ืืช ืืคืืงืืก ืืื ืฉืืขืืื ืขืืื.
ืืฉืืื ืืกืืื - ืืงืื ืฉืืชืืชื ืืฉืชื ื videoId ืืืืืจ ืืืืืช ref. ืืืื ืืืง ืืงืื ืื ืืื ืขืืื ืื ืืฉืชื ื ืื ืืื ืืืืืจ ืืชืืจ ืืืจืืืช ืจืืืื?1 419
<p>Loading {{videoId}}</p>
<div ref="playerRef"></div>
</template>
ืื ืื ื ืืืื ืืชืื ืงืื ืืกืงืจืืคื ืืืฉืช ืืืืื ื DOM ืฉืืชืืื ื div ืืืืจืื, ืืืฉ ืื ืฉืชื ืืจืืื ืืืฉืช ืืืื. ืืื ืฉืขืืื ื Options API, ืืืืืจ ืืืืฉืง ืฉืื ืืืืืจืื ืืืืืงื ืฉืืฉ ืื ืฉืื data ืืฉืื methods ืขืืืจ ืืงืืืคืื ื ืื, ืื ืืคืฉืจ ืืืฉืช ืืืืื ื ืืจื ืืืฉืชื ื this.$refs.playerRef ืืชืื ืืืชืืืืช ืฉื ืืงืืืคืื ื ืื. ืื ืฉืขืืื ื Composition API ืฆืจืื ืืืืืืจ ืืฉืชื ื ืืฉื playerRef, ืืฉืืืจ ืืชืืื ืขืจื ืฉืืืืจ ืืคืื ืงืฆืื ืืฉื ref ืืืืืืืจ ืืืชื ืืืืืืงื ืฉืืืืืจืื ื setup.
ืืขืืืื ืขื ref ืืืชืจ ืืงืืื ืืขืืื ืขื ื Composition API ืืืื ืื ื ืืจืื ืืช ืืงืื ืืฉืืื ืื. ืื ื ืืฉืืจ ืขื ืืืืคืืืื ืืืืืืื ืื ืคืื ืงืฆืืืช ื setup ืฉืชืชืืื ืชืืจืื ืื:
export default {
name: 'YoutubePlayer',
setup() {
const playerRef = ref(null);
return {
playerRef,
}
}
};
ืขื ืขืืฉืื ืืงืื ืื ืขืืฉื ืืจืื. ื ืืื, ืืฉ ืื ื ืืช ืืืืื ื ื DOM ืืื ืขืืืื ืื ืืืืจื ื ืืืชื ืืกืคืจืื. ืื ื ืื ืืืื ืืืืจ ืืช ื DOM Element ืฉื ืฉืืจ ื playerRef ืืกืคืจืื ืกืชื ืืชืื ืคืื ืงืฆืืืช setup, ืืืื ืฉืคืื ืงืฆืืืช setup ืืืคืขืืช ืืคื ื ืฉืืงืืืคืื ื ืื ื ืืฆืจื ืืืขืฆื ืืคื ื ืฉืืืื ื ื DOM ืืื ื ืืฆืจ ืืืชื. ืื ืื ืกื ืืืกืชืื ืขื playerRef ืืชืื ืืคืื ืงืฆืื ืขืจืื ืืืื null.
ืืืงืื ืื ืื ื ืฆืจืื ืืืืื ื Vue ืืขืฉืืช ืืฉืื ืืืจื ืฉืืงืืืคืื ื ืื ืืืจ ืขื ืืืกื ืืืืจื ืฉืืฉ ืื ืืืื ื DOM ืืื ืฉืืคืฉืจ ืืขืืื ืืืชื. ืืืคืื ืืืืจืืขืื ื Vue ืืื ืื ืืืจ ืฉืืงืืื ืืขืฉืืช ืืชืื Composition API ืืืื ืื ื ืฉืื ืฉืืืจืชื ืืฉืืืช ืขืืืื ืื. ืืืืจืืข ืืืชืืื ื ืงืจื mount ืืืืจื ืืืคื ืื ืืื ืืืคืขืื ืคืื ืงืฆืื ืฉื Vue ืฉื ืงืจืืช onMounted ืืืืขืืืจ ืื ืืชืืจ ืคืจืืืจ ืคืื ืงืฆืื ืฉืื ืฉืชืืงืจื ืืื ืืืคื ืืืืจืืข mount.
ืืงืื ืืื ืืฆืืืจ ื ืื ืืืืื ืขื ืืืืื ื playerRef ืืขืงืืืช ืืืจืืข mount:
import YouTubePlayer from 'youtube-player';
import { ref, onMounted } from 'vue';
export default {
name: 'YoutubePlayer',
setup() {
const playerRef = ref(null);
let player;
onMounted(() => {
player = YouTubePlayer(playerRef.value);
console.log(player);
});
return {
playerRef,
}
}
};
ื ืฉืืจื ืื ื ืืฉืืื ืืืจืื ื ืืืื ืืขืื ืช ืกืจื. ืฉืืื ืื ืฉืืืืคืืืื ืืฆืจืชื ืฉืื input ืฉืืืืืจ ืืืฉืชื ื ืืฉื videoId ืืงืืืคืื ื ืื. ืืืืชื ืจืืฆื ืืืืจ ืืื ืืฉืชื ื ืื ืืืื ืืกืจื ืฉืขืืฉืื ื ืืฆื ืื ืื: ืืฉืืืฉืชื ื videoId ืืชืขืืื, ืืืืขื ืกืจื ืืืฉ ืื ืื ืืืชืืื.
ืืคืฉืจืืช ืืืช ืืืฉืช ืืืฉืืื ืื ืืื ืืืฆืืจ ืงืื ืืืคืื ืืืืจืืข input ืฉื ืฉืื ืืงืื. ืจืืื ื ืืช ืื ืืืื ืืืืจืืืื ืืงืืืืื ืืืื ืื ื ืื ืืงื ืืจื ืื ืฉืื. ืื ืฆืจืื ืืืืื ืฉืืืืกืจืื ืฉื ืืืฉื ืื ืืื ืฉืื ืืฉ ืืกืคืจ ืืจืืื ืืื ืืขืจื ืฉื videoId ืืืื ืืืชืขืืื ืื ืฆืจืื ืืืืกืืฃ ืงืื ืืืคืื ืืื ืืืช ืืืืจืืื.
ืืืฉื ืืืจืช ืืื ืืืืฆืจ ืืฉืื ืฉื ืงืจื Watch. ื watch ืืกืชืื ืขื ืืฉืชื ืื ืืกืืืืื ืืืคืขืื ืงืื ืื ืคืขื ืฉืืฉ ืฉืื ืื ืืืื ืืื. ืืฉืืื ืืืฆืืจ watch ืื ืื ื ืืฉืชืืฉืื ืืคืื ืงืฆืื watch ืืืขืืืจืื ืื ืฉืชื ืคืื ืงืฆืืืช: ืืืืช ืืืืืจื ืืช ืืืฉืชื ืื ืขืืืื ืฆืจืื ืืืกืชืื, ืืืฉื ืื ืืืืืจื ืื ืืขืฉืืช ืื ืืื ืื ืืืชืจ ืืืฉืชื ืื ืืื ืืชืขืืื ืื. ืฉืืื ืื ืืืืืง ืืื:
watch(
() => [videoId.value, player],
() => {
if (player) {
player.loadVideoById(videoId.value);
}
});
ืืขืืจืืช ืื ืืืืจ: ืื ืืฉืชื ื videoId.value ืื ืืฉืชื ื player ืืฉื ื ืืช ืขืจืื, ืืคืขื ืืช ืืคืื ืงืฆืื ืฉืชืืืืง ืื player ืืื ื null ืื ืชื ืกื ืืืขืื ืืช ืืืืืื ืฉืืืืื ืฉืื ืฉืืืจ ื videoId.
ืกื ืืื ืืงืืืคืื ื ืื ืืืืื ื ืจืืืช ืื:
<template>
<p>A Player</p>
<input type="text" v-model="videoId" />
<p>Loading {{videoId}}</p>
<div ref="playerRef"></div>
</template>
<script>
import YouTubePlayer from 'youtube-player';
import { ref, onMounted, watch } from 'vue';
export default {
name: 'YoutubePlayer',
setup() {
const playerRef = ref(null);
const videoId = ref('');
let player;
onMounted(() => {
player = YouTubePlayer(playerRef.value);
});
watch(
() => [videoId.value, player],
() => {
if (player) {
player.loadVideoById(videoId.value);
}
});
return {
playerRef,
player,
videoId,
}
}
};
</script>
<style scope="yes">
</style>1 419
# ืืืจืื Vue ืืืชืืืืื - ืืืง 5 - ืืืื ื ืื ื ื ืื YouTube ื Vue
ืกืคืจืืืช Vue ืืื ืกืคืจืืืช JavaScript ืืคืืชืื ืืืืกืก ืงืืืคืื ื ืืืช. ืืื ื ืืฉืืช ืืืืช ืืกืคืจืืืช ืืคืืชืื ืืคืืคืืืจืืืช ืืืื ืืื ืขื React ื Angular. ืื ืฉืืืืื ืืช Vue ืืื ืืืืืฅ ืฉื ืืืชืืื ืืื ืืช ืืืฉืง ืฉืืืื ืืืื ืืืืืืชื ืืื ืฉืื ืืืฉืื ืืืืคืฉืจ ืื ืืกื ืงืื ืืขืืื ืฉื ืงืืืคืื ื ืืืช.
ืคืจืง ืื ืืื ืืคืจืง ืืืืืฉื ืืืืจืื. ืืื ืืืืงืื ืืงืืืืื:
1. ืคืจืง 1 - ืคืืชืื ืงืืืคืื ื ืื ืจืืฉืื ื
2. ืคืจืง 2 - ืชืงืฉืืจืช ืืื ืงืืืคืื ื ืืืช
3. ืคืจืง 3 - ืชืื ืืืช ืืื ืืืืช
4. ืคืจืง 4 - ืืืฉืง ืืืจืืื Composition API
ืืคืจืง ืืืื ื ืจืื ืืื ืืขืืืฃ ืงืื ืงืืื ืืชืืจ ืงืืืคืื ื ืืช Vue ืืืจื ืื ื ืืื ืืกื ืืจื ืืื ืืขืืื ืฉื Vue ืืขืืื ืฉื ืคืืชืื JavaScript ืฉืืื ื ืืืืกืก ืงืืืคืื ื ืืืช.
## ืืชืงื ืช Vue ืืคืืชืื ืคืจืืืงื ืืืฉ ืขื ืืืืื ื ืฉืื
ืืืจื ืืจืืขื ืคืจืงืื ืฉื ืืืืจืื ืื ื ืืจืืืฉ ืฉืืืืข ืืืื ืืืืคืจื ื Code Sandbox ืืืขืืืจ ืืขืืื ืขื ืืืืฉื ืืืงืืื ืฉืืื. ืืืขืืจ ืืขืืืื ืืงืืืืช, ืื ืื ืื ื ืืชื ืื ื ืืืืืืช ืืืฉืืช, ืืงืจื ืืืชื ื ืืฉืืืช ืืขืืืื ืฉื ืืกืคืจืื ืืขืืื ืืืืืชื ืืืื ืื ื ืืืฉื ืฉืฉืืื ืืช ืืืฉืงืขื.
ืืฉืืื ืืืชืืื ืคืจืืืงื Vue ืืืื ื ืื ืืืชืงืื ืืช ืืื ืืคืืชืื ืฉืืื ืืกืืืืช ื CLI. ืืื ืื ืฉืืฉ ืืื Node.JS ืืืชืงื ืชืฆืืจืื ืืืคืขืื ืืฉืืจืช ืืคืงืืื:
$ npm install -g @vue/cli
ืจืง ืคืขื ืืืช ืขื ืืืืื ื ืฉืืื. ืืืจ ืื ืชืืืื ืืื ืชืืงืื ืฉืชืจืฆื ืืืชืื npx vue create ืืืืืจ ืืื ืฉื ืฉื ืชืืงืื ืืื ืืืฆืืจ ืชืื ืืช ืคืจืืืงื ืืืืชื ืชืืงืื. ืืืืืื ืื ื ืจืืฆื ืืืฆืืจ ืคืจืืืงื ืฉื ื ืื ืืืืื ืืืื ืื ื ืืคืขืื ืืฉืืจืช ืืคืงืืื:
$ npx vue create video-player
ืืคืขืื ืืืืช ืชืฆืื ืชืคืจืื ืื ืชืืืื ืืืืืจ ืืช ืกืื ืืคืจืืืงื. ืื ื ืืืืจ ืคืจืืืงื Starter ืขื Vue 3, Babel, eslint ื jest.
ืืชืื ืชืืงืืืช ืืคืจืืืงื ืืงืืืฅ ืืจืืฉืื ืฉืืขื ืืื ืืืชื ื ืืื package.json ืืืืืืง ืืืขื ืืื ืื ืืื ืืืืง scripts:
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"test:unit": "vue-cli-service test:unit",
"lint": "vue-cli-service lint"
},
ืืื ืืฆืจ 4 ืกืงืจืืคืืื: ืืคืงืืื serve ืืคืขืืื ืฉืจืช ืืืฆื ืคืืชืื, ืืคืงืืื build ืืื ื ืืช ืืคืจืืืงื ืืชืืงืื ืืงืืืืช (dist), ืืคืงืืื test:unit ืืจืืฆื ืืืืงืืช ืืืืื ื lint ืืืืงืช ืกืืืืช ืืช ืืงืื. ืืคืขืืื:
$ yarn serve
ืืชืืืื ืืืืื ืก ืืืคืืคื ืืืืฉื ืืืงืืื ืืคืืจื 8080 ืืื ืืจืืืช ืืช ืืฃ ืืคืชืืื.
## ืืชืงื ืช ืกืคืจืืืช youtube-player ืืืืฆืขืืช yarn
ืื ืื ื ืจืืฆืื ืืื ืืช ื ืื ืืืืื ืืืขืฆื ืืขืืืฃ ืกืคืจืืืช JavaScript ืงืืืืช ืฉื ืงืจืืช youtube-player. ืฆืขื ืจืืฉืื ืืืื ืืืชืงืื ืืช ืืกืคืจืื. ืืขืืืื ืขื ืคืจืืืงื Vue ืืกืื Starter ืื ืื ื ืืชืงืื ืื ืืืืืืช JavaScript ื npm. ืืืืืืืช ืืืฉืืจื ืืชืืงืืืช node_modules ืืชืื ืชืืงืืืช ืืคืจืืืงื ืืืขืช ืืื ืื ืืื ืืื ืฉื ืืฆืืืช ืืฉืืืืฉ ืืืขืชืงื ืืชืืงืืืช dist. ื ืชืงืื ืืช ืืกืคืจืื youtube-player ืืืืฆืขืืช ืืคืงืืื:
$ yarn add youtube-player
ืืชืืืื ืืจืืืช ืฉืืกืคืจืื ืืฆืืจืคื ืืจืฉืืืช ืืชืืืืืช ืืงืืืฅ package.json ืืื ื ืืชื ืืืฆืื ืืช ืืงืื ืฉืื ืืชืืงืืืช node_modules ืฉืืชืื ืชืืงืืืช ืืคืจืืืงื.
## ืืชืืืช ืืงืื ืืงืืืคืื ื ืืช Youtube Player
ื ืืื ืก ืืงืื ืืคืจืืืงื, ื ืืืง ืืช ืืงืืืฅ HelloWorld.vue ืืืืงืืื ื ืืฆืืจ ืงืืืฅ ืืืฉ ืืฉื YoutubePlayer.vue. ืขืืฉืื ืืชืืื ืืืืฃ.
ืืฉืืื ืืืฉืชืืฉ ืืกืคืจืืืช youtube-player ืื ื ืฆืจืื:
1. ืืืขืื ืืืชื ืืืืฆืขืืช import
2. ืืืฆืืจ ืืืืืงื YoutubePlayer ืืืืขืืืจ ืืืื ืืืื ื ืื DOM
3. ืืฉืืจืฆื ืืืขืื ืกืจื ืืืฆืื ืืช ืืืืืงื ื YoutubePlyaer ืฉืืฆืจืชื ืืืืคืขืื ืืช ืืคืื ืงืฆืื loadVideoById ืฉืื.
ืืืฉืืื ืืจืืฉืื ื ืืื ืืคืฉืืื ืืืืชืจ. ืืชืืืืช ืืืืง ืืกืงืจืืคื ืื ื ืืืื ืืืชืื ืืช ืืคืงืืื:
import YouTubePlayer from 'youtube-player';
ืืขืืฉืื ืืขื ืืื ืื ืืชืืืืื ืืืกืชืื. ืกืคืจืืืช youtube-player ืจืืฆื ืฉืืขืืืจ ืืืื ืืืืืงื DOM, ืืื ืงืื Vue ืฉืื ื ืืืชื ืขืืื ืขื "ืืืืข" ืืขื "ืืฉืชื ืื", ืืืืืจืืืช ืขื ืืคืืืช ืืืืคืืืื ื DOM ืืื ืืฆื ืืื. ืืฉืืืชื ื ืืฉ ืื ืืืฉื ืืื ืื ืื ืื ืืฆืืจืช ืื ืื ืื ืฉื ืงืจื Template Refs, ืืื ืขืืื ืืื: ืื ื ืืืชื ืืชืื ืืืื ื ืืืืคืืืื ืืืคืืื ref ืืืขืืืจ ืืชืืจ ืขืจื ืฉื ืฉื ืืฉืชื ื. ืืื ืืชืืจื ืืฉืืืจ ืืชืื ืืืฉืชื ื ืืื ืืช ืืืื ื ื DOM ืฉืืชืืื ืืืืื ื ืืืืคืืืื ืฉืืฉ ืื ref.
ืืงืื ืื ืืืืจ ืฉืื ืืืืคืืืื ืื ื ืจืืฉื:
<template>
<p>A Player</p>
<input type="text" v-model="videoId" />
ยกYa disponible! Investigaciรณn de Telegram 2025 โ los principales insights del aรฑo 
