webpack:vue项目的打包优化

webpack 是一个模块打包器。webpack 的主要目标是将 JavaScript 文件打包在一起,打包后的文件用于在浏览器中使用。

一、打包

  • 指令: npm run build
  • 结果:
    1.会将项目中 src 目录下所有的文件进行打包,打包到 dist 目录下
    2.目录结构:
    • index.html 单页面应用的 html 文件
    • static 当前单页应用中所有的静态资源
      • css: 当前项目中用到的所有样式文件打包后的结果
        • app.css 打包后的所有 css 文件
        • app.css.map 打包后的映射文件
      • fonts:将所有的字体打包到这个目录
      • js:将所有的 js 代码打包到这个目录下
        • app.js 打包 js 文件 和 组件
        • vender.js 将当前项目用到的所有的第三方包全部进行打包。
          3.直接发布到服务器上的
  • 缺点:
    首屏加载缓慢: 第一次打开页面时加载慢(因为打包后,会将所有的文件打包到统一的 css, js 文件中,第一次请求时,页面就将些文件全部加载好了)
  • 首屏优化:
    • 概念:当我们第一次打开页面时,提升加载速度。
    • 原理:由于默认打包时会将所有的文件打包到固定的 js 文件中,加载页面时会将所有内容进行加载,所以慢。可以将这些文件分开打包
      *方案:
      1)路由的懒加载
      方式:
      将所有路由导入的方式从:
      import Right from ‘@/components/right.vue’
      改为:
      var Right = ()=> import(’@/components/right.vue’)
      结果:
      将来所有的路由文件会单独生成一个 js 文件,不会统一打包到 App.js 中
      2)第三方包使用 CDN 方式加载
      方式:
      第一步:在单页中引入所需要的文件(css, js)
   <!-- 引入样式 -->
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
   <!-- 引入组件库 -->
	<script src="https://unpkg.com/element-ui/lib/index.js"></script>

第二部:在配置文件中配置 第三方包 的相关信息

 externals: {
	'element-ui' : 'ELEMENT' // 键(第三方包名): 值(起的别名)
	'vue': 'Vue'
 }

二、webpack 手动搭建项目结构:

官网: webpack 1.0:https://webpack.github.io/
最新官网:https://www.webpackjs.com/

1.概念: JavaScript 应用程序的静态模块打包器
2.作用:

可以从入口文件开始将当前文件引用的所有文件进行打包,将内容生成到统一的 js,css, 图片,字体,sass 文件中。

3.核心概念
loader: 帮助 webpack 打包所有的资源(img, css,js,font,sass,less)
插件: 帮助 webpack 提供一些额外功能(用服务器方式打开项目,热更新。。。)
4. 使用webpack:
1)创建项目
a. 生成 package.json 文件
npm init
b. 完成了一个计算器功能
c. 将方法封装到一个单独的模块中:calc.js

三、webpack 的配置文件项(webpack.config.js):

说明: 必须创建一个文件名为: webpack.config.js
入口文件:entry: ‘./src/index.js’
出口文件

    output: {
        path: '',
        filename: ''
    }

配置模式:

    mode: 
            development 
            production

配置映射文件:

     devtool:
            inline-source-map: 将源代码信息保存到 build.js 中
            source-map:将源代码信息保存到 build.js.map 中

配置 resolve:

  extensions: 配置可以省略的后缀名
         alias:设置别名

四、webpack 的打包

1)js 模块化打包
目的:为了能够使用 js 代码模块化
步骤:
1)全局安装 webpack
全局下载: npm i webpack -g
2)使用 webpack 将我们的项目进行打包
在项目目录下执行 cmd 命名: webpack ./main.js
3)由于 webpack 更新太多,不建议使用全局安装,建议使用本地安装
指令:npm i webpack --save-dev
找到 package.json 文件,添加一个打包指令:
“script”: {
“build”: “webpack ./src/main.js”
}
2)打包 css 样式:
步骤:
a. 安装并添加 样式的 loader:
npm install --save-dev style-loader css-loader
b. 配置

            +   module: {
                +     rules: [
                +       {
                +         test: /\.css$/,
                +         use: [
                +           'style-loader',
                +           'css-loader'
                +         ]
                +       }
                +     ]
                +   }   

3)打包 sass 样式
步骤:
a. 书写 sass 文件
b. 安装 loader
c. 配置
4)打包 less 样式
步骤:
a. 书写 less 文件
b. 安装 loader
npm install --save-dev less-loader less
c. 配置

 module: {
     rules: [{
         test: /\.less$/,
         use: [{
             loader: "style-loader" // creates style nodes from JS strings
         }, {
             loader: "css-loader" // translates CSS into CommonJS
         }, {
             loader: "less-loader" // compiles Less to CSS
         }]
     }]
 }

5)打包图片:
步骤:
a. 安装 Loader
npm install --save-dev file-loader
b. 配置

 {
     test: /\.(png|svg|jpg|gif)$/,
     use: [
       'file-loader'
     ]
   }

6)打包 js :将 es6 转为低版本语法
步骤:
a. 安装 loader
cnpm install babel-loader@8.0.0-beta.0 @babel/core @babel/preset-env --save-dev
b. 配置

 {
   test: /\.js$/,
   exclude: /(node_modules|bower_components)/,
   use: {
       loader: 'babel-loader',
       options: {
       presets: ['@babel/preset-env']
       }
   }
 }

7)打包字体
步骤:
a. 下载 loader (它的 loader 与图片一样, 所以不下载)
b. 配置

 {
   test: /\.(woff|woff2|eot|ttf|otf)$/,
   use: [
     'file-loader'
   ]
 }

五、插件:(了解)

1)HtmlWebpackPlugin:
作用:自动生成 index.html
步骤:
1)下载插件
npm install --save-dev html-webpack-plugin
2)配置
const HtmlWebpackPlugin = require(‘html-webpack-plugin’);
plugins: [
new HtmlWebpackPlugin({
title: ‘Output Management’
})
]
2)CleanWebpackPlugin
作用:每次打包之前,自动清除之前生成的文件
步骤:
1)下载插件
npm install clean-webpack-plugin --save-dev
2)配置
const CleanWebpackPlugin = require(‘clean-webpack-plugin’);
new CleanWebpackPlugin([‘dist’])
3)webpack-dev-server:
作用:将项目以服务的方式打开
步骤:
1)下载插件
npm install --save-dev webpack-dev-server
2)配置: webpack.config.js
devServer: {
contentBase: ‘./dist’
}
3)配置:package.json
script: {
“start”: “webpack-dev-server --open”
}

六、vue-loader

作用:在 webpack 中加载 vue 组件
步骤:
1)下载插件
npm i vue-loader vue-template-compiler --save-dev
2)配置 config
打包规则

  {
     test: /\.vue$/,
     loader: 'vue-loader'
 },

添加插件
new VueLoaderPlugin()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了优化webpack打包vue项目,你可以考虑以下几个方面: 1. 使用代码分割:将代码拆分成多个小块,按需加载,减小初始加载的文件大小。可以使用webpack的SplitChunksPlugin插件来进行代码分割。 2. 使用懒加载:对于一些不常用或者较大的模块,可以使用懒加载的方式来延迟加载,减小初始加载的文件大小。可以通过vue-router的异步路由或者webpack的import函数来实现。 3. 压缩代码:使用webpack的UglifyJsPlugin插件来压缩代码,减小文件体积。 4. 使用缓存:通过设置webpack的output.filename和output.chunkFilename选项来生成带有hash的文件名,以便浏览器能够缓存文件,减少重复请求。 5. 图片优化:将图片进行压缩和转换为base64编码,以减小文件大小。可以使用url-loader或者file-loader插件来处理图片。 6. 清除无用代码:使用webpack的Tree Shaking特性去除未使用的代码,减少输出文件体积。 7. 配置合理的Devtool选项:在开发环境中使用sourcemap来方便调试代码,而在生产环境中使用cheap-source-map或者none等选项来减小构建时间和文件大小。 8. 优化打包时的性能:使用happypack插件来多线程处理webpack的loader和babel-loader,使用ParallelUglifyPlugin插件来并行压缩代码,提高构建速度。 以上是一些常见的webpack打包vue项目优化方法,你可以根据具体情况选择适合你项目优化策略。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值