Vue 는 전역 구성 요 소 를 만 들 고 Vue.use()불 러 오 는 방식 을 사용 합 니 다.
<template>
<div class="app-NewsInfo">
<h3>{{info.title}}</h3>
<!-- 。 -->
<comment :id="id"></comment>
</div>
</template>
<script>
import comment from "../sub/comment.vue";
export default {
data() {
return {
info: {},
id: this.$route.query.id
};
},
methods: {},
components: {
comment
},
</script>
만약 어떤 구성 요소 가 자주 복용 된다 면,매번 새로운 구성 요소 에서 인용 할 때마다 한 번 씩 가 져 오지 않 겠 는가?예.이 경우 구성 요 소 를 전역 구성 요소 로 밀봉 할 수 있 습 니 다.한 번 가 져 오 면 전역 에서 사용 할 수 있 습 니 다.흔 치 않 지만 정리 하 자.1.우선 폴 더 loading 만 들 기
전역 참조 가 필요 한 구성 요 소 를 저장 하고 설정 파일 을 저장 합 니 다.
2.loading.vue 구성 요 소 를 만 듭 니 다.
이 구성 요소 에는 구성 요소 의 기본 구 조 를 제외 하고 다른 내용 이 없습니다.사용자 정의 구성 요 소 를 불 러 오 는 역할 을 합 니 다.마지막 으로 loading 구성 요 소 를 전역 Vue 에 불 러 오 면 모든 사용자 정의 구성 요 소 를 한꺼번에 불 러 오 는 것 이 편리 합 니 다.
<template>
<div class="loading"></div>
</template>
<script>
export default {
data() {
return {};
},
methods: {}
};
</script>
<style scoped>
</style>
3.사용자 정의 구성 요소 만 들 기여기 에는 간단하게 포 장 된 mint-ui 윤파 도 를 예 로 들 수 있다.
<template>
<div class="app-turns">
<mt-swipe :auto="4000">
<mt-swipe-item v-for="(item,i) of list" :key="i">
<img :src="item.img_url" @click="detail" :data-id="item.id">
</mt-swipe-item>
</mt-swipe>
</div>
</template>
<script>
export default {
name: "navbar",
props: ["list"], //
data() {
return {
};
},
methods: {
detail(e) {
var id = e.target.dataset.id;
var url = `/GoodsInfo/${id}`;
this.$router.push(url);
}
},
created() {}
};
</script>
<style scoped>
.mint-swipe {
height: 150px;
}
.mint-swipe img {
width: 100%;
}
</style>
4.index.js 를 만 들 고 모든 사용자 정의 구성 요 소 를 내 보 냅 니 다.
import turns from './turns.vue'
const loading = {
install: function (Vue) {
Vue.component('turns', turns)
}
}
export default loading;
사실 여기까지 구성 요소 패 키 징 이 끝 났 습 니 다.어떻게 사용 하 는 지 보 여 드 리 겠 습 니 다.5.main.js 에서 loading 구성 요 소 를 가 져 오고 사용 합 니 다.
import loading from './lib/loading';
Vue.use(loading);
이렇게 하면 구성 요 소 를 전역 적 으로 인용 하 는 데 성 공 했 습 니 다!
6.사용 할 곳 에 서 는 구성 요소 이름 을 직접 사용 하면 됩 니 다.
<template>
<div class="app-home">
<turns :list="list"></turns>
</div>
</template>
이런 방식 을 통 해 구성 요소 의 전역 인용 을 실현 할 수 있다.이러한 장점 은 재 활용 성 이 매우 높 은 구성 요소 에 대해 매번 가 져 오 는 번 거 로 움 을 줄 이 는 것 이다.
단점 은 구성 요소 의 도입 과 등록 을 직관 적 으로 볼 수 없고 잘 모 르 는 사람 에 게 는 구성 요소 이름 의 의 미 를 알 아 볼 수 없다 는 것 이다.
사실 공식 문서 에서 해결 방안 이 언급 되 었 다.
https://cn.vuejs.org/v2/guide/components-registration.html#기본 구성 요소 의 자동화 전역 등록
기본 구성 요소 의 자동화 전역 등록
아마도 많은 구성 요소 들 이 입력 상자 나 단추 같은 요소 만 감 싸 고 있 을 것 입 니 다.상대 적 으로 통용 되 는 것 입 니 다.우 리 는 때때로 그것들 을 기본 구성 요소 라 고 부 르 는데,그것들 은 각 구성 요소 에서 자주 사용 된다.
그래서 많은 구성 요소 에 기본 구성 요 소 를 포함 하 는 긴 목록 이 있 습 니 다.
import BaseButton from ‘./BaseButton.vue' import BaseIcon from
‘./BaseIcon.vue' import BaseInput from ‘./BaseInput.vue'
export default { components: {
BaseButton,
BaseIcon,
BaseInput } }
템 플 릿 의 일부분 에 만 사 용 됩 니 다:다행히 웹 팩(또는 내부 에 웹 팩 을 사용 한 Vue CLI 3+)을 사용 했다 면 require.context 를 사용 하여 매우 통용 되 는 기본 구성 요소 만 전역 적 으로 등록 할 수 있 습 니 다.입구 파일(예 를 들 어 src/main.js)에서 기본 구성 요 소 를 전역 적 으로 가 져 올 수 있 는 예제 코드 가 있 습 니 다.
import Vue from ‘vue' import upperFirst from ‘lodash/upperFirst'
import camelCase from ‘lodash/camelCase'
const requireComponent = require.context( //
‘./components', // false, //
/Base[A-Z]\w+.(vue|js)$/ )
requireComponent.keys().forEach(fileName => { // const
componentConfig = requireComponent(fileName)
// PascalCase const componentName = upperFirst(
camelCase(
// ./
fileName.replace(/^./(.*).\w+$/, ‘$1')
) )
// Vue.component(
componentName,
// export default ,
// .default,
// 。
componentConfig.default || componentConfig ) })
추가 지식:vue 구성 요소 등록 Vue.extend Vue.component Vue.use 사용 및 구성 요소 내장긴 말 안 할 게 요.그냥 코드 보 세 요~
/**
* vue.extend
* Vue , “ ”。 。
* :
*/
const Profile = Vue.extend({
template: '<p>{{firstName}} {{lastName}} aka {{alias}}</p>',
data: function () {
return {
firstName: 'Walter',
lastName: 'White',
alias: 'Heisenberg'
}
}
})
// Profile , 。
new Profile().$mount('#opp')
let navbar = {
template: `<div class='nav'>
<input type="text" placeholder=" "/>
</div>`,
data:()=>{
return {
}
},
mounted() {
console.log(this.$parent)
}
};
const MyPlugin = {
install:(vue, arguments)=>{
console.log(arguments);
vue.component('navbar', navbar);
}
}
Vue.use(MyPlugin, {a:1, b:2}); //
// logo
Vue.component("logo", {
template: `<div class='logo'>
<img v-bind:src="logoSrc">
</div>`,
inject: ['logoSrc'],
data:()=>{
return {
}
},
mounted() {
console.log(this.$parent)
}
})
// header provie inject
Vue.component("buttoncounter", {
template: `<div class='header'>
<logo></logo>
{{header}}
</div>`,
provide:{
logoSrc:'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1582433251882&di=de459decf2e157552b97a4879ae4135d&imgtype=0&src=http%3A%2F%2Fwww.suntop168.com%2Fblog%2Fzb_users%2Fupload%2F2014%2F2%2Fadf89182.jpg'
},
data:()=>{
return {
header:' '
}
},
mounted() {
console.log(this.$parent)
}
});
// vue
let vm = new Vue({
el:"#app",
data:{
name: 'Marry'
},
mounted(){
console.log('vue ')
}
})
console.log(vm);
이 Vue 는 전역 구성 요 소 를 만 들 고 Vue.use()불 러 오 는 방식 을 사용 하 는 것 이 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 가 되 고 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Vue Render 함수로 DOM 노드 코드 인스턴스 만들기render에서createElement 함수를 사용하여 DOM 노드를 만드는 것은 직관적이지 않지만 일부 독립 구성 요소의 디자인에서 특수한 수요를 충족시킬 수 있습니다.간단한 렌더링 예는 다음과 같습니다. 또한 v...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.