小程序开发之小程序原理和结构(三)

一、小程序原理

小程序运行时会有两个线程:『View Thread』和『AppService Thread』,相互隔离,通过桥接协议WeixinJsBridage进行通信(包括 setData 调用、canvas指令和各种DOM事件)

下述表格展示了两个线程的区别:

线程名称所属模块运行代码原理备注
View视图层(可能有多个)WXML/WXSSwebview渲染wxml编译器把wxml文件转为js(构建virtual dom);
wxss编译器把wxss文件转化为js
AppService逻辑层(一个)JSJavascriptCore运行无法访问 window/document对象

两个线程直接如何进行数据传递?可参考微信官方说明:

通过两边提供的 evaluateJavascript 所实现。即用户传输的数据,需要将其转换为字符串形式传递,同时把转换后的数据内容拼接成一份 JS 脚本,再通过执行 JS 脚本的形式传递到两边独立环境

也就是说,两个『模块/线程』是通过系统层的JSBridage来通信的,逻辑层把数据变化通知到视图层,触发视图层页面更新,视图层把触发的事件通知到逻辑层进行业务处理。可参考下图:


所以可以得出如下结论:

  • 小程序js代码无法操作DOM对象,也无法直接操作wxml上的容器或组件(js代码和webview没有运行在同一个线程中)
  • 如果需要在View Thread中运行自定义js代码,可以使用wxs(微信开发的脚本语言),它和View同一个线程。

js引擎

平台渲染js运行环境
iOSWKWebView渲染(环境有 iOS8、iOS9、iOS10)JavaScriptCore
AndroidX5 基于 Mobile Chrome 37 内核来渲染X5 JSCore来解析
开发工具Chrome Webview 渲染nwjs 中

二、小程序结构

每个小程序的结构都有两个主要部分构成:主体部分+各个页面。类似于许多框架,主体部分主要用于核心的配置,各个页面主要用于不同业务场景。

1、主体部分主要由3个文件构成
1)app.js:小程序逻辑,初始化APP
2)app.json:小程序配置,比如导航、窗口、页面http请求跳转等
3)app.wxss:公共样式配置 

主体配置完成之后,就是对应业务开发了,也就是开发者最常操作的页面。小程序页面设计基本上也是遵循MVC结构进行构建。

2、页面由4个文件构成


1)js:页面逻辑,相当于控制层(C);也包括部分的数据(M)
2)wxml:页面结构展示,相当于视图层(V)
3)wxss:页面样式表,纯前端,用于辅助wxml展示
4)json:页面配置,配置一些页面展示的数据,充当部分的模型(M)

需要说明的是:

1、为了防止文件引用混乱,这四个文件的文件名必须都是一样的,即是默认绑定的,这是小程序强制规定的,所以一般来说一个页面我们会建立一个独立的文件夹用来存放这四个文件名一样的文件

2、pages目录下的页面代码逻辑和配置,会覆盖app部分相同的代码逻辑和配置

今天的课程到此为止,下回我们就正式开始小程序实战开发阶段了,下回再见!

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

易雪寒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值