在webpack上如何搭建vue项目
这篇文章主要介绍了webpack搭建vue 项目的步骤,现在分享给大家,也给大家做个参考。
前期准备
webpack
vue.js
npm
nodejs
ES6语法
由于本文内容是通过npm来加载vue,所以开始之前需安装nodejs环境,安装完成之后再执行以下步骤:
创建项目
1 2 |
|
使用 npm init 命令 生成package.json文件
1 |
|
大概生成的package.json 如下:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
引入webpack ,关于如何使用webpack 请参考官网
1 |
|
如果使用npm下载的速度过慢,可以使用淘宝的cnpm 镜像
1 |
|
输入以上命令即可将npm指向国内镜像,使用时需将npm 替换成cnpm即可, 其他不变
在项目中创建webpack.config.js 文件
1 2 3 4 5 6 7 8 |
|
使用webpack 命令编译
1 |
|
编译之后的项目目录大概如下:
注意:在使用webpack命令之前 需先创建 index.html 和 main.js 文件 其中 main.js文件位于src 目录下
index.html 的内容如下
1 2 3 4 5 6 7 8 9 10 |
|
main.js 的内容如下
1 |
|
引入vue
1 |
|
执行命令后会在package.json中新增如下代码
"dependencies": { "vue": "^2.4.2" }
将main.js中的内容修改为如下代码
1 2 3 4 5 6 7 |
|
引入babel
1 |
|
由于在使用vue时会用到很多es6的语法,但是现在很多浏览器对es6的支持不是很好,所以在编译时需要将这些语法转换es5的语法,此时我们使用babel来进行编译。
babel的使用请阅读官网文档http://babeljs.cn/。
将babel加入到webpack.config.js 配置文件中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
然后命令行输入 webpack 命令即可进行编译,再编译完成后用浏览器打开index.html 文件,此时会发现浏览器控制台出现以下错误:
1 2 3 |
|
这是因为正在使用的是vue的运行时版本,而此版本中的编译器时不可用的,我们需要把它切换成运行时 + 编译的版本,需要在配置文件中添加如下代码
1 2 3 4 5 |
|
此时在运行webpack 命令重新编译,编译后在访问index.html页面,页面内容如下图
此时一个基于webpack的vue 项目就搭建好。
webpack的一些常用配置
在项目的实际开发中我们还会引入css、图片以及字体等资源文件。这些文件的引入都需要相应的加载器才能将其加载到项目中并正常使用。
下面只介绍部分我们需要的加载器的使用方法, 更多信息请查阅webpack加载器文档。
css加载器
我们需要引入css-loader、和style-loader (安装style-loader的目的是为了在html中以style的方式嵌入css )。
执行命令
1 |
|
在 webpack.config.js 中进行如下配置
1 2 3 4 5 6 7 8 9 10 |
|
然后再src 目录下 新建一个styles的文件夹并在里面添加一个main.css的文件,写上以下内容
1 2 3 |
|
然后再运行 webpack 命令, 并重新加载index.html 文件 ,可见css已经生效,效果如下图
图片资源的加载
使用file-loader或者url-loader加载器进行加载,他们都是用于打包文件和图片资源的,两者的区别是url-loader在file-loader的基础上进行了一次封装。
在访问网站时如果图片较多,会发很多http请求,会降低页面性能。这个问题可以通过url-loader解决。url-loader会将引入的图片编码,生成dataURl。相当于把图片数据翻译成一串字符,再把这串字符打包到文件中,最终只需要引入这个文件就能访问图片了。
当然,如果图片较大,编码会消耗性能。因此url-loader提供了一个limit参数,小于limit字节的文件会被转为DataURl,大于limit的还会使用file-loader进行copy。
此处我们使用url-loader,由于它是基于file-loader的封装,所以也需要引入file-loader。
1 |
|
webpack.config.js 的rules 中增加如下配置
1 2 3 4 5 6 7 |
|
接下来就是将图片引入到代码中,需要在main.js和index.html 分别作如下修改:
main.js
1 2 3 4 5 6 7 8 9 10 11 |
|
index.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
最后运行webpack 命令并访问 index.html ,结果如下
在测试中发现当图片大于10KB的时候发现加载图片失败,找不到图片,但此时在dist目录下面是能看到已经通过加载器加载成功了的图片,再通过浏览器的开发者工具对图片的引用路径进行检查时,可以发现页面中img的路径不对,路径中只有文件名缺失了前面的dist目录,所以此时我们需要将main.js中的代码进行如下修改
1 |
|
重新编译后图片就显示出来了。但是现在新的问题又出来了,由于我们在配置文件中配置了小于10kb的代码将以 base64的形式内联在代码中。所以此时是不需要 "./dist" 这个前缀的。 解决此问题有两种办法:
不使用base64的形式将图片内嵌到代码中
将html文件放到dist目录中 既然用了url-loader加载器则不推荐使用第一种。所以我们使用第二种方式。
将html文件放到dist目录中最简单的办法就是把index.html文件复制到dist目录中,然后将引入就是的代码改为:
1 |
|
main.js中改回原来的设置
1 |
|
重新编译后图片在两种情况下都可以加载出来了。
还有一中比较常用的方式是在编译时自动在dist的目录中创建一个html文件并将index.html中的内容复制过去。此时我们需要时webpack的 HtmlWebpackPlugin 插件。
HtmlWebpackPlugin 插件
引入插件
1 |
|
webpack.config.js 中增加如下配置
1 2 3 4 5 6 |
|
重新编译后发现在dist目录下生成了如下内容的html的文件
1 2 3 4 5 6 7 8 9 |
|
与我们原来自己的写index.html相比,该文件缺少了下面这些这些内容
1 2 3 4 |
|
现在需要对配置文件做稍微的修改,让html文件在创建的时候自动将index.html的中内容复制过去。通过查阅该插件的文档,可知需做如下修改:
1 2 3 4 5 6 |
|
index.html 文件中 去除 script代码,在重新编译后,即可获取我们需要的html文件
详细参数配置请参考官方文档
webpack-dev-server
在我们实际开发中需要将代码部署在server中,而不是在浏览器中直接打开文件。此时我们需要使用webpack的 webpack-dev-server 。
webpack-dev-server 为我们提供了一个简单的web服务器,并且能够实时重新加载(live reloading)。
1 |
|
在webpack.config.js 文件中需要指定一个文件夹,告诉开发服务器需要从哪儿加载文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
|
上面红色字体的配置信息是告知webpack-dev-server, 在localhost:8080 下建立服务,将 dist 目录下的文件,作为可访问文件。
让我们在package.json中添加一个script脚本,可以直接运行开发服务器(dev server):
1 2 3 4 5 |
|
然后输入如下命令
1 |
|
启动完成后,浏览器会自动打开一个访问 http://localhost:8080/ 的页面
此时服务已启动成功。
字体的加载
字体的加载方式与图片的一样也是用url-loader,配置如下
1 2 3 4 5 6 7 |
|
vue-loader
在vue的开发过程中,通常我们需要写.vue结尾的文件即组件,如app.vue
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
该文件需要通过vue-loader来进行加载,现在我们需要做如下配置。通过 vue-loader 和vue-template-compiler来加载并编译.vue文件
1 |
|
webpack.config.js 中
1 2 3 4 |
|
为了在vue中引入对.vue的使用,我们需进行如下修改
index.html
1 2 3 4 5 6 7 8 9 10 11 |
|
main.js
1 2 3 4 5 6 7 8 9 |
|
app.vue
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
修改完成后 运行 npm run dev 命令 ,获得如下效果的页面
热部署
在上一步中,如果我们修改app.vue文件中的msg的参数,可以看到页面会自动刷新。但是此时是页面全局刷新的,如果我们只想局部刷新即只刷新修改的部分,需要使用webpack的HotModuleReplacementPlugin插件,在webpack.config.js的plugins中添加下面的信息:
1 |
|
然后去package.json中,script 里面dev的值中加上 --hot -only
1 |
|
然后重启服务,再修改 msg 的值,会发现此时值的改变是局部刷新的。
生产环境
如果我们在浏览器的控制台中发现有如下提示
意思时说项目现在运行在开发环境中,在部署到正式环境下时,要确保它是处于production的模式。需要将代码打包部署到生产环境时需要进行如下配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
以上是在webpack上如何搭建vue项目的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Vue是一款优秀的JavaScript框架,它可以帮助我们快速构建交互性强、高效性好的Web应用程序。Vue3是Vue的最新版本,它引入了很多新的特性和功能。Webpack是目前最流行的JavaScript模块打包器和构建工具之一,它可以帮助我们管理项目中的各种资源。本文就为大家介绍如何使用Webpack打包和构建Vue3应用程序。1.安装Webpack

Ace 是一个用 JavaScript 编写的可嵌入代码编辑器。它与 Sublime、Vim 和 TextMate 等原生编辑器的功能和性能相匹配。它可以很容易地嵌入到任何网页和 JavaScript 应用程序中。Ace 被维护为Cloud9 IDE的主要编辑器 ,并且是 Mozilla Skywriter (Bespin) 项目的继承者。

当今前端开发中,Vue.js 已经成为了一个非常流行的框架。随着 Vue.js 的不断发展,单元测试变得越来越重要。今天,我们将探讨如何在 Vue.js 3 中编写单元测试,并提供一些最佳实践和常见的问题及解决方案。

Vue框架下,如何快速搭建统计图表系统在现代网页应用中,统计图表是必不可少的组成部分。Vue.js作为一款流行的前端框架,提供了很多便捷的工具和组件,能够帮助我们快速搭建统计图表系统。本文将介绍如何利用Vue框架以及一些插件来搭建一个简单的统计图表系统。首先,我们需要准备一个Vue.js的开发环境,包括安装Vue脚手架以及一些相关的插件。在命令行中执行以下命

在做 chatgpt 镜像站的时候,发现有些镜像站是没做打字机的光标效果的,就只是文字输出,是他们不想做吗?反正我想做。于是我仔细研究了一下,实现了打字机效果加光标的效果,现在分享一下我的解决方案以及效果图~

怎么实现元素拖拽功能?下面本篇文章一步步带大家了解如何使用Vue3实现一个飘逸元素拖拽功能,并在实例中了解相关知识点,希望对大家有所帮助!

随着Web开发技术的不断发展,前后端分离、模块化开发已经成为了一个广泛的趋势。PHP作为一种常用的后端语言,在进行模块化开发时,我们需要借助一些工具来实现模块的管理和打包,其中webpack是一个非常好用的模块化打包工具。本文将介绍如何使用PHP和webpack进行模块化开发。一、什么是模块化开发模块化开发是指将程序分解成不同的独立模块,每个模块都有自己的作

简而言之:JavaScript + React + Redux 仍然占据主导地位。搭配 Next.js 和 Vercel 最佳。AI 正在迅速发展,Web3 的增长也很强劲。过去一年发生了很多变化,让人感到一切都准备好被颠覆,但尽管是我见过的最具颠覆性的一年,今年的框架生态系统最大的惊喜是,它几乎没有什么变化。虽然有很多新玩家进入市场(欢呼 SolidJS),但去年的大赢家仍然在今年占据主导地位,在就业市场上似乎没有让位的迹象(有数据支持)。那么有什么变化呢?AI 加速开发者当我在2020年首次
