一些需要知道的知识点
微信小程序的相关文件类型
1. WXML是框架设计的一套标签语言,结合基础组件、事件系统,可以构建出页面的结构,内部主要是微信自己定义的一套组件。
2. WXSS是一套样式语言,用于描述WXML的组件样式
3. JS逻辑处理,网络请求
4. JSON小程序设置,如页面注册,页面标题即tabbar
5. app.json 微信框架把这个作为配置文件入口,整个小程序的全局配置,包括页面注册、网络设置,以及小程序的window背景色,配置导航条样式,配置默认标题。
6. app.js 在这个文件中监听并处理小程序的生命周期函数、声明全局变量。
7. app.wxss 写全局样式
封装微信小程序的数据请求
1. 将所有的接口放在统一的js文件中并导出
2. 在app.js中创建封装请求数据的方法
3. 在子页面中调用封装的方法请求数据
参数传值的方法
1. 给html元素添加data-属性来传递我们需要的值,然后通过e.currentTarget.dataset或onload的param参数获取,但data-名称中不能有大写字母和不可以存放对象
2. 设置id的方法表示来传值,通过e.currentTarget.id获取设置的id的值,然后通过设置全局对象的方式来传递值。
3. 在navigator中添加参数传值
提高小程序的应用速度
1. 提高页面加载速度
2. 用户行为预测
3. 减少默认data的大小
4. 组件化方案
微信小程序原理
微信小程序采用js、wxml、wxss三种技术进行开发,从技术上讲和现有前端开发差不多,但深入挖掘的话又有所不同。
js:首先js的代码是运行在微信APP中的,不是运行在浏览器中,因此一些H5技术的应用需要微信App提供对应的API支持,而这限制住了H5技术的应用,且其不能成为严格的H5,可以称其为伪H5,同理,微信提供的独有的某些API,H5也不支持或支持的不是特别好。
wxml:wxml是基于xml语法开发的,因此开发时只能使用微信提供的现有标签,HTML的标签是无法使用的。
wxss:wxss具有css的大部分特性,但并不是所有的都支持。
微信的架构是数据驱动的架构模式,它的UI和数据是分离的,所有的页面更新都需要通过对数据的更改来实现。小程序分为两个部分webview和appservice,其中webview主要用来展现UI,appservice用来处理业务逻辑、数据及接口调用。他们在两个进程中运行,通过系统层JSBridge实现通信,实现UI的渲染、事件的处理。
小程序的优劣势
优势:
1. 无需下载,通过搜索和扫一扫就可以打开
2. 良好的用户体验,打开速度快
3. 开发成本比APP低
4. 安卓可以添加到桌面,与原生app差不多
5. 为用户提供良好的安全保障,小程序的发布,微信拥有一套严格的审查流程,不能通过审查的小程序是无法发布到线上的。
劣势:
1. 限制较多,页面大小不能超过1M,不能打开超过5个层级的页面
2. 样式单一,小程序的部分组件已经是成型的了,样式不可以修改
3. 推广面窄,不能分享朋友圈,只能通过分享给朋友,附近小程序推广,其中附近小程序也受到微信的限制
4. 依托于微信,无法开发后台管理功能
微信小程序与H5的区别
1. 运行环境不同
传统的HTML5运行环境是浏览器,包括webview,而微信小程序的运行环境并非完整的浏览器,是微信开发团队给予浏览器内核完全重构的一个内置解析器,针对小程序专门做了优化,配合自己定义的开发语言标准,提升了小程序的性能。
2. 开发成本不同
只在微信中运行,所以不用再去顾虑浏览器的兼容性,不用担心生产环境中出现不可预料的奇妙bug
3. 获取系统级权限不同
系统及权限都可以和微信小程序无缝衔接
4. 应用在生产环境的运行流畅度
长久以来,当HTML5应用面对复杂的业务逻辑或者丰富的页面交互时,他的体验总是不尽人意,需要不断地对项目优化来提升用户体验,但是对于微信小程序运行环境独立
小程序的双向绑定和vue的区别
小程序直接this.data的属性时不可以同步到视图的,必须调用setData()方法
小程序关联微信公众号如何确定用户唯一性
使用wx.getUserInfo方法withCredentials为true时可以获取encryptedData,里面有union_id,后台需要进行对称解密。
实现下拉刷新
用view代替scroll-view,设置onPullDownRefresh方法实现
小程序调用后台接口需要注意的问题
1. 数据大小有限制,超过范围会直接导致整个小程序崩溃,除非重启小程序
2. 小程序不可以直接渲染文章内容页这类型的html文本内容,若需显示要借助插件,但插件渲染会导致页面加载变慢,所以最好在后台对文章内容的html进行过滤,后台直接处理批量替换p标签div标签为view标签,然后其他的标签让插件来做,减轻前端的时间。
获取用户信息
wx.login wx.getusetinfo
获取屏幕宽高
wx.getSystemInfoSync().windowWidth