用Webpack构建Vue项目
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Webpack构建Vue项目相关的知识,希望对你有一定的参考价值。
开始之前,需要安装node环境。(安装过程在此就不啰嗦了)
1、创建基本结构
首先我们要创建一个空文件夹(我这里叫todos,你可以随便命名)作为项目的根目录。
创建一个没有任何依赖关系的package.json,可以通过命令行 npm init 创建。
![技术分享](https://image.cha138.com/20200808/22a8f1e2f7184a2e9e14d4b5204ebad2.jpg)
配置下基本信息即可。
创建一个index.html文件,这个是显示在浏览器中的页面。
![技术分享](https://image.cha138.com/20200808/c528f1c2974548c2aa9f82377a9e0333.jpg)
注意:
1、这里的暂时并不存在;
2、的数据会被vue文件填入。
创建一个src文件夹,并在文件夹内新建一个main.js文件:
![技术分享](https://image.cha138.com/20200808/c32ac4b227fa4be6a2488362fc8d5e24.jpg)
这样我们就完成了一个关于vuejs骨架,但是如何让他运行在浏览器中呢,这个时候我们就需要利用webpack打包成js文件了。
2、基本webpack构建
创建一个webpack.config.js的文件:
![技术分享](https://image.cha138.com/20200808/7aea11fdca6d4fbe996ef92ddb41ec35.jpg)
在命令行中安装webpack:
![技术分享](https://image.cha138.com/20200808/0cd14350a30a40daa543223ba3ebf06a.jpg)
安装本地库(作为dev dependencies),需要在package.js中添加devDependencies的部分:
![技术分享](https://image.cha138.com/20200808/807756529e4b48419188868b2506321e.jpg)
保存后运行:npm install
然后,vuejs库安装到你的dependencies中:
![技术分享](https://image.cha138.com/20200808/2302d0b6ef72433db72a5ea61597cbd6.jpg)
最后运行webpack进行打包:
![技术分享](https://image.cha138.com/20200808/1bb8450c557b466e896d0b15de4b4d78.jpg)
3、vue-loader和.vue文件
什么是vue-loader?
vue-loader是webpack下loader插件,可以将.vue文件输出成组件。
创建一个文件夹叫component,并在文件夹内新建一个app.vue文件,app.vue内容如下:
![技术分享](https://image.cha138.com/20200808/b5072c0a53ab4ed08c44766833d86cf7.jpg)
然后修改main.js的代码,如下:
![技术分享](https://image.cha138.com/20200808/440a5324c69140d985483487559ffaf1.jpg)
重新运行一下,我们看到有报错了:
![技术分享](https://image.cha138.com/20200808/882fb8ed180c4a8484e77b942d266027.jpg)
webpack不知道怎么去处理 .vue 的新语法。所以需要修改下webpack配置文件:
![技术分享](https://image.cha138.com/20200808/d20c0001751c4139b4fe682d1cde01ad.jpg)
同时,在package.json加入一些库:
![技术分享](https://image.cha138.com/20200808/9829f1e22c8246c9bec72e885237fd28.jpg)
新加库以后,再重新npm install下载依赖包,然后重新打包一下:
![技术分享](https://image.cha138.com/20200808/7bb1f41dee3542c8b5a0a8672a40bdbe.jpg)
重新刷新下浏览器就可以看到最新页面了。
4、热模块替代/热更新
热模块替代或热更新是当今最热门新的技术。它让你保存javascript文件,就把对应的组件实时更新。
首先,我们需要用webpack的dev server。修改你的devDependencies在package.json.
![技术分享](https://image.cha138.com/20200808/f0df0046ca1847bbab0c49c053b10e47.jpg)
然后再命令窗口中执行cnpm install。
下载好依赖包后,再下载webpack-dev-server,执行命令行cnpm install -g webpack-dev-server,然后把脚本加入到package.json中
![技术分享](https://image.cha138.com/20200808/a19cb1d175e245c0ae07dc667ea828e9.jpg)
运行命令行 npm run dev:
![技术分享](https://image.cha138.com/20200808/2f60eb3d1dac4fde83c85a2dfa831c64.jpg)
这里看到有一大段内容,我们要运行http://localhost:8080/才能看到效果。
在这里值得一提的是:
之前我们在webpack.config.js里面是没有设置publicPath的,但是如果使用webpack-dev-server,你会发现,这个不会有更新。
我们来试验一下:
在package.json文件中,将publicPath注释掉:
![技术分享](https://image.cha138.com/20200808/5076eb49bc5847198a11624c9845adee.jpg)
app.vue代码如下:
![技术分享](https://image.cha138.com/20200808/26748ba313cf438399a384916964a5b7.jpg)
输入命令npm run dev,在浏览器中显示:
![技术分享](https://image.cha138.com/20200808/05166e1164fb46648f75027bc0744c46.jpg)
当将页面修改成:
![技术分享](https://image.cha138.com/20200808/7e25a2f89d3e4218a249793cd5312be9.jpg)
刷新浏览器,显示未变。
此时,若将publicPath注释取消,重新再输入命令行,刷新浏览器,此时显示更新:
![技术分享](https://image.cha138.com/20200808/021eb9c813204b879c74390ca440622d.jpg)
且不需要重新输命令行,修改代码后,都会更新。
这个时候你会发现:
如果我们修改的时template里面的html,这个时候,浏览器会秒变,并不需要刷新浏览器,比如:
![技术分享](https://image.cha138.com/20200808/a6927f6f12914cb780fed99e00597de0.jpg)
![技术分享](https://image.cha138.com/20200808/bf8d30fbea3b4f11b4b8989092cb760a.jpg)
但是如果你是将data数据更新,就必须要刷新下浏览器才行。(在这个地方我花了差不多快半个小时的时候才知道这个情况,我以为是我的代码写得有问题,才发现,原来更新template不需要刷新,而更新里面的data是需要刷新的。至于为什么,我也不知道。)
![技术分享](C:\Users\michelle\AppData\Local\YNote\data\qq97C535CE6EE31CF1CDD148D585150FAB\e7b1b6f7cd004ac7a591fab07ad5f73a\clipboard.png)
![技术分享](C:\Users\michelle\AppData\Local\YNote\data\qq97C535CE6EE31CF1CDD148D585150FAB\fa37ad5d85f04fb48bf77981cf1f7824\clipboard.png)
以上是关于用Webpack构建Vue项目的主要内容,如果未能解决你的问题,请参考以下文章
Vue实战Vue-cli项目构建(Vue+webpack系列之一)
Vue实战Vue-cli项目构建(Vue+webpack系列之一)