什么是单点组件?我应该使用它吗?
What is a-la-carte components? Should i use it?
当使用 vue-cli 开始一个新项目时,它会询问几个问题来自定义设置。一般是项目名称,描述,是否使用eslint做linting,karma和mocha做测试等等。这次它问我
? Use a-la-carte components?
我在 vue-cli 文档中进行了搜索,但没有找到任何内容。
那么谁能告诉我什么是 "a-la-carte components" 以及我是否应该使用它?
À la carte is an English language loan phrase meaning "according
to the menu." It refers to "food that can be ordered as separate
items, rather than part of a set meal."
因此,如果您使用单点组件,则意味着您只包含需要(想要)使用的组件,而不是获取所有组件
Vuetify allows you to easily import only what you need, drastically lowering its footprint.
import {
Vuetify,
VApp,
VNavigationDrawer,
VFooter,
VList,
VBtn
} from 'vuetify'
Vue.use(Vuetify, {
components: {
VApp,
VNavigationDrawer,
VFooter,
VList,
VBtn
}
})
编辑 2018/11/14:
因为 vuetify 1.3.0,
vuetify-loader
(包含在 vuetify cli 安装中)
自动处理您的应用程序的单点需求,这意味着它会在您使用它们时自动导入所有 Vuetify 组件。
首先,您没有在文档中找到该选项,因为它实际上是一个 vuetify plugin 选项。启用 "a-la-carte" 组件后,文件 /plugins/vuetify.js
应包含:
import Vue from 'vue'
import {
Vuetify,
VApp,
//other vuetify components
} from 'vuetify'
Vue.use(Vuetify, {
components: {
VApp,
//other vuetify components
}
})
和你的 babel.config.js 文件应该被更改以防止使用 "transform-imports" 插件进行完整的 vuetify 导入。
其次,在 vuetify v1.3.0-alpha.0 之前,如果您想最小化 webpack 供应商包,"a la carte" 很有用,但是必须有选择地导入 vuetify 组件非常乏味,尤其是在开发过程中.另外,自 "a la carte components".
引入以来,Webpack 已经发展了很多
出于这些原因,从 vuetify 1.3.0-alpha.0 开始,开发团队正在研究一种通过使用 Webpack 4 tree shaking features (AKA dead code elimination) through vuetify-loader 完全消除对单点组件的需求的方法。这些功能预计将添加到 vuetify 官方插件中,以获得自动 "a la carte components".
因此,要解决您的第二个问题(如果您应该使用单点菜单),答案是不,不再。
以下是您可以自己设置 vue-cli 3 项目以使用此功能的方法:
- 安装 vuetify-loader 作为开发依赖:
npm install -D vuetify-loader
- 从
'vuetify/lib'
而不是 vuetify.js 文件中的 'vuetify'
导入 vuetify。
代码:
import Vue from 'vue'
import Vuetify from 'vuetify/lib'
Vue.use(Vuetify)
- 在您的
vue.config.js
文件中将 vuetify-loader 注册为 webpack 插件(如果它不存在,请在项目的根目录中创建该文件)。
代码:
const VuetifyLoaderPlugin = require('vuetify-loader/lib/plugin')
module.exports = {
configureWebpack: {
plugins: [
new VuetifyLoaderPlugin(),
]
}
// ...other vue-cli plugin options...
}
如果您已经在使用 a-la-carte,请确保从您的 babel 插件列表中删除 "transform-imports"(通常在 babel.config.js 中)
请记住,tree shaking 设置为仅在生产模式下工作,因此如果您在 npm run build
命令中使用标志 --watch
或 --mode development
, 你不应该期望你的包大小会减少
希望对你有帮助
当使用 vue-cli 开始一个新项目时,它会询问几个问题来自定义设置。一般是项目名称,描述,是否使用eslint做linting,karma和mocha做测试等等。这次它问我
? Use a-la-carte components?
我在 vue-cli 文档中进行了搜索,但没有找到任何内容。 那么谁能告诉我什么是 "a-la-carte components" 以及我是否应该使用它?
À la carte is an English language loan phrase meaning "according to the menu." It refers to "food that can be ordered as separate items, rather than part of a set meal."
因此,如果您使用单点组件,则意味着您只包含需要(想要)使用的组件,而不是获取所有组件
Vuetify allows you to easily import only what you need, drastically lowering its footprint.
import {
Vuetify,
VApp,
VNavigationDrawer,
VFooter,
VList,
VBtn
} from 'vuetify'
Vue.use(Vuetify, {
components: {
VApp,
VNavigationDrawer,
VFooter,
VList,
VBtn
}
})
编辑 2018/11/14:
因为 vuetify 1.3.0,
vuetify-loader
(包含在 vuetify cli 安装中)
自动处理您的应用程序的单点需求,这意味着它会在您使用它们时自动导入所有 Vuetify 组件。
首先,您没有在文档中找到该选项,因为它实际上是一个 vuetify plugin 选项。启用 "a-la-carte" 组件后,文件 /plugins/vuetify.js
应包含:
import Vue from 'vue'
import {
Vuetify,
VApp,
//other vuetify components
} from 'vuetify'
Vue.use(Vuetify, {
components: {
VApp,
//other vuetify components
}
})
和你的 babel.config.js 文件应该被更改以防止使用 "transform-imports" 插件进行完整的 vuetify 导入。
其次,在 vuetify v1.3.0-alpha.0 之前,如果您想最小化 webpack 供应商包,"a la carte" 很有用,但是必须有选择地导入 vuetify 组件非常乏味,尤其是在开发过程中.另外,自 "a la carte components".
引入以来,Webpack 已经发展了很多出于这些原因,从 vuetify 1.3.0-alpha.0 开始,开发团队正在研究一种通过使用 Webpack 4 tree shaking features (AKA dead code elimination) through vuetify-loader 完全消除对单点组件的需求的方法。这些功能预计将添加到 vuetify 官方插件中,以获得自动 "a la carte components".
因此,要解决您的第二个问题(如果您应该使用单点菜单),答案是不,不再。 以下是您可以自己设置 vue-cli 3 项目以使用此功能的方法:
- 安装 vuetify-loader 作为开发依赖:
npm install -D vuetify-loader
- 从
'vuetify/lib'
而不是 vuetify.js 文件中的'vuetify'
导入 vuetify。
代码:
import Vue from 'vue'
import Vuetify from 'vuetify/lib'
Vue.use(Vuetify)
- 在您的
vue.config.js
文件中将 vuetify-loader 注册为 webpack 插件(如果它不存在,请在项目的根目录中创建该文件)。
代码:
const VuetifyLoaderPlugin = require('vuetify-loader/lib/plugin')
module.exports = {
configureWebpack: {
plugins: [
new VuetifyLoaderPlugin(),
]
}
// ...other vue-cli plugin options...
}
如果您已经在使用 a-la-carte,请确保从您的 babel 插件列表中删除 "transform-imports"(通常在 babel.config.js 中)
请记住,tree shaking 设置为仅在生产模式下工作,因此如果您在
npm run build
命令中使用标志--watch
或--mode development
, 你不应该期望你的包大小会减少
希望对你有帮助