nuxt图片压缩优化、nuxt按需引入element

编程入门 行业动态 更新时间:2024-10-09 00:45:21

nuxt图片压缩优化、nuxt<a href=https://www.elefans.com/category/jswz/34/1766832.html style=按需引入element"/>

nuxt图片压缩优化、nuxt按需引入element

本文目录

  • 一、nuxt开发图片压缩优化
  • 二、nuxt按需引入element-ui
  • 三、nuxt中使用aos动画库
  • 四、scss配置文件(变量、样式)

一、nuxt开发图片压缩优化

1、运行命令npm install --save-dev @aceforth/nuxt-optimized-images:安装开发时压缩图片到依赖。
2、在nuxt中写入如下代码:

buildModules: ['@aceforth/nuxt-optimized-images',],optimizedImages: {optimizeImages: true}


3、接着安装你需要压缩到图片格式

Optimization PackageDescriptionProject Link
imagemin-mozjpegOptimizesJPEG imagesLink
imagemin-pngquantOptimizes PNG imagesLink
imagemin-optipngAlternative for optimizing PNG imagesLink
imagemin-gifsicleOptimizes GIF imagesLink
imagemin-svgoOptimizes SVG images and iconsLink
webp-loaderOptimizes WebP images and can convert JPEG/PNG images to WebP on the fly (WebP resource query)Link
lqip-loaderGenerates low quality image placeholders and can extract the dominant colors of an image (lqip resource query)Link
responsive-loaderCan resize images on the fly and create multiple versions of it for a srcSet. Important: You need to additionally install either jimp (node implementation, slower) or sharp (binary, faster)Link
sqip-loaderLoads images and exports tiny SQIP previews as image/svg+xml URL-encoded dataLink

我这里图片都是png格式的所以我安装png的:

npm install --save-dev imagemin-pngquant

4、打包,我这里nuxt直接是生成静态文件的,所以输入命令:npm run generate
5、效果,这张图是没压缩前的图片大小:

可以看到快49M了。

下面这张图就是压缩过后的了:

可以看到比原来小了接近一半。


二、nuxt按需引入element-ui

1、安装按需引入的插件:
命令:npm i babel-plugin-component -D
2、在nuxt.config.js中写入配置:

babel: {plugins: [['component',{libraryName: 'element-ui',styleLibraryName: 'theme-chalk'}]]}

3、在plugins/element-ui.js中写入你用到的组件:

import Vue from 'vue';
import { Drawer, Form, FormItem, Input, Row, Col } from 'element-ui';Vue.use(Drawer).use(Form).use(FormItem).use(Input).use(Row).use(Col);

三、nuxt中使用aos动画库

1、运行命令安装npm i aos
2、在plugins文件夹下创建aos.js文件,写入代码:

import AOS from 'aos';
import "aos/dist/aos.css";export default ({app}) => {app.AOS = new AOS.init();
}

3、接着在nuxt.config.js中进行配置:
{ src: '@/plugins/aos.js', ssr: false },

在你需要用到的dom中去使用:

<div  data-aos="zoom-out" data-aos-offset="100"  data-aos-easing="ease-in-sine" data-aos-duration="750"></div>
属性属性属性默认值
aos-offset是立刻触发动画还是在指定时间之后触发动画200120
aos-duration动画持续时间600400
aos-easing动画的easing动画效果ease-in-sineease
aos-delay动画的延迟时间3000
aos-anchor锚元素。使用它的偏移来取代实际元素的偏移来触发动画#selectornull
aos-anchor-placement锚位置,触发动画时元素位于屏幕的位置top-centertop-bottom
aos-once动画是否只会触发一次,或者每次上下滚动都会触发truefalse

四、scss配置文件(变量、样式)

assets文件夹下新建scss文件夹,新建_variables.scss写入:

$flex-jc: (start: flex-start,end: flex-end,center: center,between: space-between,around: space-around,evenly: space-evenly
);$flex-ai: (start: flex-start,end: flex-end,center: center,stretch: stretch,
);$ps: (ab: absolute,re: relative,sticky: sticky
);$colors: ("primary": #338AFF,"white": #ffffff,"black-1": #333333,"black-2": #2A2A2C,"black-3": #4F4F4F,"gray-2": #F4F4F4,"gray-3": #BDBDBD,"gray-1": #828282,"black": #000000,"gray-4": #F5F5F5,
);$font-sizes: (16: 16px,
);$spacing-types: (m: margin,p: padding,
);
$spacing-directions: (t: top,r: right,b: bottom,l: left,
);
$spacing-sizes: (10: 10px,12: 12px,20: 20px,54: 54px,100: 100%,);$letter-sizes: (10: 10px,
)

scss文件夹,新建reset.scss写入:

@import './_variables.scss';html,
body {margin: 0;padding: 0;-webkit-font-smoothing: antialiased;width: 100%;overflow-x: hidden;
}ul,
p {margin: 0;padding: 0;
}ul li {list-style: none;
}h1,
h2,
h3,
h4,
h5,
h6 {margin: 0;
}// cursor pointer
.cs-p {cursor: pointer;
}// flex style
.d-flex {display: flex;
}.flex-wrap {flex-wrap: wrap;
}.fd-column {flex-direction: column;
}@each $key,
$value in $flex-jc {.jc-#{$key} {justify-content: $value;}
}@each $key,
$value in $flex-ai {.ai-#{$key} {align-items: $value}
}// position absolute relation
@each $key,
$value in $ps {.p-#{$key} {position: $value;}
}// font color
@each $colorKey,
$color in $colors {.text-#{$colorKey} {color: $color;}
}//font size
@each $sizeKey,
$size in $font-sizes {.fs-#{$sizeKey} {font-size: $size}
}// margin padding
@each $typeKey,
$type in $spacing-types {@each $sizeKey,$size in $spacing-sizes {// .m-1 p-1  {margin: 10px} {padding: 10px}.#{$typeKey}-#{$sizeKey} {#{$type}: $size}}// .mx-1 .my-1 .px-1 .py-1@each $sizeKey,$size in $spacing-sizes {.#{$typeKey}x-#{$sizeKey} {#{$type}-left: $size;#{$type}-right: $size;}.#{$typeKey}y-#{$sizeKey} {#{$type}-top: $size;#{$type}-bottom: $size;}}// .mt-1 @each $directionKey,$direction in $spacing-directions {@each $sizeKey,$size in $spacing-sizes {.#{$typeKey}#{$directionKey}-#{$sizeKey} {#{$type}-#{$direction}: $size;}}}
}// width
@each $sizeKey,
$size in $spacing-sizes {.w-#{$sizeKey} {width: $size}
}// border .border-top
@each $dir in (top, right, bottom, left) {.border-#{$dir} {border-#{$dir}: 2px solid map-get($colors, 'gray-1')}
}// background-color .bg-linear
@each $bgKey,
$bgValue in $colors {.bg-#{$bgKey} {background: $bgValue}
}.v-modal {display: none;
}#__nuxt,
html,
body {min-width: 1440px;
}.b3size-cover {background-repeat: no-repeat;background-size: cover;background-position: center;
}.b3size-contain {background-repeat: no-repeat;background-size: contain;background-position: center;
}@media only screen and (max-width: 767px) {#__nuxt,html,body {min-width: 100%;}* {-webkit-tap-highlight-color: transparent;}
}// nuxt 路由切换动画
.page-enter-active,
.page-leave-active {transition: all 0.5s;
}.page-enter,
.page-leave-active {opacity: 0;transform: translateX(80px);}

如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。

更多推荐

nuxt图片压缩优化、nuxt按需引入element

本文发布于:2024-03-09 19:48:44,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1725956.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:按需   图片   nuxt   element

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!