框架概述
收藏
我的收藏框架简介
小程序框架主要包含两部分:逻辑层(JS Core)和 视图层(WebView)。
小程序提供了自己的视图层描述语言 TTML 和 TTSS,以及基于 JavaScript 的逻辑层框架,并在视图层与逻辑层间提供了数据传输和事件系统,让开发者能够专注于数据与逻辑。
下文会从小程序的基础库、逻辑层、视图层、自定义组件、配置等方面详细介绍小程序框架,帮助大家更好地理解小程序的开发要点。
开发小程序与开发 Web 的区别
小程序开发的模式与 Web 开发类似,使用 JavaScript 进行开发,使用 CSS 控制样式,最终使用 HTML 进行渲染。但是,我们开发的小程序的 JS 代码,其实是运行在一个被称为“逻辑层”的独立运行环境中(大多数情况下),并且每个小程序有且仅有一个“逻辑层”。
在 Web 开发中,每个页面中 JS 线程与渲染线程是互斥的;而在小程序中,JS 线程与渲染线程(视图层)是独立的,视图的渲染更新,并不会阻塞 JS 的执行,同时 JS 的逻辑执行,也不会阻塞视图的渲染更新。
JS 驱动视图的更新是异步的,并且 JS 无法直接访问视图的 DOM。逻辑层可以通过 api 调用客户端的原生能力,通过 setData 修改视图层的数据,视图层可以通过触发事件调用逻辑层的方法。
在 Web 端,在用户打开一个页面的时候,我们通常会通过 HTTP/HTTPS 协议请求访问网页,而在小程序端,我们会通过特殊协议(如:sslocal://microapp)请求当前 App 调起小程序,开发者的小程序代码会以包的形式下发到打开小程序的当前 App 上,当前 App 会加载本地 JS/XML/CSS 文件打开小程序页面。
小程序本身没有域名(并非指 request 请求等访问能力没有域名),所以无法像 Web 开发一样,使用 location 等方式进行页面跳转,也不存在“跨域”。
由于小程序的 JS 是运行在 JS 引擎中,而非 webview 中,所以没有 DOM/BOM,进而无法使用 window 等浏览器提供的全局变量,所以很多在浏览器中可以运行的 NPM,在小程序中也无法直接使用。
网页开发中,前端的代码是部署在开发者自己的 CDN 或者自己的服务器上的,对于上传代码等并没有特殊限制。但是在小程序开发中,小程序代码是上传到字节跳动的服务器上统一管理的,下发也是从字节跳动的服务器统一下发的。所以在小程序开发过程中,我们需要借助小程序的开发者工具进行预览上传。
预览效果时,我们也需要使用字节跳动的宿主 App 进行查看。对于每一个小程序,我们都需要在字节跳动开发者平台申请账号用于开发与上传。
在 Web 开发中,我们的运行环境是浏览器,无论是 JS,还是 HTML/CSS,都是运行在浏览器中的。所以,对于我们的 Web 页面,可变的环境是浏览器,我们可能需要处理 Safari/Chrome/Firefox 等 Web 浏览器带来的功能与渲染差异。而当我们开发小程序的时候,也需要处理运行环境的差异,不过小程序的环境差异指的是不同小程序宿主的差异,目前小程序支持的宿主列表如下:
- •抖音
抖音是一个帮助大众用户表达自我,记录美好生活的短视频平台。在这里,用户不仅可以了解最新的明星内容和事件,还可以通过各种智能匹配音乐、一键卡点视频、原创特效、滤镜等记录美好生活。
- •今日头条
今日头条是一款个性化资讯推荐引擎产品,致力于连接人与信息,让优质、丰富的信息得到高效、精准的分发,为用户创造价值。今日头条提供的信息种类丰富,涵盖科技、娱乐、游戏、体育、财经等方面,为用户提供全方位、多维度的热点新闻资讯。
- •今日头条极速版
头条极速版为用户提供个性化专属新闻资讯。头条极速版内存小、省流 量、使用流畅,为用户提供有价值、有温度、更新速度快的新闻资讯。及时聚焦热点,用户刷新就能触达最新资讯。
体验小程序
下载抖音、今日头条等 App 后,扫描下图二维码即可体验字节小程序。