微信小程序接口数据封装 (附前端面试题)
今天说一下小程序接口数据的封装:
1.在与pages同级目录下新建http文件夹:
2.在http文件夹下新建env.js文件,搭建环境:
module.exports={ //开发环境 dev:{ baseUrl:'http://127.0.0.1:8080' }, //生产环境 prod:{ baseUrl:'https://api.it120.cc' }, //测试环境 test:{ baseUrl:'https://api.1909A.com' } }
3.在http文件夹下新建request.js文件,进行接口封装的操作:
const { baseUrl } = require('./env.js').prod const vipUrl = "sbq" module.exports = { // request是一个函数,封装了request,其中的参数不填的话就会有默认值 request:function(url,method="GET",data={},isSubDomain=true){ //把正确的请求地址拼接起来 let fullurl = `${baseUrl}/${isSubDomain?vipUrl:""}/${url}` //Promise 对象用于表示一个异步操作的最终完成 (或失败), 及其结果值. return new Promise((resolve,reject)=>{ wx.request({ url: fullurl, method, data, header:{ //此处的头部信息要注意接口文档 "content-type":"pplication/x-www-form-urlencoded" }, //成功回调 success(res){ if(res.statusCode === 200 && res.data.code===0){ //返回的数据 resolve(res.data.data) }else{ console.log("接口有问题") } }, //失败回调 fail(){ console.log("接口问题") } }) }) } }
4.在http文件夹下新建api.js文件,就是项目中用到的各种业务接口的封装(例举商品列表接口):
const {request} = require('./request.js') module.exports={ // 商品列表接口 goodsItem:()=>{ return request("shop/goods/list","GET","",true) } }
然后在对应的组件里面直接调用就可以:
// components/xhy_goodItem/xhy_goodItem.js const { goodsItem }=require('../../http/api.js') Component({ //组件的生命周期 lifetimes: { created() { this.getData(); }, }, /** * 组件的初始数据 */ data: { goodItem: [] }, /** * 组件的方法列表 */ methods: { getData() { goodsItem().then(res=>{ this.setData({ goodItem:res }) }) } } })
拿到数据,正常渲染页面就可以了。
前端面试题 :
1.前端性能优化手段?
a. 尽可能使用雪碧图
b. 使用字体图标代替图片
c. 对HTML,css,js 文件进行压缩
d. 模块按需加载
e. 资源懒加载与资源预加载
f. 避免使用层级较深的选择器及减少DOM深度
2.单页面应用和多页面应用的区别及优缺点?
单页面的概念: 单页面应用(SPA),其实就是指只有一个主页面的应用,类似前端现在的三大框架,React.Vue,Angular 浏览器一开始要加载所有必须的html,js css。所有的页面内容都包含在这个所谓的主页面中。
单页面的原理: 利用js感知到URL的变化,通过这一点,可以用js动态的将当前的页面内容清除掉,然后将下一个页面的内容挂载到当前的页面上。页面每次切换跳转时,并不需要做html文件的请求,这样就节约了很多http发送延迟,我们在切换页面的时候速度很快。
单页面的优点:
a. 加载速度快,用户体验好,内容的改变不需要重新加载整个页面,基于这一点SPA对服务器压力较小。
b. 前后端分离
c. 页面视觉效果良好
单页面的缺点:
a. 不利于SEO(搜索引擎优化)
b. 页面初次加载时比较慢
c. 页面复杂度提高很多
多页面的概念: 多页面(MPA),就是指一个应用中有多个页面,页面跳转时是整个页面都刷新,每次都请求一个新的页面。
多页面的优点:首屏加载时间快,SEO效果好
多页面的缺点:页面切换慢,每次切换页面都需要选择性的重新加载公共资源
3. var,let,const的区别?
var:var的作用域是函数作用域,在一个函数内利用var声明一个变量,则这个函数只在这个函数内有效,存在变量提升。
let :作用域是块级作用域 不存在变量提升,不允许重复定义。
const :一般用来声明常量,且声明的常量是不允许被改变的,声明的时候就赋值,不存在变量提升,不允许重复定义。
4. 箭头函数和普通函数的区别?
箭头函数:
a. this指向:箭头函数指向 定义时所在的作用域中的this指向
b. 箭头函数作为匿名函数,是不能作为构造函数的,不能使用new
c. 箭头函数不能换行
普通函数:
a. this指向:谁调用就指向谁
5. css优先级算法?
!important>内联>ID选择器>class选择器>元素选择器>通配符选择器>继承>浏览器默认属性
- 微信小程序&PHP 微信支付接口调用
- 微信小程序前端js接口调用
- 微信小程序访问node.js接口服务器搭建教程
- 微信JS支付代码_前端调用微信支付接口
- 微信小程序前端制作 - 玉目智能超速众包开发平台
- [置顶] 微信小程序和百度的语音识别接口
- 微信前端开发接口一览
- 微信小程序访问node.js接口服务器搭建教程
- 「前端开发者」如何把握住「微信小程序」这波红利?
- 一份前端支付宝,微信支付及微信下面的支付充值接口
- 微信小程序发短信,php开发小程序短信接口,获取手机验证码
- 程序员小白,也能1天写出10个微信小程序前端页面
- 微信JS支付代码 前端调用微信支付接口
- 解决微信小程序请求后端接口碰到合法域名的问题 http-405j及java接口和数据接口的概念区分
- 微信小程序前端制作 - 玉目智能超速众包开发平台
- [转]微信的一道前端面试题
- 微信小程序支付调用官方接口(前端js)
- 微信小程序读取用户openid【前端+后端代码】
- 「前端开发者」如何把握住「微信小程序」这波红利?
- 关于微信服务商用户调用接口提示签名错误的原因