VueJs + Element로부터의 Webpack laze load 모듈UI
요소의 특정 요소를 느리게 로드하고 싶다.Vue 구성 요소의 UI입니다.
이거 해봤어요.
import { Tree } from /* webpackChunkName : "element-ui" */ 'element-ui';
Vue.component(Tree.name, Tree);
Vue.use(Tree);
그리고 이것은:
{
components: {
'el-tree': () => import(/* webpackChunkName : "element-ui" */ "element-ui").then(({Tree}) => Tree)
}
}
하지만 두 경우 모두element-ui.js
청크 파일이 생성되지 않고 완전한 라이브러리가 에 삽입됩니다.main.js
대신 파일을 제출하세요.
요소의 사용된 요소만 동적으로 가져오려면 어떻게 해야 합니까?UI(라이브러리 전체가 아님)
왜?
import('element-ui').then(({Tree}) => Tree)
요소 전체를 묶다UI 라이브러리?
그element-ui
라이브러리는 공통입니다.JS 모듈. 트리가 webpack-common-shake
흔들리지 않습니다(존재하지만 주행거리가 다를 수 있습니다).
요소에서 개별 요소만 가져올 수 있습니까?UI?
요소UI 문서에서는 (Element에서도 작성)를 사용할 것을 권장합니다.UI)를 사용하여 사용된 요소만 가져옵니다.사용방법은 다음과 같이 문서화되어 있습니다.
설치하다
babel-plugin-component
:npm install babel-plugin-component -D
편집
.babelrc
내용:{ "presets": [["es2015", { "modules": false }]], "plugins": [ [ "component", { "libraryName": "element-ui", "styleLibraryName": "theme-chalk" } ] ] }
원하는 요소를 정적으로 가져와 Vue 구성 요소로 초기화합니다.
import { Button } from 'element-ui'; Vue.component(Button.name, Button);
개별 요소를 동적으로 가져올 수 있습니까?
네, 가능합니다.
첫째, 이 방법을 이해하는 것이 편리합니다.babel-plugin-component
동작합니다.플러그인은 효과적으로 변환합니다.
import { __ComponentName__ } from 'element-ui';
Vue.component('x-foo', __ComponentName__);
다음과 같이 입력합니다.
import __ComponentName__ from 'element-ui/lib/__component-name__';
import 'element-ui/lib/__styleLibraryName__/__component-name__.css';
Vue.component('x-foo', __ComponentName__);
주의:
__styleLibraryName__
Babel 사전 설정 옵션으로 구성됩니다..babelrc
.- 변환에는 컴포넌트 이름 포맷이 포함됩니다.(
__ComponentName__
케밥 케이스 ( )__component-name__
예를 들어,Button
된다button
; 및DatePicker
된다date-picker
. 기존 요소를 제거해야 합니다.UI 가져오기: "온 디맨드" 가져오기를 방지합니다.
// import ElementUI from 'element-ui'; // REMOVE // import 'element-ui/lib/theme-chalk/index.css'; // REMOVE
따라서 이 지식을 사용하여 다음과 같은 특정 요소를 동적으로 Import할 수 있습니다.
// main.js
import 'element-ui/lib/__styleLibraryName__/__component-name__.css';
Vue.component('x-foo', () => import(/* webpackChunkName: "x-foo" */ 'element-ui/lib/__component-name__'));
또는 다음 중 하나를 선택합니다.
<!-- MyComponent.vue -->
<script>
import 'element-ui/lib/__styleLibraryName__/__component-name__.css';
export default {
components: {
'x-foo': () => import(/* webpackChunkName: "x-foo" */ 'element-ui/lib/__component-name__'),
}
}
</script>
예를 들어 가져오려면Button
초크 테마:
<!-- MyComponent.vue -->
<script>
import 'element-ui/lib/theme-chalk/button.css';
export default {
components: {
'el-button': () => import(/* webpackChunkName: "element-button" */ 'element-ui/lib/button'),
}
}
</script>
그러나 이러한 요소는 비교적 작기 때문에 컨테이너 청크에 대한 네트워크 요구의 오버헤드와 요소 청크를 고려하면 느긋하게 로드할 가치가 없을 수 있습니다.반면, 요소가 조건부로 제공되고 그 조건이 거의 참이 되지 않는다면 절감액은 가치가 있을 수 있다.
언급URL : https://stackoverflow.com/questions/52104217/vuejs-webpack-lazyload-modules-from-elementui
'programing' 카테고리의 다른 글
문자열에 특정 텍스트가 있는지 확인합니다. (0) | 2022.12.27 |
---|---|
Vue.js에서는 컴포넌트를 Import한 후 내보낼 필요가 있는 이유는 무엇입니까? (0) | 2022.12.27 |
pytest 'ImportError: YadaYadaYada라는 이름의 모듈이 없습니다'의 PATH 문제 (0) | 2022.12.27 |
Python에서 [] 연산자를 재정의하는 방법 (0) | 2022.12.27 |
MariaDB 10.2에서 MariaDB 10.3으로 업그레이드 // 도커 컴포지트 (0) | 2022.12.27 |