第六届360前端星计划_小程序,直播,代码修养,技术翻译

360前端星计划----小程序/点播/自我修养

小程序

什么是小程序?小程序并不是一个专有技术名词,而是为了解决某个问题而出现的技术方案的总称。小程序是利用web开发的技术栈,利用宿主APP加速渲染,并将APP的能力有效对外释放的一系列技术的总称。

  • 小程序利用本地文件加载,减少网络请求
  • 跨平台兼容好
  • 质量有保证,宿主APP运行放心

技术栈

  • HTML/CSS/JavaScript
  • NodeJS
  • 移动适配
  • HTTPS
  • OAuth2认证方案
  • ...

小程序技术架构,以微信小程序为例

文件结构及其含义

json文件
  • app.json 小程序文件的配置,比如页面路径(pages),顶部背景颜色(window)
  • project.config.json:开发者工具配置
  • 每个page下的json: 个性化page,覆盖app.json中window的配置
  • stiemap.json: 指导搜索引擎进行检索
wxml模板文件
  • HTML模板
  • 有特定的标签
  • 有简单的逻辑判断功能
  • JS不直接操作DOM,只负责set数据
wxss样式文件
  • 提供rpx单位:屏幕宽度和750的比值
  • 精简CSS
  • 提供全局,局部CSS选择
JS脚本
  • 交互逻辑
  • APP,Page,Component三个构造函数
  • 可调用系统API

双线程渲染模型

和浏览器不同,样式的渲染和JS脚本的执行是由两个不同的进程来管理。两个线程通信由微信转发,而网络请求由Native转发。没有DOM,BOW对象。 任何数据的通信有需要微信转发,有一定延迟,是异步的。

生命周期

与vue,react类似:

  • Start开始渲染,以此调用onLoad,onShowcallback,然后状态变成Created
  • 渲染线程通知逻辑线程渲染完毕
  • 逻辑线程返回初试数据以供渲染
  • 渲染完毕,渲染线程变成Ready状态,并通知逻辑线程
  • 逻辑线程触发onReady变成Active状态,发送数据
  • 渲染线程收到数据,进行渲染,此后一直保持在这个准备接受数据进行渲染的状态
  • 小程序切换后台,逻辑线程触发onHide 变成Alive状态,不再发送数据
  • 从后台切换前台时,逻辑线程触发onShow,变成Active状态,再次发送数据
  • 退出时触发onUnload,双线程销毁

组件机制

  • 微信官方提供了官方/原始组件,也可以使用自定义组件
  • 此外还提供了插件机制/云端函数/小游戏

开发发布流程

  • 注册小程序获得APPID
  • 初始化代码并完成代码仓库配置
  • 开发代码并调试
  • 上传并发布

小程序的发展

多端同构框架

  • 一次开发多端适配,更新多端同步
  • 多各个平台进行动态适配
  • 有uni-app,Taro,KBone等架构

KBone

自动化

要开启服务端口

  • 控制跳转制定页面
  • 获取页面数据
  • 获取小程序页面元素状态
  • 触发元素绑定事件
  • 调用wx对象上任意接口
  • 往AppService注入代码对象

硬件框架

  • WMPF 架构,架构了微信的虚拟环境

云IDE

W3C相关提案

点播

什么是视频

格式和内容

  • 文件扩展名 = 媒体封装格式/媒体容器类型
  • 媒体封装格式 != 音视频编码格式
  • 文件内容:头信息,索引信息,视频数据,音频数据

视频数据

音频数据

传输协议

  • 传统场景
    • 流媒体
    • 点播传输:通过range方式或者参数方式完成Seek
  • WEB端:HTTPs,WS,P2P

播放器原理

  • 解协议:解协议
  • 解封装:解封装
  • 解码
  • 渲染

WEB API

媒体兼容判断

videoElement.canPlayType(typestr) 会返回maybe or probably 或者不支持。要知道格式和解码器才能判断,并不准确

交互式视频

基于Video时间轴控制。查看当前时间轴以控制事件触发,然后跳转

播放本地视频文件

使用FileReader() API加载本地视频然后赋值给videoElement.src

播放硬件资源

使用APIwindow.navigator.getUserMedia,返回一个promise,参数是stream,将其赋值给videoElement.srcObject

播放JS拉去的媒体数据

使用API MediaSource

WEB端点播直播&播放方案

点播直播区别

  • 点播:创作者上传-转码-存储-CDN分发-观众
  • 直播:创作者推流-存储-CDN分发-观众

媒体类型的选择

  • HTTP(S)-MP4 点播
  • HTTP(S)-FLV 点播直播
  • HTTP(S)-HLS 点播,直播有高延迟

主要是会有兼容方面的问题,如果原生浏览器支持播放器,直接原生video播放。但是不支持有几种情况

  • 协议或者容器类型不兼容:JS拉去视频,重新解码封装,再通过MSE让video解码
  • 解码器不支持:JS下载数据,WASM解容器,解码。通过WebGL&WebAudio渲染播放
  • 有解密需求:先js下载,解容器之后逐帧解码

代码的自我修养

衡量代码质量的唯一有效标准: WTF/min

代码规范

  • eslint规范:使用第三方包进行代码检查
  • 可能的质量问题
  • 可能的风格问题

格式

  • git commit message 规范
  • 合并提交 git rebase -i

流程化

最后编辑于
?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352

推荐阅读更多精彩内容