1.简单描述下微信小程序文件类型
答:微信小程序有一下几种文件类型:
一、wxml(weixin MarkUp language) 是框架设计的一套标签语言、结合基础组件、事件系统,可以构建出页面的结构。内部主要是微信自己构建的一套组件。
二、wxss(weixin style sheets)是一种样式语言,用于描述wxml的组件样式。
三、js逻辑处理、网络请求
四、json 小程序设置,如页面注册、页面标题及tabBar
五、app.json 必须有这个文件、如果没有这个文件项目无法运行,因为微信小程序把这个文件作为配置文件入口,整个小程序的全局配置。包括页面注册、网络设置、以及小程序的window的背景色、配置导航条样式、配置默认标题。
六、app.js 必须有这个文件、如果没有这个文件项目也会报错,这个文件创建一下就行啦,不需要我们现在写以后我们可以在这个文件中监听并处理小程序的生命周期函数、声明全局变量。
七、app.wxss 这是个公共的样式文件。
2.你是怎么封装微信小程序的数据请求的
一、将所有的接口放到统一的js文件中并导出。
二、在app.js中创建封装请求的方法。
三、在子页面中调用封装的方法。
3.有哪些参数传值的方法
一、给HTML元素添加data-*属性来传递我们需要的值,然后通过e.currentTarget.dataset或onLoad的param获取参数。但是data-名称不能有大小写字母和不能存放对象。
二、设置id的方法来传递值通过e.currentTarget.id获取设置的id值,然后通过设置全局对象的方式来传递数值。
三、在navigtar中添加参数传值。
四、在navigateTo跳转中的参数 ,通过onload生命周期中获取数据
五、通过app实例获取数据
六、通过本地缓存的方式获取数据
七、通过表单的形式,在submit方法的参数中获取数据,注意input/texttarea等表单组件中要有name属性
八、通过getCurrentPage()方法获取当前页面或多级页面的数据
4.你使用过哪些方法,来提升微信小程序的应用速度
一、提高页面加载速度
二、用户行为预测
三、减少默认data的大小
四、组件优化方案
5.小程序和源生app那个好
小程序除了拥有公众号的低开发成本及无需下载优势。在服务请求延时与用户体验都得到较大幅度的提升,使得能够承载更复杂的服务功能以及使用户得到更好的用户体验。
6.简述微信小程序的原理
答: 微信小程序采用JavaScript 、wxml 、wxss、三种技术进行开发,从技术讲和现有的前端开发差不多,但是深入挖掘的话有不同。
JavaScript: 首先JavaScript的代码运行在微信app中的,并不是运行在浏览器中的,因此一些h5技术的应用,需要微信app提供api支持,而这限制了h5技术的应用,且其不能称为严格的h5,可称其为伪h5,同理,微信提供的api,h5不支持或支持的不是很好。
wxml: wxml是微信自己给予xml技术开发,因此开发时只能使用微信提供的标签,HTML的标签是无法使用的。
wxss: wxss具有css的大部分特性,但不是所有的都支持,哪些支持哪些不支持,并没有明确的文档。
微信的架构是数据驱动的模式,它的UI和数据是分离的,所有的页面更新都需要通过对数据的更新来实现。
小程序分为两个部分webview和appService。其中webview主要用来展示UI,appService用来处理业务逻辑,数据及接口的调用。他们在两个进程中运行,通过系统jsBridge实现通讯,UI渲染、事件处理。
7.分析下小程序的优劣
答:
优势:一、无需下载通过扫一扫和搜索就可以打开
二、良好的用户体验,打开快
三、开发成本比app低
四、安卓上可以添加到桌面,与原始app差不多
五、为用户提供良好的安全保障。小程序的发布微信有一套严格的审查流程,不能通过的小程序是不能发布到线上的。
劣势:一、限制较多,页面大小不能超过1M,不能打开超过5个层级的页面
二、样式单一,小程序的一些组件样式是成形的,样式不能修改。如幻灯片、导航。
三、推广面窄,不能分享朋友圈,只能分享给朋友、附近小程序推广。其中附近小程序也受微信的限制。
四、依托于微信,无法开发后台管理功能。
8.微信小程序与h5的区别
答:
一、运行环境的不同
传统的HTML运行环境是浏览器,包括webview,而微信小程序的运行环境并非完整的浏览器,是微信开发团队基于浏览器内核完全重构的解析器,针对小程序专门做了优化,配合自己开发的语言标准,提升了小程序的性能。
二、开发成本的不同
只在微信中运行,不用担心浏览器的兼容性,以及生产环境中出现的不可预料的奇妙bug
三、获取系统级权限的不同
系统级权限都可以和微信小程序无缝衔接
四、应用在生产环境中的运行流畅度不同
长久以来,HTML5应用面对复杂的业务逻辑或丰富的页面交互时,它的体验总是不尽人意,需要不断的优化项目来提升用户体验,但是由于微信小程序的运行环境独立,不用长期不断的进行优化来提升用户体验。
9.怎么解决小程序的异步请求问题
在回调函数中调用下一组件的函数:
运营promise函数
12345678910
app.js success:function(info){ that.apirtnCallback(info) }index.js onload:function(){ app.apirtnCallback=res=>{ console.log(res) } }
10.小程序的双向绑定和 vue哪里不一样
小程序this.data属性是不能同步到视图呢,必需是
123
this.setData({ noBind:true})
小程序的生命周期
onLoad --- 页面加载,调用一次
onShow --- 显示页面,每次打开页面都调用
onReady --- 初次渲染,调用一次
onHide --- 隐藏页面,当navigate To 或底部tab切换时调用
onUnload --- 卸载页面,当redirectTo 或navigateBack时调用
小程序的页面跳转
wx.navigateTo --- 保留当前页面,跳转到应用内的某个页面。但是不能跳到tabbar页面(参数必须是字符串)
wx.redirectTo --- 关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到tabbar页面
wx.switchTab --- 跳转到tabber页面,并关闭其他所有非tabBar页面,路径后不能带参数
wx.navigateBack --- 关闭当前页面,返回上一页面或多级页面。可通过getCurrentPages()获取当前的页面栈,决定需要返回几层
wx.reLaunch --- 关闭所有页面,打开到应用内的某个页面
通过navigator跳转
感谢大豆博文微信小程序的面试题