微信小程序问题总结
小程序页面有哪些传递数据的方法?
全局变量之中传递参数数据
在跳转、重定向等转变页面时候,可以直接通过url来传送数据
通过页面栈获取到上一页面对数据进行修改
通过第三方服务器用数据库进行保存,是要使用的时候直接从数据库里面直接读取全局变量。
在使用url进行参数传递时候,传递数据有字节限制
通过wx.navaigaTo跳转到具体的页面,并传递相关联的参数数据
微信小程序主要目录和文件的作用?
- project.config.json 项目配置文件,做一些个性化配置,例如界面颜色、编译配置等等
- app.json 当前小程序的全局配置,包括了小程序的所有页面路径、界面表现、网络超时时间、底部 tab 等
- sitemap 配置小程序及其页面是否允许被微信索引
- pages 里面包含一个个具体的页面
- wxss 页面样式,app.wxss 作为全局样式,会作用于当前小程序的所有页面,局部页面样式 page.wxss 仅对当前页面生效。
- app.js 小程序的逻辑
- js 页面逻辑
- json 页面配置
- wxml 页面结构
小程序的生命周期函数
- onLoad 监听页面加载,一个页面只会调用一次
- onShow 监听页面显示,每次打开页面都会调用
- onReady 监听页面初次渲染完成,一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互
- onHide 监听页面隐藏
- onUnload 监听页面卸载
微信小程序原理
微信小程序采用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的渲染、事件的处理
微信小程序的优缺点
优点:
- 方便快捷,即用即走。不需要在下载什么APP啦,既费流量,又占空间内存。小程序就是方便,即用即走。
- 速度快、不占内存因为小程序前端代码都是存在微信服务器上的,在腾讯云端存放呢,所以无需加载,直接就打 开了,速度也比较快。并且还不占用手机内存。
- 安全稳定、保密性强其实小程序就类似苹果商店,首先需要审核才能发布。其次小程序通信采用的是https访 SSL加密通信,并且小程序样式代码都封装在微信小程序里面,所以安全性更高,更稳定。
- 功能丰富,场景丰富可以调用比H5更多的手机系统功能来进行开发,例如GPS定位、录音、视上传视频、添加 图片等,能开发更丰富的使用场景。
- 开发成本低、维护简便同样的功能,做一个APP估计需要十几万甚至几十万,而开发一个小程序,一般几千元就 搞定了。维护起来也比较简单方便。
- 附近定位、入口众多开放的入口比较多,除了通过扫码,发送朋友,搜索,附近等常用入口外,还能与公众号关 联,群发文章嵌入,公众号菜单链接等。
缺点:
- 微信小程序只有1M的大小,这样导致无法开发大型一些的小程序。所以目前你会看到很多小程序真的很小很简单。
- 小程序的技术框架还不稳定,开发方法时常有修改,导致短时间内经常要升级维护。
- 不能跳转外链网址,所以间接影响了小程序的开放性。
- 不能直接分享到朋友圈,哎呀,少了一个重要的推广方式。
- 需要像APP一样审核上架,这点比HTML5即做即发布要麻烦些。
- “相对封闭”不能跳转外链网址,所以间接影响了小程序的开放性,也可能是想限制其他支付方式或功能接入。
- “不利于扩散”不能直接分享到朋友圈,少了一个重要的推广方式。
- 开发工具中模拟器显示的效果与真机显示的效果不一致,开发时无法直接在真机上运行测试,导致开发成本提高、效率下降。
小程序的双向绑定和vue的异同?
-
设置值:
在vue中,只需要再表单元素上加上v-model,然后再绑定data中对应的一个值,当表单元素内容发生变化时,data中对应的值也会相应改变
在小程序中当表单内容发生变化时,会触发表单元素上绑定的方法,然后在该方法中,通过this.setData({key:value})来将表单上的值赋值给data中的对应值。 -
取值:
在vue中,通过this.reason取值;
小程序中,通过this.data.reason取值。