Typescript 을 사용 하여 Vue 구성 요 소 를 패키지 합 니 다.
8189 단어 Typescript포장 하 다Vue 구성 요소
vue create ts_vue_btn
여 기 는vue CLI3
사용자 정의 선택 서 비 스 를 사 용 했 고 저 는ts、stylus
등 도 구 를 선 택 했 습 니 다.그리고 프로젝트 를 만 든 후에 프로젝트 에 들 어 갑 니 다.Vs code 편집기 에 단축 명령code .
을 사용 하여 들 어 갑 니 다.code .
없 으 면 편집기 의 bin 파일 디 렉 터 리 주 소 를 환경 변수의path
에 넣 어야 합 니 다.그리고 편집기 에 들 어간 후에 설정 작업 영역 에 들 어가 서 인 자 를 마음대로 설정 합 니 다.예 를 들 어 글꼴 설정 을 추천 하고 누 르 십시오.여 기 는.vscode
폴 더 를 만 들 기 위해 서 입 니 다.안에json
파일 이 있 습 니 다.우리 가 프로젝트 를 개발 할 때 프로젝트 폴 더 안의 파일 이 매우 많 고 시각 에 영향 을 줄 수 있다.그러면 이 파일 은 어떤 파일 을 숨 기 는 지 설정 하 는 것 입 니 다.삭제 하 는 것 이 아니 라 숨 기 는 것 입 니 다!다음은 제 가 직접 쓴 것 입 니 다.Vue cli 3 에서 생 성 된 항목 에 숨겨 야 할 파일 인자 입 니 다.
{
"files.exclude": {
"**/.git": true,
"**/.svn": true,
"**/.hg": true,
"**/CVS": true,
"**/.DS_Store": true,
"**/README.md": true,
"**/node_modules":true,
"**/shims-tsx.d.ts": true,
"**/shims-vue.d.ts": true,
"**/.browserslistrc": true,
".eslintrc.js": true,
"babel.config.js": true,
"package-lock.json": true,
".gitignore": true,
"tsconfig.json": true
}
}
다음은 보 이 는 파일 디 렉 터 리 입 니 다.중요 하지 않 은 파일 과 폴 더 를 숨 기거 나 삭제 한 후에 보 았 습 니 다.파일 판독(위 에서 아래로):
폴 더 또는 파일
하위 폴 더 나 파일 포함
속뜻
.vscode
settings.json
파일 설정 숨 기기
public
index.html、favicon.ico
정적 파일 저장 소
src
components 폴 더(구성 요소 저장),App.vue,Home.vue,main.js
항목 주요 폴 더
package.json
없다
프로젝트 의존 매개 변수 등
2.개발 실천
다음 그림 은 만 들 프로젝트 파일 디 렉 터 리 입 니 다.Vue 단추 구성 요 소 를 개발 합 니 다.
아래 그림 에서 보 듯 이 이것 이 바로 우리 가 개발 해 야 할 구성 요소 이다.
편집 시작:
1、App.vue
<template>
<div id="app">
<Home></Home>
</div>
</template>
<script lang="ts">
import { Component, Vue } from 'vue-property-decorator';//
import Home from "@/Home.vue"; //
// Component , , , components ,
@Component({
components:{
Home
}
})
export default class App extends Vue {}
</script>
<style lang="stylus">
</style>
2、UIBtn.vue
<template>
<!-- v-on="$listeners" , , , $emit(), -->
<button
class="ui-btn"
@click="onBtnclick('success!')"
:class="{
'ui-btn-xsmall':xsmall,
'ui-btn-small':small,
'ui-btn-large':large,
'ui-btn-xlarge':xlarge
}"
>
<slot>Button</slot>
</button>
</template>
<script lang="ts">
import { Component, Vue, Emit, Prop } from "vue-property-decorator"; //
@Component
export default class UIBtn extends Vue {
@Prop(Boolean) private xsmall: boolean | undefined;
@Prop(Boolean) private small: boolean | undefined;
@Prop(Boolean) private large: boolean | undefined;
@Prop(Boolean) private xlarge: boolean | undefined;
// eslint-disable-next-line @typescript-eslint/no-empty-function
@Emit("click") private emitclick(x: string) {}
private mounted() {
console.log(this.large);
}
private onBtnclick(x: string) {
this.emitclick(x);
}
}
</script>
<style scoped lang="stylus" >
resize(a, b, c)
padding a b
font-size c
.ui-btn
resize(12px, 20px, 14px)
border 0 solid #000
border-radius 4px
outline none
font-weight 500;
letter-spacing 0.09em
background-color #409eff
color #fff
cursor pointer
user-select none
&:hover
filter brightness(120%)
&:active
filter brightness(80%)
&.ui-btn-xsmall
resize(5px, 15px, 14px)
&.ui-btn-small
resize(8px, 18px, 14px)
&.ui-btn-large
resize(14px, 22px, 14px)
&.ui-btn-xlarge
resize(16px, 24px, 14px)
</style>
3、Home.vue
<template>
<div class="home-con">
<div class="btn-group">
<UIBtn class="btn" @click="resize('xsmall')"> </UIBtn>
<UIBtn class="btn" @click="resize('small')"> </UIBtn>
<UIBtn class="btn" @click="resize('normal')"> </UIBtn>
<UIBtn class="btn" @click="resize('large')"> </UIBtn>
<UIBtn class="btn" @click="resize('xlarge')"> </UIBtn>
</div>
<div class="btn-con">
<UIBtn @click='onClick'
:xlarge="xlarge"
:large="large"
:small="small"
:xsmall="xsmall"
> </UIBtn>
</div>
<div class="btn-pro">
<UIBtn large > </UIBtn>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from 'vue-property-decorator'; //
import UIBtn from '@/components/UIBtn.vue';
@Component({
components:{
UIBtn
}
})
export default class Home extends Vue {
// eslint-disable-next-line @typescript-eslint/no-inferrable-types
private xlarge: boolean = false;
// eslint-disable-next-line @typescript-eslint/no-inferrable-types
private large: boolean = false;
// eslint-disable-next-line @typescript-eslint/no-inferrable-types
private xsmall: boolean = false;
// eslint-disable-next-line @typescript-eslint/no-inferrable-types
private small: boolean = false;
private resize (name: string){
console.log(name)
switch (name) {
case 'xsmall':
this.xsmall=true;
this.small=false;
this.large=false;
this.xlarge=false;
break;
case 'small':
this.xsmall=false;
this.small=true;
this.large=false;
this.xlarge=false;
break;
case 'normal':
this.xsmall=false;
this.small=false;
this.large=false;
this.xlarge=false;
break;
case 'large':
this.xsmall=false;
this.small=false;
this.large=true;
this.xlarge=false;
break;
case 'xlarge':
this.xsmall=false;
this.small=false;
this.large=false;
this.xlarge=true;
break;
}
}
private onClick(x: string) {
console.log(x)
}
}
</script>
<style lang="stylus" scoped>
.btn-group
margin 50px 0
.btn
margin 6px
.btn-pro
margin-top 50px
</style>
이 글 은 Typescript 을 사용 하여 Vue 구성 요 소 를 패키지 하 는 것 에 관 한 글 을 소개 합 니 다.더 많은 Typescript 패키지 Vue 구성 요소 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 을 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python 함수 설명 (1)의미: 함 수 를 설명 할 때 괄호 에 들 어 갈 매개 변 수 를 정의 하고 함 수 를 호출 할 때 매개 변 수 를 입력 해 야 합 니 다. 함수 명 을 통 해 이 함 수 를 호출 할 때 인자 cook ('훠 궈')...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.