반응형
Laravel 5.3에서 Vue.js 2.0 구성 요소에서 외부 html 템플릿을 사용하는 방법
나는 Vue.js 2.0에 대한 기본 구성의 새로운 설치인 기본 Laravel 5.3 설정을 사용하고 있다.
Laravel 5.1과 Vue.js 1.x를 사용하여 다음과 같은 구성 요소와 사용되는 구성 요소를 쉽게 정의할 수 있었다.browserify
편찬하기 위해
Vue.component('test-component', require('./test-component');
/* test-component.js */
export default{
template:require('./test-component.template.html')
}
/* test-component.template.html */
<div class="test-component">
<h1> Test Component <h1>
</div>
그러나 Vue 2의 경우 기본값은webpack
(하지만)browserify
또한 사용 가능하지만 작동시킬 수 없고webpack
더 나은 것 같다.하지만 구성이 제대로 되지 않는다.
여러 가지 구성을 시도해 보았지만, 마침내 이것을 내 입에 담았다.js 파일
const elixir = require('laravel-elixir');
require('laravel-elixir-vue-2');
var config = {
module:{
loaders:[
{
test: /\.html$/,
loader: 'vue-loader'
}
]
}
};
elixir(mix => {
mix.sass('app.scss')
.webpack('app.js',null, null, config);
});
이제 컴파일하는 동안 오류가 발생하지 않음gulp webpack
그러나 브라우저에서 페이지를 보려고 하면 구성요소가 표시되지 않고 콘솔에 오류/경고가 있음
vue.js?3de6:513[Vue warn]: invalid template option:[object Object]
(found in component <test>)
vue.js?3de6:4085Uncaught TypeError: Cannot read property 'child' of null(…)
내 app.js 기본 항목 파일(Laravel에서 제공하는 기본값)
require('./bootstrap');
Vue.component('test-component', require('./components/test-component'));
const app = new Vue({
//el: '#app',
}).$mount('#app');
제가 무엇을 빠뜨리고 있나요?어떤 조언이라도 고마워할 것이다.
당신은 사용해야만 한다.
html-loader
대신에vue-loader
.npm install html-loader --save-dev
당신의
gulpfile.js
(변경해야 함)loader
):const config = { module: { loaders:[{ test: /\.html$/, loader: 'html' }] } }; elixir((mix) => { mix.sass('app.scss') .webpack('app.js', null, null, config); });
당신의
test-component.js
(변화는 없고, 가도 좋다):export default { template: require('./test-component.template.html') }
당신의
test-component-template.html
: (변화는 없고, 가도 좋다)<div class="test-component"> <h1>Test Component Goes Here</h1> </div>
중요
구성 요소를 정의하는 방법:
기본값 사용
Vue.component('test-component', require('./test-component').default);
또는 ES2015를 간단히 사용
import
import TestComponent from './test-component'; Vue.component('test-component', TestComponent);
이것을 당신의 것으로 해 보십시오.gulp
파일:
const elixir = require('laravel-elixir');
require('laravel-elixir-vue-2');
elixir(mix => {
mix.webpack('app.js');
});
다음과 같이 구성 요소를 가져오십시오.
import Test from './Components/Test.vue';
Vue.component('test', Test);
반응형
'programing' 카테고리의 다른 글
Laravel Passport 미들웨어 보호 경로 "인증되지 않음" 문제 (0) | 2022.05.20 |
---|---|
Vue 클로징 구성 요소 반환 시 프로펠러가 직접 변질되지 않도록 주의 (0) | 2022.05.19 |
한 Vue 구성 요소에서 다른 Vue 구성 요소로 계산된 매개 변수를 전달하는 방법 (0) | 2022.05.19 |
부트스트랩-vue 입력 번호 Vue.js의 최대 길이 (0) | 2022.05.19 |
Vuejs - 인스턴스에 정의되지 않은 계산된 속성 (0) | 2022.05.19 |