webpack打包后的效果_如何解决webpack打包后,dist文件过大的问题

我们在用vue.js写单页面应用时,会出现打包后的JavaScript包非常大,影响页面加载。

我们都知道图片的懒加载。当图片不出现在视口时,我们不加载这张图片。那么我们是不是可以实现,路由的懒加载。当我们用到某个路由后,才去加载对应的组件,这样就会更加高效。

实现这样的功能,我们需要结合Vue的异步组件和webpack的code splitting feature。

下面开始研究路由的懒加载如何实现,以及它的效果。

首先,我们创建一个webpack模板的项目

vue init webpack my-project

cd my-project

npm install

我们添加路由,看下默认情况下,单页应用如何加载js。

我们先在src/components/创建一个文件New.vue

vue-router懒加载

new doc

export default { }

h1 {

color: red;

}

在App.vue 文件添加两个链接

![](./assets/logo.png)

Go to hello

Go to new

在src/router/index.js 文件中添加路由

import Vue from 'vue'

import Router from 'vue-router'

import Hello from 'components/Hello'

import New from 'components/New'

Vue.use(Router)

export default new Router({

routes: [{

path: '/',

name: 'Hello',

component: Hello

}, {

path: '/new',

name: 'New',

component: New

}]

})

现在我们打包文件

npm run build

打包完后,打开页面(如何不能打开,请自行解决。我配置了nginx,所以可以直接打开)

http://localhost/mall/dist/index.htm#/

我们看下,打开网页后,加载了哪些资源。

97f72141bd89

1.png

现在,我们切换路由

http://localhost/mall/dist/index.htm#/new

我们发现,没有新的资源加载。

因为一次性加载了所有js。如果你的应用很大,那么这个时候应用打开会很慢。

用路由懒加载,看看效果如何

修改src/router/index.js 文件

import Vue from 'vue'

import Router from 'vue-router'

// import Hello from 'components/Hello'

// import New from 'components/New'

Vue.use(Router)

// 把路由对应的组件定义成异步组件

const Hello = resolve => {

require.ensure(['components/Hello.vue'], () => {

resolve(require('components/Hello.vue'))

})

}

const New = resolve => {

require.ensure(['components/New.vue'], () => {

resolve(require('components/New.vue'))

})

}

export default new Router({

routes: [{

path: '/',

name: 'Hello',

component: Hello

}, {

path: '/new',

name: 'New',

component: New

}]

})

打包成功后,再打开页面

http://localhost/mall/dist/index.htm#/

看下此时加载的资源

97f72141bd89

2.png

对比上一次,我发现此时加载的资源多了一个js文件。而这个js文件的内容包含了Hello.vue文件的所有内容。

下面我们切换路由

http://localhost/mall/dist/index.htm#/new

97f72141bd89

3.png

发现新加载了一个js文件。打开这个js,发现其中包含了,New.vue文件的所有内容。

现在,我们实现了按需加载组件,而不是一次性将所有js加载完。不必担心一次性加载完,导致页面迟迟打不开的情况。

修改New.vue文件

//增加了axios模块的引用

import axios from 'axios'

console.log(typeof axios, 11)

export default {

name: 'hello',

data() {

return {

msg: 'Welcome to Your Vue.js App'

}

}

}

打包后,打开文件

http://localhost/mall/dist/index.htm#/new

你会发现用来异步加载New组件的js增大了很多,这是因为其中包含了axios的代码。

好了,路由懒加载的实现就这么简单。更多内容请看官方文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目经过webpack打包后会生成一个dist文件夹,其中包含了经过处理和压缩后的最终产物。dist文件夹下的内容是部署到服务器或发布到线上环境的静态资源文件dist文件夹的结构取决于webpack的配置以及项目的需求。通常它会包含一个或多个JS文件,包括应用的逻辑代码和依赖的第三方库,以及一个或多个CSS文件,包含项目的样式代码。此外,还会包含一些字体文件、图片或其他静态资源,这些文件在构建过程中被处理并复制到dist文件夹中。 在项目开发过程中,dist文件夹不会被直接修改,而是由webpack根据配置和源代码生成。webpack处理过程中会进行代码的压缩、合并、混淆等操作,以减小文件大小并提高加载速度。此外,webpack还会处理一些前端框架或工具的特定需求,例如处理jsx代码、提取公共模块等。 通过打包后的dist文件,我们可以快速查看打包后的效果,验证代码是否正确地被处理和运行。同时,dist文件也是发布项目到线上环境的基础,我们可以将dist文件夹中的内容直接上传到服务器进行部署,并通过浏览器访问项目的最终版本。 总的来说,dist文件夹是经过webpack处理后的项目产物,包含了所有打包后的静态资源文件。它具有优化过的代码和资源,适合部署和发布到线上环境使用,能够提供更好的性能和用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值