您的位置:

关于nuxtjs配置webp的信息

关于nuxtjs配置webp的信息

更新:

本文目录一览:

NUXT项目打包优化策略

用nuxt开发完项目之后,开开心心打包扔上服务器准备收工,却没多久,测试童鞋遗憾的告诉我,压测50并发未通过。what?好吧。咱们再接下来老老实实的研究怎么压缩打包优化性能。

性能优化,无外乎那几个方案:文件压缩,文件缓存,CDN,DNS 预解析。。。

这里我们首先看一下不加任何优化的项目,打包后的分布:

这里能看到element-ui占了绝大部分的打包空间,是因为全局引入了element-ui,所以即使我们只使用了一部分的elemnt组件,但仍然把整个element给打包进来了。

所以这里有一个可以优化的点: 只引入element使用的组件,这样在打包的时候只需要打包使用的组件,体积就会减小很多 。

我们再来看看这么处理之后,我们打包出来的效果:

可以看出,我们减少了将近 400kb 的体积,效果十分显著。

好了,我又自信满满的把包丢到服务器上,准备金盆洗手。?

然鹅没过多久,运维童鞋发过来一张图把我打回原点。

我看了一下vendor.app.js,足有501kb,难怪会阻塞?♀️好吧,这里应该使用上文件压缩这杆大枪了。

nuxt本身就是基于webpack的,正好安装compression-webpack-plugin来对文件进行压缩。

首先安装npm install compression-webpack-plugin

然后在nuxt.config.js中:

const CompressionPlugin = require('compression-webpack-plugin');

module.exports={

    build: {

        plugins: [

          new CompressionPlugin({

            test: /\.js$|\.html$|\.css/, // 匹配文件名

            threshold: 10240, // 对超过10kb的数据进行压缩

            deleteOriginalAssets: false // 是否删除原文件

          })

        ],

    }

}

这样打包出来的大小虽然没变,但是点击.nuxt-dist-client中你会发现

观察发现gz打包后,较原来的文件减少了3/4的体积。有了这些gz后缀的文件,再配合nginx打开gzip服务。我想这回应该可以冲过50并发了吧,说不定200并发都没问题???

好了,我这回真的自信满满的把包丢到服务器上,通知测试童鞋再次压测,果不其然,测试童鞋过了一会回复:50并发跑5次无异常。??我大气说,上100!我翘着得意的二郎腿,等着好消息再次到来。过了一会,果不其然!测试童鞋告诉我,100并发阻塞。原因同上,出在了vendor.app.js上?

这里我说一下vendor.app.js打包之后的体积是144kb。然鹅在高并发下,表现还是不理想,于是乎我只能上网去到处搜索解决方案,毕竟po主的webpack知识也就那么一勺水的深度?♀️?♀️

这里还真让我找到了一个台湾的网站,可见参考链接第三条。

splitChunks: 设定 Chunks 的最大和最小 size。

在nuxt.config.js中加入:

module.exports={

    build: {

        optimization: {

              splitChunks: {

               minSize: 10000,

                maxSize: 250000

              }

        },

    }

}

打包,观察打包结果:

可以看到虽然包体积虽然没变,但是像vendor.app.js这种单个体积大的被拆分成n个体积小的文件了。

这回终于是可以突破100并发5次无异常,达成并发要求了????

总结一下,其实po主也不是什么webpack大神,也是摸爬滚打整出来的,大家如果能有什么更好的优化建议或者指教,请多多交流,不对之处我会改正!

参考: 

Nuxt 项目性能优化调研

NUXT项目的性能优化

SplitChunks Lodash Vuetify tree shaking

nuxt-generate 静态站

nuxt generate部署静态站

在nuxt.config.js配置页面路径

默认情况下,运行nuxt generate将为每个路由创建一个目录并生成index.html文件。

在nuxt.config.js里generate选项里配置

subFolders: flase

设置为false时,将根据路由路径生成HTML文件

部署后项目会生成dist目录,直接打开对应的html文件 ,可能会出现图片不显示,不用管 部署到服务器后就不会有这个问题。

Vue-awesome-swiper使用教程

github地址:

Ⅰ. 什么是Nuxt.js:

Nuxt.js 是一个基于 Vue.js 的通用应用框架,通过对客户端/服务端基础架构的抽象组织,预设了利用 Vue.js 开发服务端渲染的应用所需要的各种配置。(开箱即用)

官方地址:

Ⅱ. Nuxt安装使用

Ⅲ. Nuxt模板目录结构分析

重点关注 :components、layouts、pages、plugins、nust.config.js目录及文件

Ⅳ.Nuxt路由

➀.pages目录结构自动生成对应的路由配置

➁路由跳转

注意 :不能用a标签代替nuxt-link组件,虽然最终的显示效果一样,但是a标签会刷新页面

③动态路由

④路由参数校验

Nuxt.js 可以让你在动态路由对应的页面组件中配置一个 validate 方法用于校验动态路由参数的有效性。该函数有一个布尔类型的返回值,如果返回true则表示校验通过,如果返回false则表示校验未通过。

⑤嵌套路由

Ⅴ.布局组件

特殊的布局组件 :error布局组件(error是关键字,只能取这个名字)

Ⅵ.设置全局样式

Ⅶ.ElementUI使用

测试的时候不要范如下错误 :

Ⅷ.发送请求

➀.生命周期函数:

在nuxt中,只有created以及beforeCreate两个能够在服务端正常使用

但是发异步请求不能在created生命周期函数中去发送,因为它会在前端执行(打印一下,发送前端和服务器端都会有打印信息)

那么如何发送异步请求呢?

➁.asyncData的方法:可以在服务端或路由更新之前被调用, 需要注意这个函数中 不能 使用 this

③. axios的使用

Ⅸ.SEO优化

➀.全局优化:在nuxt.config.js配置文件中修改

➁.局部优化:去每个页面直接加入head() 方法

Ⅹ.实战项目:豆瓣电影小案例

➀.案例源码:

复制这段内容后打开百度网盘手机App,操作更方便哦

链接:

提取码:iqjb

➁.获取源码后项目跑动

后记: 解决SEO问题不一定非得用服务端渲染来处理,特别是项目已经开发完毕,突然告诉你添加个SEO优化,这时候可以考虑vue-meta-info ,官方地址:

Vue SSR 项目 Nuxt.js 框架之《如何引入第三方UI框架element-ui》

在项目开发中引入第三方 UI框架 再平常不过,那 nuxt 该如何引入呢?我们以 Elemeng-ui 为例,具体看下在 nuxt 中配置与使用的步骤是怎样的。

需在 plugins 文件夹里创建一个 element-ui.js 文件,内容如下:

在 nuxt 项目中如何使用 scss ?与 Vue 中使用的有和不同?也简单,只是配置上略有不同,使用上没有不同。先安装 node-sass sass-loader ,如下:

安装成功后,就可以在页面里使用 scss 了,无需任何配置,如下:

第一步:安装 @nuxtjs/style-resources

第二步:配置 nuxt.config.js

项目重启后就可以了,欢迎留言 评论

nuxt.js 简述

vue单页面应用渲染是从服务器获取所需js,在客户端将其解析生成html挂载于

id为app的DOM元素上,这样会存在两大问题。

除此之外,nuxt与vue还有一些其他方面的区别。

下图为关于nuxt的简单概述

vue文件中可直接使用

sass文件如需解析,nuxt.config.js中配置css属性

封装axios,解决每个请求前加baseURL

plugins/axios.js

index.vue

为避免每个页面都引入moment,执行 moment.locale('zh-cn') ,可将其定义为全局方法

icon.png文件存放在static文件夹下,nuxt.config.js中配置head属性

中间件存放于middleware文件夹下,按使用场景可分为全局中间件和单页面中间件

中间件执行流程顺序:

nuxt.config.js - 匹配布局 - 匹配页面

按照index.vue通过 require('mini-toastr') 引入miniToastr,运行程序报错如下

打印miniToastr发现为一Module对象,init挂载在其default属性上

所以修改引入方法为

为什么需要require().default

关于如上介绍,测试关于两种模块的导出方法

方式一:export default

新建test.js文件

vue页面导入

此时 require('~/plugins/con.js') 打印为

方式二:module.exports

此时 require('~/plugins/con.js') 打印为

关于nuxtjs配置webp的信息

本文目录一览: 1、NUXT项目打包优化策略 2、nuxt-generate 静态站 3、Vue-awesome-swiper使用教程 4、Vue SSR 项目 Nuxt.js 框架之《如何引入第三方

2023-12-08
关于java学习笔记良葛格的信息

2022-11-11
关于已前的学习笔记java的信息

2022-11-18
前端学习笔记

2023-05-12
关于java对话框的信息

2023-01-04
关于java基础知识笔记1的信息

2022-11-20
关于javajsptomcatmysql的信息

本文目录一览: 1、如何在服务器上配置JSP,jsp的服务器到底怎么配置啊? 2、jsp 跟tomcat和mysql有什么联系,怎么用?越详细越好!谢谢 3、怎么用jsp连接mysql数据库 4、如何

2023-12-08
关于python学习第四次笔记的信息

2022-11-08
关于jfcio的信息

2022-11-28
htmljs编程笔记(html代码笔记)

本文目录一览: 1、html代码和JS代码有什么区别 2、如何在html中调用js函数 3、JavaScript学习笔记之数组基本操作示例 4、HTML5初学者笔记 5、《web前端笔记7》js字符—

2023-12-08
关于java性能的小笔记(java代码性能分析)

2022-11-12
关于python学习笔记十三的信息

2022-11-19
印象笔记记录java学习(Java成长笔记)

2022-11-12
发篇java复习笔记(java课程笔记)

2022-11-09
重学java笔记,java笔记总结

2022-11-23
java笔记,大学java笔记

2022-11-28
关于java配置的信息

2022-12-02
关于javawin10的信息

2023-01-06
java学习笔记(java初学笔记)

2022-11-14
信息记录的php代码如何编写,php笔记源码

2022-11-30