element-icon 图标乱码解决办法

1,411 阅读3分钟

image.png (来源于网图) 呃呃呃。。。反正就是这种情况

挑眉.gif

搞一下

icon 乱码的主要原因是 webpack打包 icon 导致 icon 由原本的

{ content: "\ea0e"; }

变成了

{ content: "□"; }

即 16进制码 与 双字节字符的区别

原本16进制是ok的,结果一打包,dart-scss编译 的问题, loader的问题 共同导致了icon代码的不稳定性

解决方案

icon既然打包出问题,那我不打包总行了吧

1.在main中, 将原本的

import "element-ui/lib/theme-chalk/index.css";

注释掉,

2.不经过打包单独引入

import "element-ui/lib/theme-chalk/icon.css";

image.png

3.在src/style/element-variables.scss 路径中

注释掉之前的

@import "~element-ui/packages/theme-chalk/src/index";

image.png

新引入的完整代码在以下

// @import "~element-ui/packages/theme-chalk/src/index";

@import '~element-ui/packages/theme-chalk/src/pagination.scss';
@import '~element-ui/packages/theme-chalk/src/dialog.scss';
@import '~element-ui/packages/theme-chalk/src/autocomplete.scss';
@import '~element-ui/packages/theme-chalk/src/dropdown.scss';
@import '~element-ui/packages/theme-chalk/src/dropdown-menu.scss';
@import '~element-ui/packages/theme-chalk/src/dropdown-item.scss';
@import '~element-ui/packages/theme-chalk/src/menu.scss';
@import '~element-ui/packages/theme-chalk/src/submenu.scss';
@import '~element-ui/packages/theme-chalk/src/menu-item.scss';
@import '~element-ui/packages/theme-chalk/src/menu-item-group.scss';
@import '~element-ui/packages/theme-chalk/src/input.scss';
@import '~element-ui/packages/theme-chalk/src/input-number.scss';
@import '~element-ui/packages/theme-chalk/src/radio.scss';
@import '~element-ui/packages/theme-chalk/src/radio-group.scss';
@import '~element-ui/packages/theme-chalk/src/radio-button.scss';
@import '~element-ui/packages/theme-chalk/src/checkbox.scss';
@import '~element-ui/packages/theme-chalk/src/checkbox-button.scss';
@import '~element-ui/packages/theme-chalk/src/checkbox-group.scss';
@import '~element-ui/packages/theme-chalk/src/switch.scss';
@import '~element-ui/packages/theme-chalk/src/select.scss';
@import '~element-ui/packages/theme-chalk/src/button.scss';
@import '~element-ui/packages/theme-chalk/src/button-group.scss';
@import '~element-ui/packages/theme-chalk/src/table.scss';
@import '~element-ui/packages/theme-chalk/src/table-column.scss';
@import '~element-ui/packages/theme-chalk/src/date-picker.scss';
@import '~element-ui/packages/theme-chalk/src/time-select.scss';
@import '~element-ui/packages/theme-chalk/src/time-picker.scss';
@import '~element-ui/packages/theme-chalk/src/popover.scss';
@import '~element-ui/packages/theme-chalk/src/tooltip.scss';
@import '~element-ui/packages/theme-chalk/src/message-box.scss';
@import '~element-ui/packages/theme-chalk/src/breadcrumb.scss';
@import '~element-ui/packages/theme-chalk/src/breadcrumb-item.scss';
@import '~element-ui/packages/theme-chalk/src/form.scss';
@import '~element-ui/packages/theme-chalk/src/form-item.scss';
@import '~element-ui/packages/theme-chalk/src/tabs.scss';
@import '~element-ui/packages/theme-chalk/src/tab-pane.scss';
@import '~element-ui/packages/theme-chalk/src/tag.scss';
@import '~element-ui/packages/theme-chalk/src/tree.scss';
@import '~element-ui/packages/theme-chalk/src/alert.scss';
@import '~element-ui/packages/theme-chalk/src/notification.scss';
@import '~element-ui/packages/theme-chalk/src/slider.scss';
@import '~element-ui/packages/theme-chalk/src/loading.scss';
@import '~element-ui/packages/theme-chalk/src/row.scss';
@import '~element-ui/packages/theme-chalk/src/col.scss';
@import '~element-ui/packages/theme-chalk/src/upload.scss';
@import '~element-ui/packages/theme-chalk/src/progress.scss';
@import '~element-ui/packages/theme-chalk/src/spinner.scss';
@import '~element-ui/packages/theme-chalk/src/message.scss';
@import '~element-ui/packages/theme-chalk/src/badge.scss';
@import '~element-ui/packages/theme-chalk/src/card.scss';
@import '~element-ui/packages/theme-chalk/src/rate.scss';
@import '~element-ui/packages/theme-chalk/src/steps.scss';
@import '~element-ui/packages/theme-chalk/src/step.scss';
@import '~element-ui/packages/theme-chalk/src/carousel.scss';
@import '~element-ui/packages/theme-chalk/src/scrollbar.scss';
@import '~element-ui/packages/theme-chalk/src/carousel-item.scss';
@import '~element-ui/packages/theme-chalk/src/collapse.scss';
@import '~element-ui/packages/theme-chalk/src/collapse-item.scss';
@import '~element-ui/packages/theme-chalk/src/cascader.scss';
@import '~element-ui/packages/theme-chalk/src/color-picker.scss';
@import '~element-ui/packages/theme-chalk/src/transfer.scss';
@import '~element-ui/packages/theme-chalk/src/container.scss';
@import '~element-ui/packages/theme-chalk/src/header.scss';
@import '~element-ui/packages/theme-chalk/src/aside.scss';
@import '~element-ui/packages/theme-chalk/src/main.scss';
@import '~element-ui/packages/theme-chalk/src/footer.scss';
@import '~element-ui/packages/theme-chalk/src/timeline.scss';
@import '~element-ui/packages/theme-chalk/src/timeline-item.scss';
@import '~element-ui/packages/theme-chalk/src/link.scss';
@import '~element-ui/packages/theme-chalk/src/divider.scss';
@import '~element-ui/packages/theme-chalk/src/image.scss';
@import '~element-ui/packages/theme-chalk/src/calendar.scss';
@import '~element-ui/packages/theme-chalk/src/backtop.scss';
@import '~element-ui/packages/theme-chalk/src/infinite-scroll.scss';
@import '~element-ui/packages/theme-chalk/src/page-header.scss';
@import '~element-ui/packages/theme-chalk/src/cascader-panel.scss';
@import '~element-ui/packages/theme-chalk/src/avatar.scss';
@import '~element-ui/packages/theme-chalk/src/drawer.scss';
@import '~element-ui/packages/theme-chalk/src/popconfirm.scss';
@import '~element-ui/packages/theme-chalk/src/common/transition.scss';

这种方式就是icon.scss不打包,其他 element 组件打包

祖国人.jpg

至此,icon乱码问题解决 (下面还有~)

很重要

但也导致了一些副作用

这也导致了 element 组件需要按需引入,后续开发如果有新的组件进厂要记得在这里加一下,并且和同事说一说这个情况

PS: 在开发过程中解决问题但没有和同事说明,合并分支结果有冲突,大半夜2点搞得很不愉快,后来发现那个新增组件没加到 element-variables.scss 路径中 (transition.scss 这个家伙,现在已经加入进去了,别担心,上面代码直接拉就好),但你如果考虑使用element的新增组件的时候记得加!

按需引入记得加!!!