在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
小程序技术发展史JS-SDK是对之前的WeixinJSBrige的一个包装,以及新能力的释放,并且由对内开放转为了对所有开发者开放; 通过使用微信离线存储,Web开发者可借助微信提供的资源存储能力,直接从微信本地加载Web资源而不需要再从服务端拉取,从而减少网页加载时间,为微信用户提供更优质的网页浏览体验,每个公众号下所有WebApp累计最多可缓存5M的资源。 影响web体验的问题: 1 白屏 2 缺少操作的反馈 快速的加载 小程序与普通网页开发的区别 网页开发渲染线程和脚本线程是互斥的,这也是为什么长时间的脚本运行可能会导致页面失去响应,而在小程序总,二者是分开的,分别运行在不同的线程中。网页开发者可以使用到各种浏览器暴露出来的DOM API,进行DOM选中和操作。而如上文所述,小程序的逻辑层和渲染层是分开的,逻辑层运行的JSCore中,并没有一个完成的浏览器对象,因而缺少相关的DOM API和BOM API;例如JQuery Zepto等,在小程序中是无法运行的。同时JSCore的环境同NodeJS环境也是不尽相同的,所以一些NPM的包在小程序中也是无法运行的。 JSON 配置JSON文件在小程序代码中扮演静态配置的作用,在小程序运行之前就决定了小程序一些表现,需要注意的是小程序是无法在运行过程中动态更新JSON配置文件从而发生对应的变化的。 WXML 模板WXML 是WeiXin Markup Language 要求标签必须是严格闭合的,没有闭合将会导致编译错误。WXML的属性是大小写敏感的。 wx:if是一个控制属性,需要将它添加到一个标签上,如果要一次性判断多个组件标签,可以使用一个<block/>标签将多个组件包装起来,并在上边使用wx:if控制属性。 列表渲染 wx:for wx:key的值以两种形式提供: WXML提供模板,可以在模板中定义代码片段,然后在不同的地方调用。使用name属性,作为模板的名字。然后在<template/>内定义代码片段 使用is属性,声明需要的使用的模板,然后将模板所需要的data传入 wxml提供两种文件引用方式import和include。 import可以在该文件中使用目标文件定义的template: include可以将目标文件中除了<template/><wxs/>外的整个代码引入,相当于是拷贝到include位置 共同属性 所有wxml标签都支持的属性称之为共同属性: WXSS WeiXin Style Sheets 项目公共样式 其他样式 在小程序开发中国,开发者不需要像Web开发那样去优化样式文件的请求数量,只需要考虑代码的组织即可。样式文件最终会被编译优化。 渲染层和逻辑层 小程序的运行环境分为渲染层和逻辑层,WXML WXSS 工作在渲染层,js运行在逻辑层。 渲染层和数据有关 通信模型 小程序的渲染层和逻辑层分别由2个线程管理:渲染层的界面使用了WebView进行渲染;逻辑层采用JsCore线程运行Js脚本,一个小程序存在多个界面,所以渲染层存在多个WebView线程,这两个线程的通信会经由微信客户端做中转,逻辑层发送网络请求也经由Native转发 数据驱动 可以让状态和视图绑定在一起 程序与页面程序的生命周期和打开场景 初次进入小程序的时候,微信客户端初始化好宿主环境,同时从网络下载或者从本地缓存中拿到小程序的代码包,把它注入到宿主环境,初始化完毕后,微信客户端就会给App实例派发onLaunch事件,App构造器参数所定义的onLaunch方法会被调用。 页面页面构造器Page() 页面的生命周期和打开参数 页面初次加载的时候,微信客户端就会给Page实例派发onLoad事件,Page构造器参数所定义的onLoad方法会被调用,onLoad页面没被销毁之前只会触发一次,在onLoad的回调中,可以获取当前页面所调用的打开参数option,页面显示之后,Page构造器参数所定义的onShow方法会被调用,一般从别的页面返回当当前页面时,当前页的onShow方法会被调用。在页面初次渲染完成时,Page构造器参数所定义的onReady方法会被调用,onReady在页面没被销毁前只会触发一次,onReady触发时,表示页面已经准备妥当,在逻辑层就可以和视图层进行交互了。 页面不可见时,Page构造器参数所定义的onHide方法会被调用,这种情况会在使用wx.navigateTo切换到其他页面 页面的数据宿主环境所提供的的Page实例的原型中有setData函数,我们可以在Page实例下的方法调用this.setData把数据传递给渲染层,从而达到更新界面的目的。由于小程序的渲染层和逻辑层分别的两个线程中运行,所以setData传递数据实际是一个异步的过程,所以setData的第二个参数是一个callback回调,在这次setData对界面渲染完毕后触发。 setData其一般调用格式是setData(data,callback),其中data是由多个key:value构成的Object对象。 实际在开发的时候,页面的data数据会涉及相当多的字段,你并不需要每次都将整个data字段重新设置一遍,你只需要把改变的值进行设置即可,宿主环境会自动把新改动的字段合并到渲染层对应的字段中。 注意: 1 直接修改Page实例的this.data而不调用this.setData是无法改变页面的状态的,这回造成数据不一致。 页面的用户行为 小程序宿主环境提供可四个和页面相关的用户行为回调: 页面跳转和路由 一个小程序拥有多个页面,我们可以通过wx.navigateTo推入一个新的页面,在首页使用2次wx.navigateTo后,页面层级会有3层,我们把这样的一个页面层级称为页面栈。 |
请发表评论