■ 符号说明
💘 课题
🌟 常见重要
🌛 需要有印象的
💘 01-微信小程序-页面布局(简介、分包、传参、UI组件、导航tabBar、商城项目布局
🌟 【简介】小程序项目超过2M怎么解决?
可以分包,通过修改全局的配置文件page.json加subpackages键
🌟 【简介】有没有开发过跨平台项目,如何开发的
之前通过uniapp开发过夸平台的项目
🌟 【简介】有开发过快应用、或者支付宝小程序吗
没有,公司有需要也可以开发,因为之前有用过uniapp所以没问题
🌟 【视图层】谈谈你对分包的理解
当小程序项目超过2M就可以分包,避免无法上线
🌟 【视图层】谈谈你对编译模式的理解,&好处
默认编译运行小程序访问page.json第一个路由,
通过编译模式可以访问指定路由,避免每次保存后需要重新打开开发页面,
从而加快项目开发
🌟 【视图层】小程序中如何通过事件传递参数
首先标签上加【data-参数名】然后通过事件对象获取
🌛 【视图层】你有封装过组件吗,怎么封装的
有,为了高保证实现UI设计稿,loading、弹框都有进行封装,主要通过自定义组件封装。
🌛 【视图层-内置组件】小程序能随意写HTML吗,如何不能如何解决
不能,可以通过内置rich-text富文本组件或第三方插件 wxParse
🌟 【视图层-内置组件】小程序中如何实现声明式导航
通过内置组件navigator就行
语法:
navigate 保留当前页,跳转非tabBar 可以跳转小程序 redirect 不保留当前页,跳转非tabBar switchTab 跳转tabBar,关闭所有非tabBar
🌟 【视图层-内置组件】声明式导航跳转方式有几种
挺多的,例如
navigate 保留当前页,跳转非tabBar 可以跳转小程序
redirect 不保留当前页,跳转非tabBar
switchTab 跳转tabBar,关闭所有非tabBar
🌟 【视图层-内置组件】声明式导航如何传递参数&获取
直接用get形式传递参数,然后再生命周期onload中获取
onLoad(options){
console.log(options) //正常打印出 options 值
}
其他生命周期钩子函数
// 获取当前小程序的页面栈
let pages = getCurrentPages();
// 数组中索引最大的页面--当前页面
let currentPage = pages[pages.length-1];
// 打印出当前页面中的 options
console.log(currentPage.options) //正常打印出 options 值
🌛 【视图层-内置组件】有用过web-view吗,哪里用的
没有,了解过主要用来加载第三方网页 类似于iframe
🌛 【视图层-UI组件库】用过哪些小程序UI框架
weui、vantui等等
🌛 【视图层-UI组件库】小程序UI框架的原理
主要通过自定义组件库语法,然后结合官方提供的框架,发布到npm上即刻;
🌟 【视图层-布局】谈谈你对px、rpx、em、rem理解和区别
都是布局单位
px 固定像素
rem相对于html绕开了复杂的层级关系,其原理就是根据html的font-size适配
em相对父麻烦
vw可视窗口1%
rpx是小程序自适应单位。 1px = 750/设计稿宽度 rpx
💘 02-微信小程序-后端交互(商城项目接口、配置文件、分页、mock数据
🌟 【逻辑层】谈谈你对编程式导航的理解&有哪些?
wx.navigateTo 保留当前页,跳转非tabBar
wx.redirectTo 不保留当前页,跳转非tabBar
wx.switchTab 跳转tabBar,关闭所有非tabBar
🌟 【逻辑层】如何实现小程序的数据存储
以前:H5存储、COOKIE
现在:小程序都有自己的存储语法
localStorage.setItem(键,值)
let 变量名 = localStorage.getItem(键)
同步存:wx.setStorageSync(键,值)
同步取:let 变量名 = wx.getStorageSync(键)
异步存:wx.setStorage({ key:键, data: 值 }
异步取:
wx.getStorage({
key: 'key',
success (res) {
console.log(res.data)
}
})
🌟 【逻辑层】小程序如何使用mock数据
- 有哪些
Mock.js(缺点:数据都是动态的假数据,无法真实模拟增删改查的情况)
第三方接口管理工具rap2/moco/yapi:(是什么:基于mockjs开发的平台 缺点:同Mock.js)
本地node服务器json-server:(优点:香 秒启Rest Api Server、真实模拟增删改查)
- 如何用:利用json-server + mockjs 搭建mock数据服务器,启动之后 直接请求
🌟 【逻辑层】小程序如何发送请求
通过wx.request,然后实现项目中会在utils/request.js通过promise封装一下
🌟 【逻辑层】小程序分页如何实现
通过内置钩子函数onPullDownRefresh实现下拉,
通过ReachBottom实现上啦刷新。
💘 03-微信小程序-各种功能(堵车么项目布局:地图、定位、客服、分享、意见反馈、录音等)
🌟 如何实现tabBar功能
直接修改package.json增加tabBar键就可以
🌟 如何在小程序中使用阿里字体图表
1、生成iconfont并下载
2、复制iconfont.css图标样式到utils/font.wxss
3、后期谁要使用通过 @Import '路径'
导入即可使用
🌟 如何实现地图功能
直接通过map组件就可以
🌟 如何在地图上打点
通过map组件的属性 具体忘了,公司有需要在看下手册没问题
参考:
其他:如果面试官问的比较深就加一句,之前做项目也就是实现简单的地图加标注点,线,面,定位等并没有太复杂。
🌟 高德地图安居客如何实现的
链接: pan.baidu.com/s/1uP1qRFBc…
提取码: m3h0
手册
develop.smaryun.com:81/API/JS/OL3I…
🌟 如何实现定位功能
首先修改配置文件允许授权
在app.json中添加:
“permission”: {
“scope.userLocation”: {
“desc”: “你的位置信息将用于小程序位置接口的效果展示”
}
},
然后通过wx.getLocation获取用户坐标
💘 04-微信小程序-各种功能(堵车么项目接口:微信登陆、手机登陆、openid、多图上传、预览、上线等)
🌟 谈谈你对https的理解
HTTP(HyperText Transfer Protocol),超文本传输协议,是一个基于TCP实现的应用层协议。
HTTPS 是最流行的 HTTP 安全形式。它是由网景公司首创的,所有主要的浏览器和 服务器都支持此协议。
使用 HTTPS 时,所有的 HTTP 请求和响应数据在发送到网络之前,都要进行加密。 HTTPS 在 HTTP 下面提供了一个传输级的密码安全层——可以使用 SSL,也可以使用其后继者—— 传输层安全(Transport Layer Security,TLS)。由于 SSL 和 TLS 非常类似,所以我们不太严格地用术语 SSL 来表示 SSL 和 TLS。
http 80 都是基于底层 tcp 协议
https 443 都是基于底层 tcp 协议 + ssh协议 安全
问 :你们接口时什么协议的
答:https
问:怎么搞得
答:后端给我的、 推荐还是说一说 就是去腾讯云、阿里云申请整数,然后服务器配置就可以了
大概是这个流程,然后之前公司小程序项目 因为平时我喜欢专研技术,所以我就自己研究了一把
当时用了腾讯云免费证书
问:具体怎么弄的 可以说说看
答:因为当时是好奇 感兴趣 弄了一下 也实现了 但是现在好长时间了 具体说实话给忘了 但是公司有需求我在百度下 也没问题。
🌛 计算两点之间的距离
主要先准备好两个坐标,然后通过官方提供的方法进行计算两点之间的距离
🌟 谈谈你对openid的理解
openid是用户和小程序之间唯一标识,类似于开发中token的
🌟 登录如何实现的
🌟 如何实现图片上传功能
通过weui的mp-uploader组件实现多图上传功能
然后接口官方的 wx.chooseImage拍照或选择图片,
最后wx.uploadFile上传即刻
wx.chooseImage({
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: res=> {
// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
that.setData({
files: this.data.files.concat(res.tempFilePaths)
});
}
})
wx.uploadFile({
url: 'https://kg.zhaodashen.cn/v2/upload.php',
name: 'file',//根据后端接口开发文档的要求填写
filePath: res.tempFilePaths[0],
success: result => {
let res = JSON.parse(result.data)
if (res.meta.state === 201)
{
// console.log(res.data.url+'/'+res.data.img)
let imgs = this.data.imgs.concat(res.data.url+'/'+res.data.img)
this.setData({
imgs
})
}
},
fail: function(err){
// console.log(err)
return
}
})
💘 05-微信小程序-全栈APP开发(uniapp 混合app开发)
其他
问6:问7:问8:小程序如何上线 问9:小程序https是如何配置的 问10:定位如何实现的 问11:微信登陆怎么实现的 问12:手机登陆怎么实现的 问13:知道openid吗,干嘛的,怎么用 问14:图片上传图和实现的 问15: 问16:自己写的功能怎么实现。
技术栈
利用flex+rpx+view+swiper+tabBar+scroll-view等微信组件进行页面布局
利用UI组件库实现页面布局
基于promise封装wx.request实现接口,增强接口可扩展性、可读性
利用登陆api实现登陆功能,获取用户唯一标识openid
通过模版推送api实现手机定制、下单成功通知,给用户推送信息
使用广告接口在小程序内投放banner广告
通过腾讯云https证书&配置nginx实现接口https协议
通过七牛云对象存储,统一存放项目壁纸等图片
通过cdn、懒加载技术加速静态资源访问速度
利用mock生成测试数据或利用rap2网站生成mock 数据