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 进行注解。
优势:是前端不需要关心数据结构的复杂度,后端解析方便。
问题:少数浏览器不兼容。