微信小程序进入到首页的时候,日志打印出“created”, “onlaunch”, “mounted”,具体代码以下:
那么,在小程序中 created() 和 mounted() 究竟什么时刻被调用
首页:css
created () { console.log('created') }, mounted () { console.log('mounted') }, // 监听页面加载 onLoad () { console.log('onlaunch') }
解释:vue
生命周期执行顺序是vue的 created() 函数 —> 小程序的 onLoad()函数 -> vue的mounted()函数,故,小程序开始运行直到第一页出现以前,全部的 vue 实例就已经被建立,也就是说全部的 created() 都被执行。针对每个页面,onLoad()只会调用一次。
把微信小程序的生命周期勾子和mpvue的生命周期勾子一块儿使用常令人陷入混乱,因此mpvue官网有这样一句话:除特殊状况外,不建议使用小程序的生命周期钩子webpack
mpvue不支持vue-router
页面跳转常使用 navigateTo 或者 redirectTo
二者区别:navigateTo 进行页面跳转后不会关闭当前页面,此时小程序左上角会出现一个“后退”按钮,能够点击进入到上一个页面。navigateTo 进行页面跳转后会关闭当前页面,故用户没法进行后退操做。web
新增了page页面,使用微信开发者工具加载不出来
解决办法:从新 npm run dev
缘由:webpack编译文件是由entery决定的,新增的页面没有加入到enteryvue-router
使用微信开发者工具,点击input没法获取焦点(多发生在联想电脑上,mac电脑上比较少见)
解决办法:长按。若是长按也不行的话,就在该inpu输入框的上方或者周围点击,试图获取焦点npm
下面点击事件无效
// Button 是自定义组件 <Button :btns="resetBtn" @click="resetPwd"></Button>
解决办法:小程序
<div @click="resetPwd"> <Button :btns="resetBtn"></Button> </div>
缘由:不能直接在组件上绑定点击事件微信小程序
利用props传值却栽了个跟头,以下
建立了一个公共组件 MbInput ,调用该组件的时候须要经过 prop 传入 maxlength 值。可是在开发过程当中没有传入,则默认解析结果为 maxlength=0,因此致使没法输入信息。原代码以下:缓存
export default { props: ['placeholder', 'list', 'maxlength'] }
建议修改以下,设置该字段必须填写或者给出默认值安全
export default { props: { placeholder: { // 必须提供字段 required: true }, list: { // 必须提供字段 required: true }, maxlength: { // 可选字段,有默认值 default: 11 } } }
设计给出这样一个需求,要求页面展现以下
要求:
页面中的项目格式是动态变化的,须要显示的项目通常在1-4个之间
只有一个的时候,上下左右居中显示
有两个的时候并排显示,上下居中
有三个的时候,以下图
布局方法:
(1)使用左浮动
(2)使用flex布局,justfy-content: space-around。一个项目的时候,左右居中显示;两个项目的时候,并排,空隙平均分配;三个项目的时候,第三个项目将在它所在的那一行左右居中,为了解决这个问题,动态的在第三个后面添加一个同样宽度的div,设置这个div透明,这样就能达到咱们想要的排列效果
关于小程序的wx.setStorage等接口咱们能够设置对本地缓存进行设置、获取和清理。本地缓存最大为10MB。那么本地缓存时间是多久?
这些缓存不清理会永久的缓存
该小程序配置session配置
使用 session 的意义:安全。当客户端和服务端创建起链接后,服务端生成JSESSIONID用户标识该用户身份,这个JSESSIONID将被客户端主动存储到cookie中,每次发起链接请求的时候,将cookie携带到header里一块儿发送。
不选择向客户端种cookie的缘由:不少时候cookie在客户端(手机端)是被禁用的;因为cookie存放在客户端,容易被恶意窃取或修改。
配置流程下:
(1)创建链接后,服务端生成JSESSIONID发送给客户端
(2)客户端将该JSESSIONID存储到本地,每次发送请求的时候将其放入header里一块儿传送
header: { 'content-type': 'application/x-www-form-urlencoded', cookie: `JSESSIONID=${(getApp().globalData.userInfo && getApp().globalData.userInfo.sessionId) || ''}` }
v-show不起做用
缘由:v-show 没法用于 <template> 元素
解决办法:使用v-if
v-if一般会完整的建立/销毁组件,而v-show只是简单的进行css切换,因此v-if切换时开销更高,建议频繁切换的花使用v-show
created()里面的跳转无效
不要在created()函数里面进行页面跳转
连续点击后退会报错小程序用navigate跳来跳去不刷新页面吗