CurateBot Devlog 2: 첫 번째 단계 - 상용구 정리
파일별로 살펴보겠습니다. 현재 사이트는 다음과 같습니다.
App.vue
이것은 우리의 루트 구성 요소입니다. 이것은 우리가 다루는 최고 수준의 Vue 구성 요소이며 항상 로드됩니다. 따라서 모든 앱 수준 항목, 즉 앱 바(및 나중에 UI 알림)가 여기에 들어갑니다.
중요한 것은 라우터 구성 요소가 여기에 들어가야 한다는 것입니다. 라우터 구성 요소는 vue-router에서 제공하며 현재 있는 URL에 따라 보기 전환을 처리합니다.
원래 상용구 파일은 here 입니다. 짧은 형식으로 여기 있습니다 (많은 것을 잘라 냈습니다)
<template>
<v-app>
<v-app-bar
app
color="primary"
dark
>
... snip ...
</v-app-bar>
<v-main>
<HelloWorld/>
</v-main>
</v-app>
</template>
<script lang="ts">
import Vue from 'vue';
import HelloWorld from './components/HelloWorld.vue';
export default Vue.extend({
name: 'App',
components: {
HelloWorld,
},
data: () => ({
//
}),
});
</script>
여기서 언급할 가치가 있는 몇 가지 사항이 있습니다. 먼저 상용구는 를 정의합니다. 이것은 스크린샷 상단의 파란색 막대입니다. 이것은 component is provided by Vuetify, it contains all the styling for an application bar, and has many options for tuning its appearance, for example right now it's set to dark
which causes the text to show up in white. I'm going to go with the default for now, and will adjust appearances later.
The boilerplate also sticks in a component which it imports from components/HelloWorld.vue
this component is what's responsible for all the junk on the page. I'll describe that later.
Finally, the part of this Vue component contains just your standard matter for defining a component, it's empty other than defining the name, and a list of imported components (i.e. HelloWorld).
I'm going to do four things to this file:
Strip out the and put that in its own component at components/AppBar.vue
Remove and delete the vue file, we don't want that in here
<template>
<v-app>
<v-app-bar
app
color="primary"
dark
>
... snip ...
</v-app-bar>
<v-main>
<HelloWorld/>
</v-main>
</v-app>
</template>
<script lang="ts">
import Vue from 'vue';
import HelloWorld from './components/HelloWorld.vue';
export default Vue.extend({
name: 'App',
components: {
HelloWorld,
},
data: () => ({
//
}),
});
</script>
components/HelloWorld.vue
this component is what's responsible for all the junk on the page. I'll describe that later.components/AppBar.vue
최종 코드는 here에서 찾을 수 있으며 아래에서 전체 코드를 재현하고 있습니다.
<template>
<v-app>
<AppBar />
<v-main>
<v-container fluid>
<router-view />
</v-container>
</v-main>
<!-- <v-footer app>
</v-footer> -->
</v-app>
</template>
<script lang="ts">
import { Vue, Component } from 'vue-property-decorator';
import AppBar from '@/components/AppBar.vue'
@Component({ components: { AppBar } })
export default class AppView extends Vue {}
</script>
보시다시피, 이것은 이미 훨씬 깨끗합니다. 참고 구성 요소를 추가했지만 주석 처리했습니다. 나중에 추가하겠습니다.
라우터/index.ts
vue-router에서 제공하는 라우터 구성 요소는 URL에 따라 보기를 전환해 보겠습니다. 제공된 기본 경로는 /
홈 경로와 /about
구성 요소에 로드되는 views/About.vue
경로입니다. 우리는 필요하지 않기 때문에 이것도 삭제할 것입니다.
라우터의 원본 콘텐츠는 here입니다.
import Vue from 'vue'
import VueRouter, { RouteConfig } from 'vue-router'
import Home from '../views/Home.vue'
Vue.use(VueRouter)
const routes: Array<RouteConfig> = [
{
path: '/',
name: 'Home',
component: Home
},
{
path: '/about',
name: 'About',
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')
}
]
const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes
})
export default router
여기서 내가 만드는 유일한 변경 사항은 필요하지 않기 때문에 /about
경로를 주석 처리하는 것입니다. 나머지는 지금 그대로 두고 뷰를 더 추가하면 이 라우터에 추가하겠습니다. 코드는 here 입니다.
조회수/Home.vue
라우터 파일은 우리가 /
주소의 루트에 있을 때 Home
의 views/Home.vue
구성 요소가 App.vue
에 있는 곳에 로드되어야 한다고 말합니다. 상용구의 해당 파일에는 원본 Vue.jsboilerplate file가 포함되어 있으며 다음과 같습니다.
<template>
<div class="home">
<img alt="Vue logo" src="../assets/logo.png">
<HelloWorld msg="Welcome to Your Vue.js App"/>
</div>
</template>
<script>
// @ is an alias to /src
import HelloWorld from '@/components/HelloWorld.vue'
export default {
name: 'Home',
components: {
HelloWorld
}
}
</script>
다시 한 번 삭제하려는 구성 요소를 로드하려고 시도합니다. 나는 이것을 다음과 같이 대체합니다.
<template>
<v-container>
<Section>
<template v-slot:title>Welcome to CurateBot</template>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc faucibus nulla massa, sed porta dui pretium ut. Aenean vulputate laoreet dapibus. Vestibulum lacinia nibh at lectus semper pretium. Pellentesque semper ut ante eget finibus. Ut scelerisque velit neque. Ut porta ex orci, vitae eleifend ante pellentesque in.
</p>
</Section>
</v-container>
</template>
<script lang="ts">
import { Vue, Component } from 'vue-property-decorator';
import Section from '@/components/Section.vue'
@Component({ components: { Section } })
export default class HomeView extends Vue {}
</script>
나는 내 자신의 구성 요소(나중에 표시할 것임)를 정의하고 있으며 그 안에 섹션 제목을 위한 슬롯title
이 있으며 여기에 일부Lorem Ipsum를 추가했습니다.
구성요소/AppBar.vue
App.vue
파일 내부에서 자체 구성 요소 파일로 앱 바 구성 요소를 이동했습니다. 이렇게 하면 항목이 깨끗하고 구획화됩니다. 파일을 볼 수 있습니다here , 밴드 아래에서 재생합니다. 이 시점에서 거의 빈 구성 요소이며 거기에 및 자리 표시자만 있습니다.
<template>
<v-app-bar app color="primary" dark>
<v-btn text>Link</v-btn>
</v-app-bar>
</template>
<script lang="ts">
import { Vue, Component } from 'vue-property-decorator';
@Component
export default class AppBar extends Vue {}
</script>
구성 요소/Section.vue
마지막으로 내가 정의하는 새 구성 요소입니다. a를 기반으로 하지만 카드가 페이지 중앙에 오도록 여백에 대한 일부 설정이 있습니다(플렉스/그리드를 사용하는 것보다 단일 열 페이지 레이아웃에 대한 더 간단한 대안).
<template>
<v-card
class="my-4 mx-auto"
max-width="860"
>
<v-card-title class="primary white--text mb-5">
<slot name="title"></slot>
</v-card-title>
<v-card-text>
<slot></slot>
</v-card-text>
</v-card>
</template>
<script lang="ts">
import { Vue, Component } from 'vue-property-decorator';
@Component
export default class Section extends Vue {}
</script>
Home.vue
에서 볼 수 있듯이 이 구성 요소를 다른 콘텐츠를 삽입하여 재사용할 수 있도록 몇 가지가 정의됩니다.
최종 결과는 다음과 같습니다.
아주 최소한으로, 상용구에서 모든 추가 정크를 정리하여 새 콘텐츠를 받을 준비가 되었습니다!
Reference
이 문제에 관하여(CurateBot Devlog 2: 첫 번째 단계 - 상용구 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/meseta/curatebot-devlog-2-first-steps-cleaning-up-the-boilerplate-2h9m
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import Vue from 'vue'
import VueRouter, { RouteConfig } from 'vue-router'
import Home from '../views/Home.vue'
Vue.use(VueRouter)
const routes: Array<RouteConfig> = [
{
path: '/',
name: 'Home',
component: Home
},
{
path: '/about',
name: 'About',
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')
}
]
const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes
})
export default router
라우터 파일은 우리가
/
주소의 루트에 있을 때 Home
의 views/Home.vue
구성 요소가 App.vue
에 있는 곳에 로드되어야 한다고 말합니다. 상용구의 해당 파일에는 원본 Vue.jsboilerplate file가 포함되어 있으며 다음과 같습니다.<template>
<div class="home">
<img alt="Vue logo" src="../assets/logo.png">
<HelloWorld msg="Welcome to Your Vue.js App"/>
</div>
</template>
<script>
// @ is an alias to /src
import HelloWorld from '@/components/HelloWorld.vue'
export default {
name: 'Home',
components: {
HelloWorld
}
}
</script>
다시 한 번 삭제하려는 구성 요소를 로드하려고 시도합니다. 나는 이것을 다음과 같이 대체합니다.
<template>
<v-container>
<Section>
<template v-slot:title>Welcome to CurateBot</template>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc faucibus nulla massa, sed porta dui pretium ut. Aenean vulputate laoreet dapibus. Vestibulum lacinia nibh at lectus semper pretium. Pellentesque semper ut ante eget finibus. Ut scelerisque velit neque. Ut porta ex orci, vitae eleifend ante pellentesque in.
</p>
</Section>
</v-container>
</template>
<script lang="ts">
import { Vue, Component } from 'vue-property-decorator';
import Section from '@/components/Section.vue'
@Component({ components: { Section } })
export default class HomeView extends Vue {}
</script>
나는 내 자신의 구성 요소(나중에 표시할 것임)를 정의하고 있으며 그 안에 섹션 제목을 위한 슬롯
title
이 있으며 여기에 일부Lorem Ipsum를 추가했습니다.구성요소/AppBar.vue
App.vue
파일 내부에서 자체 구성 요소 파일로 앱 바 구성 요소를 이동했습니다. 이렇게 하면 항목이 깨끗하고 구획화됩니다. 파일을 볼 수 있습니다here , 밴드 아래에서 재생합니다. 이 시점에서 거의 빈 구성 요소이며 거기에 및 자리 표시자만 있습니다.
<template>
<v-app-bar app color="primary" dark>
<v-btn text>Link</v-btn>
</v-app-bar>
</template>
<script lang="ts">
import { Vue, Component } from 'vue-property-decorator';
@Component
export default class AppBar extends Vue {}
</script>
구성 요소/Section.vue
마지막으로 내가 정의하는 새 구성 요소입니다. a를 기반으로 하지만 카드가 페이지 중앙에 오도록 여백에 대한 일부 설정이 있습니다(플렉스/그리드를 사용하는 것보다 단일 열 페이지 레이아웃에 대한 더 간단한 대안).
<template>
<v-card
class="my-4 mx-auto"
max-width="860"
>
<v-card-title class="primary white--text mb-5">
<slot name="title"></slot>
</v-card-title>
<v-card-text>
<slot></slot>
</v-card-text>
</v-card>
</template>
<script lang="ts">
import { Vue, Component } from 'vue-property-decorator';
@Component
export default class Section extends Vue {}
</script>
Home.vue
에서 볼 수 있듯이 이 구성 요소를 다른 콘텐츠를 삽입하여 재사용할 수 있도록 몇 가지가 정의됩니다.
최종 결과는 다음과 같습니다.
아주 최소한으로, 상용구에서 모든 추가 정크를 정리하여 새 콘텐츠를 받을 준비가 되었습니다!
Reference
이 문제에 관하여(CurateBot Devlog 2: 첫 번째 단계 - 상용구 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/meseta/curatebot-devlog-2-first-steps-cleaning-up-the-boilerplate-2h9m
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<template>
<v-app-bar app color="primary" dark>
<v-btn text>Link</v-btn>
</v-app-bar>
</template>
<script lang="ts">
import { Vue, Component } from 'vue-property-decorator';
@Component
export default class AppBar extends Vue {}
</script>
마지막으로 내가 정의하는 새 구성 요소입니다. a를 기반으로 하지만 카드가 페이지 중앙에 오도록 여백에 대한 일부 설정이 있습니다(플렉스/그리드를 사용하는 것보다 단일 열 페이지 레이아웃에 대한 더 간단한 대안).
<template>
<v-card
class="my-4 mx-auto"
max-width="860"
>
<v-card-title class="primary white--text mb-5">
<slot name="title"></slot>
</v-card-title>
<v-card-text>
<slot></slot>
</v-card-text>
</v-card>
</template>
<script lang="ts">
import { Vue, Component } from 'vue-property-decorator';
@Component
export default class Section extends Vue {}
</script>
Home.vue
에서 볼 수 있듯이 이 구성 요소를 다른 콘텐츠를 삽입하여 재사용할 수 있도록 몇 가지가 정의됩니다.최종 결과는 다음과 같습니다.
아주 최소한으로, 상용구에서 모든 추가 정크를 정리하여 새 콘텐츠를 받을 준비가 되었습니다!
Reference
이 문제에 관하여(CurateBot Devlog 2: 첫 번째 단계 - 상용구 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/meseta/curatebot-devlog-2-first-steps-cleaning-up-the-boilerplate-2h9m텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)