一、什么是基础库?
1、基础库是小程序运行的必要环境,我们的开发主要就是面向基础库开发的。基础库封装了微信和手机的能力并提供给小程序使用,我们使用基础库提供的组件和API开发起来非常的方便。
2、基础库存在于我们的微信客户端中,它和微信一样,也有其自己的版本,每个版本都会有一些新特性。微信官方为了使得基础库的版本和微信的版本同步,采取了一个微信版本对应一个基础库版本的方式。这就使得用户在更新最新版本的微信时也能更新至最新版本的基础库。带来的优点就是用户的基础库都是最新版本的。
二、小程序是运行在基础库上的吗?
1、认为小程序是要运行在微信客户端上的,这么说似乎没什么问题,但也不严谨。相比于微信客户端那么大的一个概念,客户端中绑定的基础库更像是小程序的SDK。他封装微信和手机功能的同时也使得开发者能够屏蔽微信版本和手机系统的差异。
2、如果从开发者的视野看,说小程序运行在基础库上也没什么问题,因为开发了一段时间后发现基础库并不是一块厚实的棉被,并不能把底层(微信和手机)的一切功能的包裹的严严实实。比如小程序的提示框在不同的微信版本则有不同的样式,又比如JS代码中的new Data(“2023-7-6 12:34:00”)在Android手机上能成功解析,在iOS上则会报错。
那究竟是什么原因会让JS代码在不同的手机系统上出现不同的结果呢?
顺着这条线,先是找到了运行JS代码的浏览器内核,如:IE浏览器的Trident内核,Safari和Chrome的Webkit内核,还有火狐使用的Gecko内核。但继续了解后又发现,浏览器最核心的其实分为两部分:渲染引擎(Rendering Engine)和JS引擎。
IE浏览器的Trident内核,Safari和Chrome的Webkit内核,火狐的Gecko内核其实都是渲染引擎,真正解析JS代码的则是JS引擎。查了文档后才发现:
微信小程序运行在多种平台上:iOS(iPhone/iPad)微信客户端、Android 微信客户端、PC 微信客户端、Mac 微信客户端和用于调试的微信开发者工具。
各平台脚本执行环境以及用于渲染非原生组件的环境是各不相同的:
在 iOS 上,小程序逻辑层的 javascript 代码运行在 JavaScriptCore 中,视图层是由 WKWebView 来渲染的,环境有 iOS 12、iOS 13 等
在 Android 上,小程序逻辑层的 javascript 代码运行在 V8 中,视图层是由自研 XWeb 引擎基于 Mobile Chrome 内核来渲染的
在 开发工具上,小程序逻辑层的 javascript 代码是运行在 NW.js 中,视图层是由 Chromium Webview 来渲染的
也就是说基础库并不能解决小程序的一切问题。JS代码的解析和页面的渲染都要调用手机系统的浏览器内核。这么看来基础库只能算是一个调度资源的调度器,将小程序需要的资源经过简单的封装然后调度过去而已。
按照这样的思路,小程序并不是运行在基础库上的。可以说:小程序是通过基础库运行在手机及微信上的。
三、设置小程序基础库的最低可用版本
用以解决某些低版本库不支持某些api方法导致的问题
在小程序管理后台的 设置 -> 基本设置 -> 版本设置 可以设置一个基础库最低可用版本;还可以设置小程序最低可用版本。
注:在小程序开发工具的 详情 -> 本地设置 -> 调试基础库(这里选择的基础库仅仅是测试环境调试用,并不是配置到代码的基础库,更不会影响到真实用户的手机微信下的版本库。用户的微信小程序基础版本库,只是取决于用户的手机微信版本,微信版本越高越新,基础版本库也就越高越新)