Vue使用记录

使用axios进行前后台数据交互
  • 安装axios
npm install --save axios
  • 引入axios
import axios from 'axios'
  • 配置全局拦截
  1. 新建http.js
  2. 代码示例
import axios from 'axios'
import router from './router'

axios.interceptors.response.use(
  response => {
    return response
  },
  error => {
    let code = error.response.data.code
    if (code === 1004) {
      router.push({path: '/login'})
    }
    return Promise.reject(error)
  }
)
axios.interceptors.request.use(
  config => {
    if (window.sessionStorage.getItem('token')) {
      config.headers.Authorization = window.sessionStorage.getItem('token')
    } else {
      router.push({path: '/login'})
    }
    return config
  },
  err => {
    return Promise.reject(err)
  }
)
export default axios
  1. 在main.js中引用
import axios from './http.js'
//改写原型链
Vue.prototype.$ajax = axios
  • 使用示例
this.$ajax.post(url).then(function (repsonse) {
          //成功操作
        }).catch(function (error) {
          //失败操作
        })
  • 传递this
//第一种方式
let that = this 
//第二种方式
.then(function(res){
  console.log(this.data)
}.bind(this))
解决vue跨域问题
  • 在config文件夹中新建proxyConfig.js
  • proxyConfig.js配置如下
module.exports = {
  proxy: {
    '/honekit/connect': {    
      target: 'localhost',  // 接口域名
      secure: false,  // 如果是https接口,需要配置这个参数
      changeOrigin: true,  //是否跨域
      // pathRewrite: {
      //   '^/apis': ''   //需要rewrite的,
      // }
    }
  }
}

  • 改造config目录下的index.js文件关于dev的部分
 dev: {
    env: require('./dev.env'),
    port: 8080,
    autoOpenBrowser: true,
    assetsSubDirectory: 'static',
    assetsPublicPath: '',
    proxyTable: proxyConfig.proxy,
    cssSourceMap: false
  }
页面加载时加载方法

使用vue生命函数 create或者mounted

使用axios传递数组
  • get/delete请求方式
this.$ajax.get('/honekit/connect/device/page', {
        params: {
          onlineState: this.checkedDeviceOnline.length === 0 ? null : this.checkedDeviceOnline[0].value,
        },
        paramsSerializer: params => {
          return qs.stringify(params, { indices: false })
        }}).then(function (response) {
      }.bind(this)).catch(function (error) {
        console.log(error)
      })
    }
  • put/post请求方式
axios.post(url, qs.stringify(
    params: {
     ids: [1,2,3],
     type: 1
    }, { indices: false }))
  • 不同形式传递数组
qs.stringify({ids: [1, 2, 3]}, { indices: false })
 //形式: ids=1&ids=2&id=3
qs.stringify({ids: [1, 2, 3]}, {arrayFormat: ‘indices‘})
 //形式: ids[0]=1&aids1]=2&ids[2]=3
qs.stringify({ids: [1, 2, 3]}, {arrayFormat: ‘brackets‘})
 //形式:ids[]=1&ids[]=2&ids[]=3
qs.stringify({ids: [1, 2, 3]}, {arrayFormat: ‘repeat‘}) 
//形式: ids=1&ids=2&id=3
不刷新页面的情况下重新加载页面

用provide / inject 组合
原理: 允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效

在App.vue,声明reload方法,控制router-view的显示或隐藏,从而控制页面的再次加载。

<template>
  <div id="app">
    <router-view v-if="isRouterAlive"></router-view>
  </div>
</template>

<script>
export default {
  name: 'App',
  provide () {
    return {
      reload: this.reload
    }
  },
  data () {
    return {
      isRouterAlive: true
    }
  },
  methods: {
    reload () {
      this.isRouterAlive = false
      this.$nextTick(function () {
        this.isRouterAlive = true
      })
    }
  }
}
</script>

在需要用到刷新的页面。在页面注入App.vue组件提供(provide)的 reload 依赖,在逻辑完成之后(删除或添加…),直接this.reload()调用,即可刷新当前页面。

注入reload方法

	export default{
		inject: ['reload']
	}

调用reload方法

	this.reload()

vue项目刷新当前页面

This is probably not a problem with npm,there is likely additional logging output above

Winston是一个非常流行的Node.js日志库,可以轻松地在Vue项目中使用它来记录日志。以下是在Vue项目中使用Winston的步骤: 1. 安装Winston:在终端中使用以下命令安装Winston: ``` npm install winston ``` 2. 创建一个日志文件:在你的Vue项目根目录下创建一个logs文件夹,并在其中创建一个名为app.log的日志文件。 3. 创建Winston实例:在你的Vue项目中创建一个名为logger.js的文件,并在其中创建一个Winston实例,配置日志记录器。以下是一个示例配置: ``` const winston = require('winston'); const path = require('path'); const logger = winston.createLogger({ level: 'info', format: winston.format.combine( winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), winston.format.printf(info => `${info.timestamp} [${info.level.toUpperCase()}] ${info.message}`) ), transports: [ new winston.transports.File({ filename: path.join(__dirname, '../logs/app.log') }) ] }); module.exports = logger; ``` 此配置将日志记录级别设置为info,并将日志记录到我们之前创建的app.log文件中。它还使用了Winston的格式化选项,以便在日志中包含时间戳。 4. 在Vue组件中使用日志记录器:在Vue组件中导入logger.js文件,并在需要记录日志的地方使用logger实例。例如: ``` import logger from './logger'; export default { name: 'MyComponent', created() { logger.info('Component created'); }, methods: { handleClick() { logger.warn('Button clicked'); } } }; ``` 在此示例中,我们在组件的created钩子中记录了一条“Component created”消息,并在按钮的单击事件处理程序中记录了一条“Button clicked”消息。这些消息将被记录到我们之前创建的app.log文件中。 这就是在Vue项目中使用Winston记录日志的基本步骤。你可以根据需要调整Winston配置,以满足你的特定需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值