当前位置:   article > 正文

【小程序实战系列】小程序框架 页面注册 生命周期 介绍_程序注册完生命周期结束了吗

程序注册完生命周期结束了吗
  • 五、注册页面

  • 六、页面生命周期


一、MINA框架

======================================================================

小程序的运行环境分成渲染层和逻辑层,它们分别由2个线程管理:渲染层的界面使用了WebView线程进行渲染;逻辑层采用JsCore线程运行JS脚本。一个小程序存在多个界面,所以渲染层存在多个WebView线程,这两个线程的通信会经由微信客户端(下文中也会采用Native来代指微信客户端)做中转。小程序的通信模型如下图所示:

在这里插入图片描述

小程序的MINA框架有着接近原生App的运行速度。其实他实际上应用的就是目前IT界最被推崇的MVVM模式。view层对应渲染层,model层对应逻辑层,viewmodel层对应native层。

native层主要做了两件事情:数据绑定和事件监听。逻辑层发送网络请求也经由Native转发。

1-1、渲染层(视图层View)


WXML 模板和 WXSS 样式工作在渲染层,.wxml 用于描述页面结构,而 .wxss 用于描述页面样式。

视图层以给定的样式来展现数据并反馈事件给逻辑层,而数据展现是以组件来进行的。组件(Component)是视图的基本组成单元。

1-2、逻辑层(APP Service)


JS 工作在逻辑层。在逻辑层处理数据并发送至视图层,同时接受视图层发回的事件请求。

微信团队对JavaScript做出了一些优化,以便更高效的开发小程序,这些优化包括:

  1. 增加app方法用来注册程序,增加page方法用来注册页面。

  2. 提供丰富的API接口。

  3. 页面的作用域相对独立,并拥有了模块化的能力。

但是需要注意的是,小程序的逻辑层由js编写,但并不是在浏览器中运行的,所以JavaScript在Web中的一些能力都不能使用,比如 Dom、Window等。

1-3、setData函数


在页面page()中,我们使用setData函数来将数据从逻辑层发送到视图层,同时改变对应的this.data的值。单次设置的数据有一个大小限制,不能超过1024KB,避免一次性设置过多的数据。

1-4、示例


home.wxml 文件里的内容修改成如下代码:

<view bindtap="clickOn">{{content}}</view>

这里的bindtap 是一个点击事件,content 是需要展示的内容。

home.js文件添加定义content 数据,和点击相应事件:


Page({



  data:{

​    content: "Hello Word"

  },

  

  clickOn(){

​    console.log("触发点击事件");

​    this.setData({

​      content: "hello"

​    })

  }

})



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

现在运行项目,会显示出初始的化的数据:

在这里插入图片描述

然后再点击文本内容区域,文本文字就会变成我们修改之后的Hello:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zA13f9Z2-1655998408024)(/Users/tiger/Library/Application%20Support/typora-user-images/image-20220623232130414.png)]

关于小程序的框架,我就先介绍到这里,更多的介绍,大家进入小程序框架学习,官方文档讲解的还是比较详细的。

二、界面渲染

====================================================================

2-1、界面是如何渲染出来的?


首先,我们需要知道,wxml等价于一棵DOM树,也可以使用一个JS对象来模拟(虚拟DOM)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3JXRsdzh-1655998408025)(构建dom树.png)]

2-2、如果数据发生改变了,又是如何渲染的呢?


  1. 会新生成一个JS对象

  2. 此时可以对比前后两个JS对象得到变化的部分

  3. 然后把这个差异应用到原来的Dom树上

  4. 从而达到更新 UI 的目的,这就是 "数据驱动"的原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4wuWgELq-1655998408026)(js数据diff更新.png)]

三、程序与页面

=====================================================================

小程序包含一个描述整体程序的app和多个描述各自页面的page。

微信客户端是如何启动小程序的?

微信客户端在打开小程序之前,会把整个小程序的代码包下载到本地。然后通过入口 app.json 的 pages 就知道当前小程序的所有页面路径。接着就会把首页的代码装载进来,通过小程序底层的一些机制,就可以渲染出这个首页。

四、注册小程序

=====================================================================

  • 每个小程序都需要在 app.js 中调用 App 方法注册小程序实例,绑定生命周期回调函数、错误监听和页面不存在监听函数等。

  • 整个小程序只有一个 App 实例,是全部页面共享的。通过getApp方法可以获得这个实例。

注册小程序时一般做什么?

  1. 判断小程序的进入场景,场景值

  2. 获取用户信息。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

最后

针对于上面的问题,我总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料。
(包括Java在Android开发中应用、APP框架知识体系、高级UI、全方位性能调优,NDK开发,音视频技术,人工智能技术,跨平台技术等技术资料),希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。
Android进阶视频+面试资料部分截图

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img
K开发,音视频技术,人工智能技术,跨平台技术等技术资料),希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。
[外链图片转存中…(img-IfUnc5C0-1712882285778)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-c7X24PA4-1712882285779)]

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/605747
推荐阅读
相关标签
  

闽ICP备14008679号