个人一些零散的总结

ES6中export及export default的区别
在JavaScript ES6中,export与export default均可用于导出常量、函数、文件、模块等,你可以在其它文件或模块中通过import+(常量 | 函数 | 文件 | 模块)名的方式,将其导入,以便能够对其进行使用,但在一个文件或模块中,export、import可以有多个,export default仅有一个。

1.export与export default均可用于导出常量、函数、文件、模块等

2.在一个文件或模块中,export  、import可以有多个,export default仅有一个

3.通过export方式导出,在导入时要加{ },export default则不需要

4.qs.parse()将URL解析成对象的形式

5. qs.stringify()将对象 序列化成URL的形式,以&进行拼接

6. GET 方法传递参数格式如下:

传递参数说明
// 直接在 URL 上添加参数 ID=12345
axios.get('/user?ID=12345')
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

// 也可以通过 params 设置参数:
axios.get('/user', {
    params: {
      ID: 12345
    }
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

  7.axios.post('/user', {
    firstName: 'Fred',        // 参数 firstName
    lastName: 'Flintstone'    // 参数 lastName
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

  8.可以使用自定义配置新建一个 axios 实例:

axios.create([config])
const instance = axios.create({
  baseURL: 'https://some-domain.com/api/',
  timeout: 1000,
  headers: {'X-Custom-Header': 'foobar'}
});

9.vue配置全局方法
直接添加到Vue实例原型上

首先打开main.js,通过import引入定义的通用方法utils.js文件,然后使用Vue.prototype.$utils = utils,添加到Vue实例上

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import utils from './utils/Utils'

Vue.prototype.$utils = utils

new Vue({
 router,
 store,
 render: h => h(App)
}).$mount('#app')
之后,在组件页面中,需要使用的话,就是this.$utils.xxx就行了

methods: {
 fn() {
  let time = this.$utils.formatTime(new Date())
 }
}
10.async 使函数返回 Promise

await 使函数等待 Promise

11.后端接受字符串,前端需要展示对象,前端传后端用josn.string转换成字符串,后端传回前端的的用josn.parms转换成对象

12.要创造一个模板字符串,只需要使用反引号``将字符串包起来,模板字符串中的变量用${变量名}替代即可

13.ctx.query获取get请求参数
   post提交的值在:ctx.request.body
   ctx.body是返回值

   路由中冒号后面的参数
   router.get("/banners/:id",(ctx,next)=>{
     const params = ctx.params;
     ctx.body = params;
   });
   访问 http://localhost:3000/mall/banners/1

   路由中问号后面的参数
   router.get("/banners",(ctx,next)=>{
     const query = ctx.query;
     ctx.body = query;
   });
   访问 http://localhost:3000/mall/banners?id=2

   路由中header带有的参数
   router.get("/banners",(ctx,next)=>{
     const header = ctx.header;
     ctx.body = header;
   });


   14.axios因为小巧而性能强大受到很多人的追捧,但是其默认的数据提交方式为Payload,这样给后台解析带来了较大的困扰,因为难以从Request中获取到参数,所以默认的数据对象拼装无法成功 ,尤其是采用Spring MVC的@ModalAttribute注解时(没有使用@RequestBody注解)。表单数据与Payload数据之间的差异请参见$.ajax使用总结(一):Form提交与Payload提交。

解决方法如下:
1. 修改头部信息,将Content-Type改为“application/x-www-form-urlencoded”; charset=UTF-8”;
2. 将数据进行“form-urlencoded”编码;

编码的库采用官方推荐的Qs,可用如下命令直接安装:

npm install qs --save


以Form提交的代码实现如下:

//  首先进行url编码
var data =  Qs.stringify({
    firstName: 'yiifaa',
    lastName: '@163.com'
});
//  提交数据
axios({
      method: 'post',
      url: '/user/12345',
      //    必不可少,修改数据的提交方式
      headers : {
          "Content-Type":'application/x-www-form-urlencoded; charset=UTF-8'
      },
      data
});
如果存在数据的级联与数组情况,假定要传输的数据如下;

{
    date : {
        startTime : '2017-07-07'
    },
    names : ['yiifaa', 'yiifee']
}
那么需要加入以下参数:

var data =  Qs.stringify({
    date : {
        startTime : '2017-07-07'
    },
    names : ['yiifaa', 'yiifee']
},
    //  加入JS对象转换配置
    {allowDots: true});


结论
利用”Content-Type”与qs库可轻松解决axios.js提交表单数据的难题,强烈建议不要轻易使用params参数,尤其是在执行POST提交时,它们之间的区别参见浏览器查询参数与表单数据的优先级问题。

14.可通过 instanceof 操作符来判断对象的具体类型,语法格式:
 var result = objectName instanceof objectType
 返回布尔值,如果是指定类型返回 true,否则返回 false。测试如下: arr 是一个数组
 15.
 vue项目中使用js-base64
 胜意
 胜意
 第一步:安装依赖

 npm install --save js-base64
 或者

 cnpm install --save js-base64
 第二步:在main.js中直接:

 const Base64 = require('js-base64').Base64
 第三步:在需要的地方直接使用。

 Base64.encode('潘高')  // 5r2Y6auY
 Base64.decode('5r2Y6auY')  // 潘高
 以上就是对base64的使用
 16.
 window.location.href = '/'//location.href 属性返回当前页面的 URL。
 17.
 application/x-www-form-urlencoded
         application/x-www-form-urlencoded:是最常见的 POST 提交数据的方式,浏览器的原生表单如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据,它是未指定属性时的默认值。 数据发送过程中会对数据进行序列化处理,以键值对形式?key1=value1&key2=value2的方式发送到服务器。 数据被编码成以 '&' 分隔的键-值对, 同时以 '=' 分隔键和值。非字母或数字的字符会被 percent-encoding。在axios中当请求参数为qs.stringify(data)时,会以此方式提交数据。后台如果使用对象接收的话,可以自动封装成对象

 优势: 所有浏览器都兼容。
 问题:在数据结构及其复杂时,服务端数据解析变得很难
 application/json
         随着 json 规范的越来越流行,并且对浏览器支持程度原来越好,许多开发人员在请求头中加入 content-type: application/jsonapplication/json ,这样做可以方便的提交复杂的结构化数据,这样特别适合restful接口。它告诉服务器请求的主体内容是 json 格式的字符串,服务器端会对json字符串进行解析,json 格式要支持比键值对复杂得多的结构化数据。这种方式的好处就是前端人员不需要关心数据结构的复杂度,只需要标准的json格式就能提交成功。当在 axios 中请求参数为普通对象时,POST 请求默认发送的是 application/json 格式的数据。 application/json 需要封装成对象的话,可以加上 @RequestBody 进行注解。

 优势:是前端不需要关心数据结构的复杂度,后端解析方便。
 问题:少数浏览器不兼容。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值