博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webpack4.5.0+vue2.5.16+vue-loader 实战组件化开发案例以及版本问题中踩的一些大坑!!!...
阅读量:5748 次
发布时间:2019-06-18

本文共 3012 字,大约阅读时间需要 10 分钟。

一 vue-loader

我们先不管脚手架,只说vue-loader,简单讲就是可将.vue文件打包,实现组件化开发,即一个.vue文件就是一个组件,开发中只需要引入这个.vue组件就可以了!

然后.vue文件的特性:

,

即一个.vue中包含了模板,js,css三个模块来描述这个组件!

二 新建webpack项目(超级多坑,一一来说)

首先新建demo目录,初始化 npm init --yes,然后安装webpack和webpack-dev-server,因为我这里没有指定版本,所以直接安装了最新的4.5.0版本,导致有许多配置的坑!,然后建立项目结构,如下图:

,

然后安装一些必要的组件:

vue-loader@14.2.2  ,这个我在实践中先安装的8.5.4,然后一直报错无法读取'vue',文件错误显示是vue-loader/lib下面的js,根据经验肯定是版本不对导致了,

这个时候两种解决办法:

一 要么修改webpack的版本,

二 要么修改vue-loader的版本

这里我采用修改vue-loader的版本,亲测如果是webpack@4.5.0,vue-loader@14.2.2.其他版本基本全部报错,真是坑!

然后就是其他的laoder:

,然后还有一点,如果是想用import的话还要安装babel:

,

最后--save安装vue,注意前面的最好都要--save-dev安装,然后再安装html-webpack-plugin插件便于html打包

三 webpack配置

配置如下:

const path=require('path')const htmlPlugin=require('html-webpack-plugin')module.exports={    entry:{        entry:'./src/index.js' //入口文件    },    output:{        path:path.resolve(__dirname,'dist'),//dist的绝对路径,node的语法        filename:'./js/[name].js',   //打包后的js文件名    },    resolve: {        extensions: [ '.js', '.vue'],  //同时打包.vue文件        alias:{            'vue$':'vue/dist/vue.js'    //启用别名,这样可以直接引用 'vue'        }    },    module:{        rules:[            //配置vue-loader,以,vue结尾的文件都使用vue-loader打包            {                test:/\.vue$/,                use:{                    loader:'vue-loader'                }            },            //配置babel,所有.js文件使用babel转换            {                test:/\.js$/,                use:{                    loader:'babel-loader',                    options:{                        presets:[                            "es2015"  //解析es6                        ]                    }                },                //排除插件安装目录                exclude: /node_modules|vue\/dist|vue-router\/|vue-loader\/|vue-hot-reload-api\//            }        ]    },    //html打包插件    plugins:[        new htmlPlugin({            hash:true,            template:'./src/index.html'        })    ],    devServer:{        //监听服务的路径,3.6以上版本自动热更新        contentBase:path.resolve(__dirname,'dist'),        host:'localhost',        compress:true,        port:8082    }}

 

配置完成之后,新建.vue组件文件,然后简单写个例子:

这里有个坑:

,

不能直接写123,template标签里面必须写一个元素标签包裹,否则会报错

新建之后再引入,index.js入口文件如下:

import Vue from 'vue'import App from './App.vue'   //引入,vue组件new Vue({    el:'#vue',    data:{        msg:'haha'    },    components:{        'app':App   //引入模块化的.vue文件的组件    }});{    alert(123);}

这里还有另一个坑,引入vue的时候现在这个版本好像不能直接'vue',而是'vue/dist/vue.js',除非在配置文件中配置别名,我上面已经配置过了,所以这里可以直接使用别名

,然后新建html:

            
vue
{
{msg}}

,最后打包进行观察结果,发现.vue已经能成功使用,如果我们还想要一个组件,可以继续新建.vue组件开发,一个组件就是一个模块!抛开脚手架不说,这种开发方式和思想值得细细品味,哈哈!这个简单例子就到这里,其他的css样式什么的可以自己去尝试!

另外说一点,webpack3.6以上的版本会自动支持热更新,不需要其他配置,4.0以上版本,打包和运行命令多了一个--mode选项,而且是必须写:

即现在package.json的命令里我是这样配置的:

"scripts": {
  "server": "webpack-dev-server --mode development --open",
  "build": "webpack --mode development"
},
npm run server 直接运行
npm run  build; 打包!
运行结果:

 

 

转载于:https://www.cnblogs.com/houzheng/p/8861941.html

你可能感兴趣的文章
舍弃浮躁, 50条重要的C++学习建议
查看>>
Hibernate懒加载/延迟加载机制总结
查看>>
fail2ban安装与使用
查看>>
拦截器(Interceptor)中的invocation.invoke()是什么意思?
查看>>
metasploit扫描MySQL用户名和密码
查看>>
walle上线部署系统
查看>>
java日志框架
查看>>
使用mysql备份工具innobackupex将本地数据 直接恢复 到远端服务器数据目录操作实例...
查看>>
同步手绘板——将View的内容映射成Bitmap转图片导出
查看>>
Quick Tip: Configure Static IP in Centos 6.5
查看>>
Word 2003中编辑标记与格式标记大讨论
查看>>
sed 使用方法
查看>>
6.接口
查看>>
虚拟机安装OS_X_Lion 反复注册问题
查看>>
apache编译报错一例
查看>>
try catch异常处理
查看>>
敏捷开发一千零一问系列之二十:怎样持续改进?(兼谈共振)
查看>>
FrameLayout之GridView的item布局
查看>>
基于heartbeat v1实现web服务双机热备
查看>>
Ubuntu安装配置Mysql详解
查看>>