Vue 3 企业级项目实战课
杨文坚
前阿里前端 Leader,前腾讯 IMWeb 团队高级前端工程师
6908 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 47 讲
实战篇 (19讲)
Vue 3 企业级项目实战课
15
15
1.0x
00:00/00:00
登录|注册

02|Webpack编译搭建:如何用Webpack初构建Vue 3项目?

你好,我是杨文坚。
看到这个题目,你是不是觉得有点疑惑?明明 Vue.js 3 官方标配的编译工具是 Vite,为什么我不先讲 Vue.js 3 结合 Vite 进行项目编译,而是先教你用 Webpack 编译 Vue.js 3 项目呢?
这是因为,我们这个课程是要做一个“企业级项目的实战”,而在企业技术开发中,第一要素就是保证功能的稳定性和可用性。在这一点上,Webpack 比 Vite 有更大优势。它发布于 2013 年,拥有较好的技术生态,基本上,你用 Webpack 项目打包构建遇到任何问题,都能在网上找到相关场景的直接解决方案或者间接解决思路。而 Vite 比较年轻,在 2020 年才发布正式版,在技术生态的沉淀上并没有 Webpack 那么丰富。
所以,这一讲中,我们还是先来讲讲怎么用 Webpack 来编译 Vue.js 3 项目。开始之前,我们先来看看除了 Webpack 生态更稳定的因素外,Webpack 和 Vite 究竟还有什么区别,让你对这两个工具有更深入的了解。

Webpack 和 Vite 有什么区别?

我在研究技术的时候经常在想,脱离技术的定位来对比技术好坏都是耍流氓。因为每一种流行的技术之所以被人接纳,肯定是有其诞生的定位和开发者的使用定位。所以我们要对比 Webpack 和 Vite,最重要是对比这两种技术工具的定位
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了如何使用Webpack构建Vue 3项目,重点强调了在企业级项目开发中稳定性和可用性的重要性。作者首先解释了为什么选择使用Webpack而不是Vite,并通过实际操作和详细解释,帮助读者了解了如何使用Webpack搭建Vue.js 3项目。文章包括了项目目录和源码准备、安装依赖、配置Webpack的Vue.js 3编译配置以及执行Vue.js 3编译的步骤。其中涵盖了开发模式和生产模式的配置,以及相关插件的安装和配置。在开发模式下,还介绍了Webpack开发服务的依赖模块和相关配置,以及HTML页面的处理。在生产模式下,介绍了代码压缩处理和相关插件的安装和配置。最后,通过核心代码展示了企业级项目的编译配置流程,强调了配置复用和隔离的重要性。总的来说,本文内容丰富,适合想要深入了解Webpack构建Vue 3项目的读者。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Vue 3 企业级项目实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(16)

  • 最新
  • 精选
  • Geek_b640fe
    ‘NODE_ENV’ 不是内部或外部命令,也不是可运行的程序或批处理文件 windows 环境必须安装 cross-env 模块,并在启动命令前安装 npm i -D cross-env "scripts": { "dev": "cross-env NODE_ENV=development webpack serve -c ./webpack.config.js", "build": "cross-env NODE_ENV=production webpack -c ./webpack.config.js" },

    作者回复: 点赞

    2022-12-07归属地:中国香港
    7
  • 风太大太大
    Webpack 3 4 5每个版本差异还挺大的,plugin变更,语法变更,对缓存的使用程度,打包构建加速那个版本的方案都不同,版本越高越方便

    作者回复: 点赞

    2022-11-23归属地:江苏
    4
  • ZR-rd
    老师,大厂一般都是使用 CDN 来导入 Vue 等第三方库的吗?为什么不是直接打包到 bundle 中呢?这样有什么优缺点呢?

    作者回复: 通过external和cdn来导入库可以利用缓存,显著减少页面需要加载的内容

    2022-12-01归属地:江苏
    3
  • 丫头
    webpack.default.js webpack.dev.js webpack.prod.js 不同环境独立文件,会不会更清晰些

    作者回复: 您好,你的这个文件思路也是常见的方案,能清晰地隔离出不同环境的编译脚本。

    2022-12-05归属地:广东
    3
    2
  • 健牌哥.
    dev配置的devServer把static.directory修改成 path.join(__dirname, 'public'),本地node_modules的vue运行时文件就加载不成功了,index.html已放在public文件夹里。请问下这个怎么解决呢?

    作者回复: 您好,static.directory 指的是devServer的静态资源服务,不会自动编译node_modules里的vue代码。入口的index.html文件尽量不要放在静态文件里中使用。

    2023-01-16归属地:广东
  • 定宇
    想問一下,如果在webpack輸出檔案有加hash值的話 ex: ``` output: { path: path.join(__dirname, '../dist'), publicPath: '/', filename: '[name].[hash].js', } ``` 在HtmlWebpackPlugin那邊要怎麼設置呢?

    作者回复: 您好,HtmlWebpackPlugin 会根据hash值变化的,具体可以参考官方文章 https://webpack.js.org/plugins/html-webpack-plugin/

    2022-12-22归属地:中国台湾
  • 我只想要简单的小幸福👣
    完整代码地址打不开,能换一个别的地址吗

    作者回复: 您好,源码是放在GitHub仓库里的,是能打开的,可能你遇到网络问题。

    2022-12-20归属地:天津
  • 阿阳
    在 test: /\.(css|less)$/中,less文件也能直接用css-loader进行处理嘛?不是需要用less-loader进行处理么?

    作者回复: 您好,首先css-loader和less-loader的功能不一样。 less-loader是将less代码转成css代码,最后将css代码交给css-loader。 css-loader是将css代码进行解析处理,例如解析里面嗯@import依赖等等,最后编译成字符,和输出整体的css内容。

    2022-12-04归属地:江苏
  • 阿阳
    windows环境下,设置环境变量NODE_ENV需要用到cross-env这个包吧?

    作者回复: 您好,你提到的Windows环境的NODE_ENV配置,是需要用到cross-env这个模块来辅助处理的。由于我是用MacOS系统,能直接配置NODE_ENV,所以没用到cross-env。

    2022-12-04归属地:江苏
    2
  • 派大心
    还有老师,我想补充一点点,在line 50 if语句前,可以申明config,let config;

    作者回复: 您好,谢谢提醒,这个是代码小遗漏,的确需要 let 或 var 来声明,要不然容易造成“变量提升”

    2022-12-03归属地:北京
    3
收起评论
显示
设置
留言
16
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部