美文网首页
小程序 文档记录

小程序 文档记录

作者: 钨丝灯 | 来源:发表于2018-07-12 16:47 被阅读0次

小程序介绍

​ 用户在访问网页的时候,在浏览器开始显示之前都会有一个的白屏过程,在移动端,受限于设备性能和网络速度,白屏会更加明显。我们团队把很多技术精力放置在如何帮助平台上的Web开发者解决这个问题。因此我们设计了一个 JS-SDK 的增强版本,其中有一个重要的功能,称之为“微信 Web 资源离线存储”。

​ 以下文字引用自内部的文档(没有最终对外开放):

微信 Web 资源离线存储是面向 Web 开发者提供的基于微信内的 Web 加速方案。

通过使用微信离线存储,Web 开发者可借助微信提供的资源存储能力,直接从微信本地加载 Web 资源而不需要再从服务端拉取,从而减少网页加载时间,为微信用户提供更优质的网页浏览体验。每个公众号下所有 Web App 累计最多可缓存 5M 的资源。


1.2.2 小程序与普通网页开发的区别

​ 小程序的主要开发语言是 JavaScript ,所以通常小程序的开发会被用来同普通的网页开发来做对比。两者有很大的相似性,对于前端开发者而言,从网页开发迁移到小程序的开发成本并不高,但是二者还是有些许区别的。

​ 网页开发渲染线程和脚本线程是互斥的,这也是为什么长时间的脚本运行可能会导致页面失去响应,而在小程序中,二者是分开的,分别运行在不同的线程中。网页开发者可以使用到各种浏览器暴露出来的 DOM API,进行 DOM 选中和操作。而如上文所述,小程序的逻辑层和渲染层是分开的,逻辑层运行在 JSCore 中,并没有一个完整浏览器对象,因而缺少相关的DOM API和BOM API。这一区别导致了前端开发非常熟悉的一些库,例如 jQuery、 Zepto 等,在小程序中是无法运行的。同时 JSCore 的环境同 NodeJS 环境也是不尽相同,所以一些 NPM 的包在小程序中也是无法运行的。


表1-1 小程序的运行环境

运行环境 逻辑层 渲染层
iOS JavaScriptCore WKWebView
安卓 X5 JSCore X5浏览器
小程序开发者工具 NWJS Chrome WebView

表2-2 小程序WXSS支持的选择器

类型 选择器 样例 样例描述
类选择器 .class .intro 选择所有拥有 class="intro" 的组件
id选择器 #id #firstname 选择拥有 id="firstname" 的组件
元素选择器 element view checkbox 选择所有文档的 view 组件和所有的 checkbox 组件
伪元素选择器 ::after view::after 在 view 组件后边插入内容
伪元素选择器 ::before view::before 在 view 组件前边插入内容

WXSS优先级与CSS类似,权重如图2-13所示。


图2-13 WXSS选择器优先级

权重越高越优先。在优先级相同的情况下,后设置的样式优先级高于先设置的样式。

代码清单2-25 WXSS 选择器优先级权重

view{ // 权重为 1
  color: blue
}

.ele{ // 权重为 10
  color: red
}

#ele{ // 权重为 100
  color: pink
}

view#ele{ // 权重为 1 + 100 = 101,优先级最高,元素颜色为orange
  color: orange
}

view.ele{ // 权重为 1 + 10 = 11
  color: green
}

2.4.1 ECMAScript

在大部分开发者看来,ECMAScript和JavaScript表达的是同一种含义,但是严格的说,两者的意义是不同的。ECMAScript是一种由Ecma国际通过ECMA-262标准化的脚本程序设计语言, JavaScript 是 ECMAScript 的一种实现。理解 JavaScript 是 ECMAScript 一种实现后,可以帮助开发者理解小程序中的 JavaScript同浏览器中的 JavaScript 以及 NodeJS 中的 JavaScript 是不相同的。

浏览器中JavaScript 构成如下图:

图2-15 浏览器中的 JavaScript

浏览器中的JavaScript 是由 ECMAScript 和 BOM(浏览器对象模型)以及 DOM(文档对象模型)组成的,Web前端开发者会很熟悉这两个对象模型,它使得开发者可以去操作浏览器的一些表现,比如修改URL、修改页面呈现、记录数据等等。

NodeJS中JavaScript 构成如下图:

图2-16 NodeJS中的 JavaScript

NodeJS中的JavaScript 是由 ECMAScript 和 NPM以及Native模块组成,NodeJS的开发者会非常熟悉 NPM 的包管理系统,通过各种拓展包来快速的实现一些功能,同时通过使用一些原生的模块例如 FS、HTTP、OS等等来拥有一些语言本身所不具有的能力。

那么,同开发者所熟悉的这两个环境是不同的,小程序中 JavaScript 构成如图2-17所示。


图2-17 小程序中的 JavaScript

小程序目前可以运行在三大平台:

iOS平台,包括iOS9、iOS10、iOS11
Android平台
小程序IDE


JS 脚本工作在逻辑层。小程序的渲染层和逻辑层分离是经过很多考虑得出来的模型

3.1.2 通信模型

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

图3-1 渲染层和逻辑层通信模型

相关文章

  • 小程序 文档记录

    小程序介绍 ​ 用户在访问网页的时候,在浏览器开始显示之前都会有一个的白屏过程,在移动端,受限于设备性能和网络速度...

  • 微信小程序组件生命周期

    以下内容全部引用微信小程序官方文档,因官方文档内容较多,查找比较繁琐,常用的记录留存。 微信小程序官方文档:组件生...

  • 开发入门

    相关文档 小程序开发API文档小程序开放工具文档小程序开发工具下载页面

  • 微信小程序BLE踩坑记录

    小程序BLE踩坑记录 前往官方文档 项目描述 手机小程序通过BLE向android设备发送WIFI名称/密码等信息...

  • 2021-09-24 字节小程序初上手

    今天看了一下文档,和微信小程序很像,顺便做一些记录。 启动程序 App() App(params)是框架启动小程序...

  • Java后端小程序登录

    最近,公司在做小程序,提到小程序,那就绕不开小程序的登录,实话实说,小程序的文档写的真的不咋地,这里记录下自己做小...

  • 微信小程序之tab切换效果

    最近在学习微信小程序并把之前的公司app搬到小程序上,挑一些实现效果记录一下(主要是官方文档里没说的,毕竟官方文档...

  • 【总结】2017.01.18

    2017.01.18 - 计划 小程序文件接口 小程序发现与探索文档整合 - 实际完成 小程序发现与探索文档整合 ...

  • 小程序云开发前言篇

    小程序“云开发”的发布,给小程序注入了一剂猛料,注定会掀起一个小程序狂潮。相信大家看过了文档都说好,今天就记录一下...

  • 微信小程序从零开始开发

    1、微信小程序开发教程2、小程序官方文档-小程序版

网友评论

      本文标题:小程序 文档记录

      本文链接:https://www.haomeiwen.com/subject/uxyrpftx.html