element-ui引入方式、自定义主题

1. element-ui组件引入方式:

1)完整引入

在 main.js 中写入以下内容:

import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';//引入全部的样式
Vue.use(ElementUI);
2)按需引入 借助插件,无需再引入'element-ui/lib/theme-chalk/index.css'文件

借助 babel-plugin-component,我们可以只引入需要的组件,以达到减小项目体积的目的。
首先,安装 babel-plugin-component:

npm install babel-plugin-component -D

然后,将 .babelrc 修改为:

  "presets": [["es2015", { "modules": false }]],
  "plugins": [
    [
      "component",
      {
        "libraryName": "element-ui",
        "styleLibraryName": "theme-chalk"
      }
    ]
  ]
}

接下来,如果你只希望引入部分组件,比如 Button 和 Select,那么需要在 main.js 中写入以下内容:

import { Button, Select } from 'element-ui';
Vue.component(Button.name, Button);
Vue.component(Select.name, Select);

2.自定义主题 前三种方式不支持按需引入样式,第四种配合插件可以按需引入

1)主题编辑器, 使用在线主题编辑器,定制 Element 所有全局和组件的 Design Tokens,下载使用
2)仅替换主题色 ,使用在线主题生成工具 ,下载使用
3)只在项目中改变 SCSS 变量

新建一个样式文件,例如element-variables.scss,写入以下内容:

/* 改变主题色变量 */
$--color-primary: teal;

/* 改变 icon 字体路径变量,必需 */
$--font-path: '~element-ui/lib/theme-chalk/fonts';

@import "~element-ui/packages/theme-chalk/src/index"; //包含全部的样式scss文件

之后,在项目的入口文件中,直接引入以上样式文件即可(无需引入 Element 编译好的 CSS 文件):

import Vue from 'vue'
import Element from 'element-ui'
import './element-variables.scss'
Vue.use(Element)
4)命令行主题工具
1.安装工具:
npm i element-theme -g
npm i element-theme-chalk -D  //安装白垩主题
2.初始化变量文件

如上是全局安装可以在命令行里通过 et 调用工具,如果安装在当前目录下,需要通过 node_modules/.bin/et 访问到命令。执行 -i 初始化变量文件。默认输出到 element-variables.scss,当然你可以传参数指定文件输出目录。

et -i
✔ Generator variables file

3.修改变量

直接编辑 element-variables.scss 文件,例如修改主题色为红色。

$--color-primary: red;

4. 编译主题 默认编译的主题输出到 ./theme 目录下

ps: 注意不要手动修改./theme下的*.css文件样式,因为et命令编译输出会覆盖
可以再package.json script字段增加命令:"build_theme": "node_modules/.bin/et -o ./themes"
运行:npm run build_theme
如果以上工具全局安装了,运行:

et
> ✔ build theme font
> ✔ build element theme

5. 使用自定义主题
  1. 完整引入样式:
    main.js里直接引用「在线主题编辑器」或「命令行工具」生成的主题的 theme/index.css文件即可。
import '../theme/index.css'
import ElementUI from 'element-ui'
import Vue from 'vue'
Vue.use(ElementUI)
  1. 搭配插件按需引入组件主题
    如果是搭配 babel-plugin-component 一起使用,只需要修改 .babelrc 的配置,指定 styleLibraryName 路径为自定义主题相对于 .babelrc 的路径,注意要加 ~。(无需再在main.js引入theme/index.css文件)
{
  "plugins": [
    [
      "component",
      {
        "libraryName": "element-ui",
        "styleLibraryName": "~theme"
      }
    ]
  ]
}

你可能感兴趣的:(element-ui引入方式、自定义主题)