vue常用

axios

// 使用时直接用axios即可, 设置在main.js中
import axios from 'axios'
axios.defaults.baseURL = "http://127.0.0.1:8000/"
Vue.prototype.axios = axios
Vue.config.productionTip = false

elmentui?

cnpm i element-ui -S 	# 安装elemntui
// 使用时直接用elemntui即可, 设置在main.js中
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(ElementUI)


vue中修改包的下载位置
# 将下载地址改为淘宝镜像
npm set registry https://registry.npm.taobao.org

拦截器

// 拦截器
axios.interceptors.request.use(
  config => {
    if (localStorage.getItem('token')) {
      config.headers['Authorization'] = 'JWT ' + localStorage.getItem('token')
    }
    return config
  },
  error => {
    return Promise.reject(error.response)
  })

手写请求时携带headers
var token = localStorage.getItem('token')
this.axios.get('sadmin/test/',{headers: { "Authorization": token }}).then(res=>{
  if(res.data == 401){
  alert('登录后访问')
  }
})

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uFcwpoCp-1662365388151)(C:\Users\ZHY\Desktop\新建文件夹\all_picture\手动添加headers.png)]

拦截器请求自动带headers
// 拦截器 设置好直接生效只要是请求就在请求时带上本地浏览器里面的token值,设置在main.js中
// 拦截器的一些想法,能否控制是否需要拦截???????????
axios.interceptors.request.use(
  config => {
	//某些接口去除token(params里面noToken值为true的时候,传递给后端的token值为空)
    if(config.params && config.params.noToken){
      return config
    }
    if(localStorage.getItem('token')){
      config.headers['Authorization'] = 'jwt '+localStorage.getItem('token');
    }
    return config;
  },
  error => {
    return Promise.reject(error.response);
  });

// 下面两个拦截器是待确认的,需要修改的
// axios.interceptors.request.use(function(config){
//   console.log(config)
//    console.log('请求式拦截器')
//   return config
// },function  err(err){
//   console.log(err)
// })
// 
// axios.interceptors.response.use(function (res){
//   console.log(res)
//   console.log('响应式拦截器')
//   return res
// },function err(err){
//   console.log(err)
// } )

白名单

// vue中的白名单
// 注意 路由写的是后均按小写 ,否则或出现在白名单中找不到路由出现死循环
// 想法: 怎么加上验证token值????????????
var white = ['/','/login']
router.beforeEach((to,from,next)=>{
  console.log(white.indexOf(to.path))
  if(white.indexOf(to.path)>=0){
    next()
  }else{
    var userid=localStorage.getItem('userid')
    if(userid){
      next()
    }else{
      next('/login')
    }
  }
})
//待确认的 是用于封装axios的get 和 post
import  axios from "axios"
export function get(url,params){
  return axios.get(url,params)
}
    export function post(url,data){
  return axios.post(url,data)
}

// axios.get('http://localhost:8080/#/day09_axios',)
//   .then(res=>{console.log(res)})
//   .catch(err=>{console.log(err)})

vue中路由中使用拦截器


{
    path: '/userinfo',
    name: 'userinfo',
    component: userinfo,
    // 拦截器的使用
    beforeEnter: (to, from, next) => {
      // 判断用户是否登录
      if(localStorage.getItem("username")){
        next();
      }else{
        next('/login01');
      }

vue的过滤器

// 自定义过滤器 与data 同级
//
filters:{
	myfilter:function (value){
		value = value.slice(0,3);
		return value+"********"
	}
},

vue中element_ui报错

  1. vue渲染列表时报错Avoid using non-primitive value as key, use string/number value instead.

    解决:

    一进入某页面,就会冒出这么一长串的报错,这个是由于v-for循环里,key值可能重复了,所以会报这个错。查看了一下页面代码: 发现key值重复了

  2. Avoid using non-primitive value as key, use string/number value instead.
    意思是:避免使用非基本值作为键,而是使用字符串/数字值。

    Duplicate keys detected: ‘[object Object]’. This may cause an update error.
    意思是:检测到重复键:‘[object object]’。这可能会导致更新错误。

     ##### 	解决:
    

    ​ 主要问题出现在:v-for 遍历 :key = obj :key 给了一个obj对象 ,改为字符串或数字即可解决:

  3. vue项目报错Invalid prop: type check failed for prop “index”. Expected String, got Numbe

    在element_ui中intdex 代表的是字符串,而不是数字,在这里转化一下即可

    解决:

    ​ index=“index+1+‘’‘’”

# 例子:
<el-submenu :index="index+1+''" v-for="(i, index) in userlist" :key="index.j">
    <template slot="title">
        <i class="el-icon-goods"></i>
        <span>{{ i.name }}</span>
    </template>
    <el-menu-item-group v-for="j in i.sub" :key="j.i">
        <el-menu-item :index=j.url>{{ j.name }}</el-menu-item>
    </el-menu-item-group>
</el-submenu>

vue中的methods循环

一般的
iterable=[1,2,3,4,5,6]		# iterable 列表, 数组,字符串
for(let i=0;i< this.iterable.length;i++){   //这里面 i 小标0,1,2,3.....
    console.log(this.iterable[i])  		
   }
******************                                   
for(let i in iterabel){						//这里面 i 是iterable中的元素
    console.log(i)                                         
   }
******************                                         
let i =1
while (i<10){
if (i<10){
   console.log(i)
   i++
 }else{
    break									// break 结束整个循环 continue 结束本次循环
  }
}			
******************
this.iterable.forEach(res=>{				// forEach 语法也是一种循环
    if(res.id==2){
    console.log(res)    
    }else{
    continue
   }
 })
                                    

遍历字段的键值对 👊

在methods方法中一般的循环来循环字段的时候,遍历的是字典的键,

​ 要将键和值均遍历出来就要用其他方法

dict = {'id':1,'name':'koko','is_show':false}

for(let key in dict){
console.log(key,this.dict[key])			//打印出dict的 键 ,值
}

短信验证码倒数秒数

<li>
              <label>短信验证码:</label>
              <input type="text" name="msg_code" id="msg_code" class="msg_input" v-model="form.code">
              <a href="javascript:;" class="get_msg_code" @click="getMegcode" :aria-disabled="flag">{{meg}}</a>
              <span class="error_tip">{{ error.code }}</span>
            </li>

return {
time;30,
meg:"获取短信验证码"
}


 // # 发送短信验证码
getMegcode(){
var m = setInterval(()=>{
        this.time--
        this.flag=true
        this.meg=this.time+'秒后再次发送'
        if (this.time===0){
          clearInterval(m)
          this.time=30
          this.flag=false
          this.meg='获取短信验证码'
        }
      },1000)
this.axios.post("mobile/",{'imagecode':this.imagecode,'code':this.code,'mobile':this.form.mobile})
      .then(res=>{
        console.log(res)
      })
    },

字符串长度的补全

(15条消息) JS字符串补全方法padStart()和padEnd()简介_张晨光老师的播客-CSDN博客_js字符串补齐

# padStart
str.padStart(targetLength [, padString])

# padString
'zhangxinxu'.padStart(15, false);
// 结果是'falsezhangxinxu'

# padEnd
str.padEnd(targetLength [, padString])
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值