如果出现加载2s以上的情况请先查看服务器是否对大文件进行过压缩优化处理。

按照官方文档把iview引入到vue的项目中,全部引入的时候没问题。
当按官方文档显示的按需加载是借助插件babel-plugin-import插件,

安装如下:npm install babel-plugin-import --save-dev,

然后在.babelrc中配置:

"plugins": [
"transform-vue-jsx",
"transform-runtime",
["import", {
"libraryName": "iview",
"libraryDirectory": "src/components"
}]
]

但是当配置好之后,编译通过,浏览器却报错。iview is not defined。原因是添加按需加载的插件之后就不可以用下面的方式引入iview了

import iView from 'iview'
import 'iview/dist/styles/iview.css'
Vue.use(iView)

可以采用官方文档上面的按需引入的方式引入

import Vue from 'vue'
import { Button, Radio } from 'iview'
Vue.component('Button',Button)
Vue.component('Radio',Radio)

然后在vue文件中直接写标签使用。

在实际开发过程中也可以通过另外新建一个js文件用来引入,引入的之后直接引入该插件就可以了

在main.js中通过该方式引入

import './iview'
新建文件代码如下
import Vue from 'vue'
import 'iview/dist/styles/iview.css' import {
Affix,
Alert,
AutoComplete,
Avatar,
BackTop,
Badge,
Breadcrumb,
BreadcrumbItem,
Button,
ButtonGroup,
Card,
Carousel,
CarouselItem,
Cascader,
Checkbox,
CheckboxGroup,
Circle,
Col,
Collapse,
ColorPicker,
Content,
DatePicker,
Dropdown,
DropdownItem,
DropdownMenu,
Footer,
Form,
FormItem,
Header,
Icon,
Input,
InputNumber,
Scroll,
Sider,
Submenu,
Layout,
LoadingBar,
Menu,
MenuGroup,
MenuItem,
Message,
Modal,
Notice,
Option,
OptionGroup,
Page,
Panel,
Poptip,
Progress,
Radio,
RadioGroup,
Rate,
Row,
Select,
Slider,
Spin,
Step,
Steps,
Switch,
Table,
Tabs,
TabPane,
Tag,
Timeline,
TimelineItem,
TimePicker,
Tooltip,
Transfer,
Tree,
Upload
} from 'iview'
// iview基础模块
const components = {
Affix,
Alert,
AutoComplete,
Avatar,
BackTop,
Badge,
Breadcrumb,
BreadcrumbItem,
Button,
ButtonGroup,
Card,
Carousel,
CarouselItem,
Cascader,
Checkbox,
CheckboxGroup,
Col,
Collapse,
ColorPicker,
Content,
DatePicker,
Dropdown,
DropdownItem,
DropdownMenu,
Footer,
Form,
FormItem,
Header,
Icon,
Input,
InputNumber,
Scroll,
Sider,
Submenu,
Layout,
LoadingBar,
Menu,
MenuGroup,
MenuItem,
Message,
Modal,
Notice,
Option,
OptionGroup,
Page,
Panel,
Poptip,
Progress,
Radio,
RadioGroup,
Rate,
Row,
Select,
Slider,
Spin,
Step,
Steps,
Table,
Tabs,
TabPane,
Tag,
Timeline,
TimelineItem,
TimePicker,
Tooltip,
Transfer,
Tree,
Upload
} const iviewModule = {
...components,
// 不能和html标签重复的组件,添加别名(除了Switch、Circle在使用中必须是iSwitch、iCircle,其他都可以不加"i")
iButton: Button,
iCircle: Circle,
iCol: Col,
iContent: Content,
iForm: Form,
iFooter: Footer,
iHeader: Header,
iInput: Input,
iMenu: Menu,
iOption: Option,
iProgress: Progress,
iSelect: Select,
iSwitch: Switch,
iTable: Table
}
// 循环注册全局组件
Object.keys(iviewModule).forEach(key => {
Vue.component(key, iviewModule[key])
})

经测试通过这种引用js的方式可以把打包后的vendor.js文件从1.2M降低到762KB了,而采用上面的官方文档的引用打包后的文件有636kb,引入决定采用引用js的方式。

这个是用的官方文档的方案进行的测试:

这个是引用js的方式的打包结果:

这个是未采用按需引用的方式的打包结果:

如果对于1M以内的js文件依然出现页面加载速度慢的问题,那就看下服务器是否对大文件开启压缩,对文件的压缩优化是不是正常。

需要注意的是,按这种方式的话需要拉取async-validator否则在表单验证的时候浏览器会报错Uncaught (in promise)。

npm install async-validator --save-dev

webpack.base.conf.js中修改下列代码

entry: {
app: ['babel-polyfill', './src/main.js']
},
{
  test: /\.js$/,
  loader: 'babel-loader',
  include: [resolve('src'), resolve('test'), resolve('/node_modules/iview/src'), resolve('node_modules/webpack-dev-server/client')]
},

添加公共组件

Vue.component('yTooltipCell', resolve => require(['@/components/common/tooltipCell.vue'], resolve))

表格中checkoutbox在IE浏览器下显示异常,在样式中加入下面的重置代码

.ivu-checkbox-inner:after,
.ivu-checkbox-checked .ivu-checkbox-inner:after {
display: table-cell;
}

参考:https://juejin.im/post/5afd418451882542bd69e61c

参考:https://segmentfault.com/a/1190000010688922

最新文章

  1. 排名前 8 的 PHP 调试工具
  2. myeclipse 2014 除了 默认加载的derby
  3. python pymysql和orm
  4. Druid 基础使用-操作篇(Imply )
  5. mysql导出到ms sql
  6. Selenium 处理模态对话框
  7. android开发之broadcast学习笔记 分类: android 学习笔记 2015-07-19 16:33 32人阅读 评论(0) 收藏
  8. jq hide show
  9. C#调用Microsoft.DirectX.DirectSound问题记录及解决
  10. linux系统调用之进程控制
  11. 精选!15 个必备的 VSCode 插件(前端类)
  12. Name方法
  13. java的impl
  14. Java设计模式学习记录-抽象工厂模式
  15. 通过SSH秘钥登录线上MySQL数据库(基于Navicat)
  16. OFART: OpenFlow-Switch Adaptive Random Testing
  17. C语言实现24点程序
  18. BZOJ2288:[POJ Challenge]生日礼物——题解
  19. 委托---.net4.0提供两个比较重要的委托
  20. [转]JSP中常见的Tomcat报错错误解析(二)

热门文章

  1. last显示出unknown用户
  2. Python openpyxl的使用
  3. InnoDB学习(五)之MVCC多版本并发控制
  4. python内置模块(一)
  5. [源码解析] PyTorch 分布式(17) --- 结合DDP和分布式 RPC 框架
  6. [BUUCTF]PWN8——jarvisoj_level0
  7. 月薪过2w的IT程序员都是怎么做到的?
  8. java 多线程:线程死锁,如何判断程序是否有死锁代码块儿
  9. java 输入输出IO 转换流-字符编码
  10. There is a cycle in the hierarchy! role对象此时是什么错误