百科狗-知识改变命运!
--

vite + vue3 + ts 安装 scss + qs + nprogress - vue3 项目实战

百变鹏仔1年前 (2023-11-21)阅读数 11#技术干货
文章标签进度条

vite + vue3 + ts 安装 scss + qs + nprogress

安装 css 预处理

由于 Vite 的目标仅为现代浏览器,因此建议使用原生 CSS 变量和实现 CSSWG 草案的PostCSS插件(例如 postcss-nesting)来编写简单的、符合未来标准的 CSS。

话虽如此,但 Vite 也同时提供了对.scss.sass.less.styl.stylus文件的内置支持。没有必要为它们安装特定的 Vite 插件,但必须安装相应的预处理器依赖:

//.scss and .sass
npm install sass -D


qs包

vite + vue3 + ts 安装 scss + qs + nprogress - vue3 项目实战

qs是一个增加了一些安全性的查询字符串解析和序列化字符串的库。https://www.npmjs.com/package/qs

cd /var/web/www/exampleHome

npm install qs

若vue 使用 ts版,还需要下载 @types/qs
npm install @types/qs -D


qs.stringify()

qs.stringify()作用是将对象或者数组序列化成URL的格式。

对象序列化

let obj = {
  id: 1,
  name: 'joke',
  age: 18,
}

qs.stringify(obj)

//格式化结果
'&id=1&name=joke&age=18'


数组序列化

let arr = [1,2,3]
qs.stringify({a:arr})

//格式化结果
'arr[0]=1&arr[1]=2&arr[2]=3'

上面的等同,如下方式。也是默认方式arrayFormat:'indices'

let arr = [1,2,3]
qs.stringify({a:arr}, {arrayFormat: 'indices'})

//格式化结果
'arr[0]=1&arr[1]=2&arr[2]=3'


indices:false,去除默认处理的方式。

let arr = [1,2,3]
qs.stringify({a:arr},{indices:false});

//格式化结果
'arr=1&arr=2&arr=3'


let arr = [1,2,3]
qs.stringify({a:arr}, {arrayFormat: 'brackets'})

//格式化结果
'a[]=1&a[]=2&a[]=3'


let arr = [1,2,3]
qs.stringify({a:arr}, {arrayFormat: 'repeat'})

//格式化结果
'a=1&a=2&a=3'


qs.parse()

qs.parse()则就是反过来啦,将我们通过qs.stringify()序列化的对象或者数组转回去。

let url = '&id=1&name=joke&age=18'
qs.parse(url)

//格式化结果
{id:1,name:joke, age:18 } 


nprogress

nprogress是页面跳转是出现在浏览器顶部的进度条。
官网:http://ricostacruz.com/nprogress
github:https://github.com/rstacruz/nprogress

安装

cd /var/web/www/exampleHome

npm install nprogress 

如果使用 ts,还需安装 @types/nprogress
npm install @types/nprogress -D



引用

//引用方式
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'


NProgress.start()    // 开始
NProgress.set(0.4)   // 设置进度,0-1
NProgress.inc()      // 让进度条增加
NProgress.done()     // 完成


(1)百分比:通过设置 progress 的百分比,调用set(n)来控制进度,其中 n 的取值范围为 0-1。

NProgress.set(0.0);    
NProgress.set(0.4);
NProgress.set(1.0); 

(2)递增:要让进度条增加,只要调用inc()。这会产生一个随机增量,但不会让进度条达到 100%。此函数适用于图片加载或其他类似的文件加载。

NProgress.inc();

(3)强制完成:done()设定true,强制使进度条显示满格,即使它开始状态,没有被显示出来。

NProgress.done(true);

(4)minimum:设置最低百分比

NProgress.configure({ minimum: 0.1 });

(5)template:改变进度条的 HTML 结构。为保证进度条能正常工作,需要元素拥有role='bar'属性。

NProgress.configure({
   template:"
...
" });

(6)ease:调整动画设置,ease 可传递 CSS3 缓冲动画字符串(如 ease、linear、ease-in、ease-out、ease-in-out、cubic-bezier)。speed为动画速度(单位 ms)。

NProgress.configure({ ease: 'ease', speed: 500 });



使用

路由中使用

router.beforeEach((to, from , next) => {
   NProgress.start();   //每次切换页面时,调用进度条
   next();    //没有 next() 页面不会跳转
});

router.afterEach(() => {
   NProgress.done();   // 在即将进入新的页面组件前,关闭掉进度条
})


封装axios中使用

//在 request 拦截器中显示进度条 Nprogress.start()
axios.interceptors.request.use(config => {
   NProgress.start();   //请求开始时显示进度条
   return config
})

//response中完成进度条 Nprogress.done()
axios.interceptors.response.use(config => {
   NProgress.done();   //服务响应时完成进度条
   return config
})


自定义进度条颜色

在 App.vue 中的 style 中设置进度条颜色,为红色。

#nprogress .bar {
  background: red !important;
}


配置

NProgress.configure({
   easing: 'ease',  // 动画方式,和css动画属性一样(默认:ease)
   speed: 500,  // 递增进度条的速度,单位ms(默认: 200)
   showSpinner: false,  // 是否显示加载ico
   trickle: true,  //是否自动递增
   trickleSpeed: 200,  // 自动递增间隔
   minimum: 0.3,   // 初始化时的最小百分比,0-1(默认:0.08)
   parent: '#container'  //指定此选项以更改父容器(默认:body)
})

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)