📘
技术积累
  • 简介
  • 学习方法
    • 如何提高编程技能
  • 基础知识
    • Linux
      • Linux常用指令
      • rsync
      • VIM
      • tmate命令行分享
      • 命令别名存储
      • 项目服务器重启
    • 设计模式
    • 自动化接口使用
    • 项目经理培训
    • 报价策略
    • 培训材料撰写
  • 工具
    • Ajax
    • AutV
    • axios
    • Babel
    • bower
    • codecov
    • crypto
    • CSS3D
    • Docker
    • Echarts
    • Git
      • 如何删除项目
      • 多个ssh_key的生成与使用
      • 常用命令清单
    • Gitbook
      • Gitbook 更多配置
      • Markdown 标记示例
    • gulp
    • Istanbul
    • JEST
    • jMeter
    • js-md5
    • Kama
    • LESS Sass 编译工具Koala介绍
    • Lodash
    • Markdown
    • Maven
    • Moment
    • Nginx
    • NPM
    • NVM
    • particles.js粒子效果
    • PM2
    • Qs
    • Swagger
    • Webpack
    • Webpack
    • Yarn
    • Yeoman使用
  • 平台
    • 代码托管平台 GitLab
    • 代码安全平台 sonarqube
  • 语言和框架
    • 工作流
    • Angular
      • FUSE-Angular前端框架项目初始化
      • AngularJs-toaster-Angular提示弹框插件
      • ng-file-upload-Angular上传图片插件
      • ngclipboard-Angular复制到剪贴板插件
    • Vue
      • ElementUI-Vue前端框架项目初始化
      • clipboard使用
      • mobileSelect.js使用
      • vue-cookies使用
      • vue-fullpage使用
      • vue-router使用
      • Vue的Ref属性
      • Vuex使用
      • Vux使用
      • vux-uploader使用
      • Vue生命周期图例
      • iview-loader使用
    • cycleJs
    • ES6
      • async/await
    • react
      • react生命周期
      • create-react-app
      • Rematch
      • react-router
      • react-router-dom
      • css-in-js
    • TypeScript
      • VueAndTypeScript
    • 微信小程序
    • Hexo博客框架
      • Hexo博客框架-图片问题处理
      • Hexo博客框架-切换主题
    • SmartClient
    • HybridApp混合开发
      • uniapp
  • 代码审查
    • 代码命名规范
    • 页面代码结构
    • JavaScript标准编码风格
    • AirbnbJavaScript风格指南
  • 其他
    • 收藏|激发灵感的33套网页配色方案(附色值)
    • KPI&OKR
    • 测试自动化
    • view
    • 前端面试
      • 项目方面
      • html+css
      • JavaScript方面
      • JavaScript面试
      • 框架方面
      • 前端面试3+1
        • 20190420
        • 20190419
        • 20190418
        • 20190417
    • Linux面试题
    • JAVA面试
    • 测试面试
    • 钉钉使用
    • sd360
  • 前端知识积累
    • css3单位汇总
    • CSS解决loading效果
    • 深度克隆的方法
    • 加密技术
    • 解决ios下的微信页面背景音乐无法自动播放问题
    • 一套绝佳的图标字体库和CSS框架:Font Awesome
    • 关于ico图标不显示解决办法
    • 提升页面响应速度
    • innerHTML引入的script如何使用
    • JavaMap转Json
    • JS开发工具大全
    • 移动端插件
    • 移动端页面通过前端方法禁止ios页面横屏方法
    • 图片资源网站
    • 排序方式
    • 图片预览上传
    • Windows部署时脚本报错
Powered by GitBook
On this page
  • 1 用途
  • 2 使用方法
  • 2.1 安装
  • 2.2 配置
  • 2.3 说明
  • 2.4 最佳实践
  • 2.4.1 timeline组件eslint报错
  • 2.4.2 menu组件submenu递归溢出报错
  • 参考资料

Was this helpful?

  1. 语言和框架
  2. Vue

iview-loader使用

PreviousVue生命周期图例NextcycleJs

Last updated 4 years ago

Was this helpful?

作者:高天阳

邮箱:13683265113@163.com

更改历史

* 2019-06-28        高天阳     初始化文档

1 用途

统一iView标签书写规范,所有标签都可以使用首字母大写的形式,包括Vue限制的两个标签Switch和Circle。

虽然不推荐,但通过loader选项配置,可以开启所有标签前缀的写法了,比如i-date-picker。

2 使用方法

2.1 安装

首先通过npm安装iview-loader

npm install iview-loader --save-dev

2.2 配置

配置webpack(webpack.base.conf.js),改写平时vue-loader的配置,形如:

module: {
    rules: [
        {
            test: /\.vue$/,
            use: [
                {
                    loader: 'vue-loader',
                    options: {

                    }
                },
                {
                    loader: 'iview-loader',
                    options: {
                        prefix: false
                    }
                }
            ]
        }
    ]
}

2.3 说明

  • 可以直接写<Switch>和<Circle>这两个标签;

  • 参数prefix设置为true后,所有iView组件标签名都可以使用前缀i-,例如<i-row>、<i-select>

完整的标签名如下:

{
    'i-affix': 'Affix',
    'i-alert': 'Alert',
    'i-anchor': 'Anchor',
    'i-anchor-link': 'AnchorLink',
    'i-auto-complete': 'AutoComplete',
    'i-avatar': 'Avatar',
    'i-back-top': 'BackTop',
    'i-badge': 'Badge',
    'i-breadcrumb': 'Breadcrumb',
    'i-breadcrumb-item': 'BreadcrumbItem',
    'i-button': 'Button',
    'i-button-group': 'ButtonGroup',
    'i-card': 'Card',
    'i-carousel': 'Carousel',
    'i-carousel-item': 'CarouselItem',
    'i-cascader': 'Cascader',
    'i-cell': 'Cell',
    'i-cell-group': 'CellGroup',
    'i-checkbox': 'Checkbox',
    'i-checkbox-group': 'CheckboxGroup',
    'i-circle': 'i-circle',
    'i-col': 'Col',
    'i-collapse': 'Collapse',
    'i-color-picker': 'ColorPicker',
    'i-content': 'Content',
    'i-divider': 'Divider',
    'i-date-picker': 'DatePicker',
    'i-drawer': 'Drawer',
    'i-dropdown': 'Dropdown',
    'i-dropdown-item': 'DropdownItem',
    'i-dropdown-menu': 'DropdownMenu',
    'i-footer': 'Footer',
    'i-form': 'Form',
    'i-form-item': 'FormItem',
    'i-header': 'Header',
    'i-icon': 'Icon',
    'i-input': 'Input',
    'i-input-number': 'InputNumber',
    'i-layout': 'Layout',
    'i-menu': 'Menu',
    'i-menu-group': 'MenuGroup',
    'i-menu-item': 'MenuItem',
    'i-sider': 'Sider',
    'i-submenu': 'Submenu',
    'i-modal': 'Modal',
    'i-option': 'Option',
    'i-option-group': 'OptionGroup',
    'i-page': 'Page',
    'i-panel': 'Panel',
    'i-poptip': 'Poptip',
    'i-progress': 'Progress',
    'i-radio': 'Radio',
    'i-radio-group': 'RadioGroup',
    'i-rate': 'Rate',
    'i-row': 'Row',
    'i-select': 'Select',
    'i-slider': 'Slider',
    'i-spin': 'Spin',
    'i-split': 'Split',
    'i-step': 'Step',
    'i-steps': 'Steps',
    'i-switch': 'i-switch',
    'i-table': 'Table',
    'i-tabs': 'Tabs',
    'i-tab-pane': 'TabPane',
    'i-tag': 'Tag',
    'i-time': 'Time',
    'i-timeline': 'Timeline',
    'i-timeline-item': 'TimelineItem',
    'i-time-picker': 'TimePicker',
    'i-tooltip': 'Tooltip',
    'i-transfer': 'Transfer',
    'i-tree': 'Tree',
    'i-upload': 'Upload'
}

2.4 最佳实践

2.4.1 timeline组件eslint报错

按照iview官方文档中的提示编写时间轴代码如下

<i-timeline class="time-content-box">
    <i-timeline-item>
      <p class="time-title">时间</p>
      <p class="time-content">内容</p>
    </i-timeline-item>
</i-timeline>

编译报错如下图

页面报错如下图

分析:由于eslint无法识别timeline导致其在编译过程中提示标签未封闭 从而导致编译失败

解决方法

在main.js引入iview的同时 把timeline组件全局注册别名

import Vue from 'vue'
import iView from 'iview'
Vue.component('i-time-line-item', iView.TimelineItem)

页面中使用别名

<i-timeline class="time-content-box">
    <i-time-line-item>
      <p class="time-title">时间</p>
      <p class="time-content">内容</p>
    </i-time-line-item>
</i-timeline>

2.4.2 menu组件submenu递归溢出报错

按照iview官方文档中的提示编写时间轴代码如下

<i-menu>
    <i-submenu name="a">
        <template slot="title">
            A
        </template>
        <i-menu-item name="a1" to="/a/a1">B</i-menu-item>
        <i-menu-item name="a2" to="/a/a2">C</i-menu-item>
    </i-submenu>
    <i-menu-item name="b" to="/b">
      B
    </i-menu-item>
    <i-menu-item name="c" to="/c">
      C
    </i-menu-item>
</i-menu>

页面报错如下图

分析:暂时未查出问题原因 猜测是iview-loader中重命名的组件与iview原本的组件存在冲突 导致的异常

解决方法同上

在main.js引入iview的同时 把submenu组件全局注册别名

import Vue from 'vue'
import iView from 'iview'
Vue.component('i-ym-submenu', iView.Submenu)

页面中使用别名

<i-menu>
    <i-ym-submenu name="a">
        <template slot="title">
            A
        </template>
        <i-menu-item name="a1" to="/a/a1">B</i-menu-item>
        <i-menu-item name="a2" to="/a/a2">C</i-menu-item>
    </i-ym-submenu>
    <i-menu-item name="b" to="/b">
      B
    </i-menu-item>
    <i-menu-item name="c" to="/c">
      C
    </i-menu-item>
</i-menu>

参考资料

为什么推荐在单文件组件和字符串模板中组件名应该总是 PascalCase 的。
iView Loader