极客视点
极客时间编辑部
极客时间编辑部
113240 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/04:10
登录|注册

专访Yorkie:JavaScript如何开发IoT应用?

讲述:丁婵大小:1.90M时长:04:10
随着 5G 和 AI 技术的发展,物联网行业正迎来一个新的高速发展期。一些先驱者试图将 JavaScript 引入 IoT 开发,打通物联网与庞大的前端开发者生态,ShadowNode 就是其中的一个开源解决方案。近日,ShadowNode 作者约克(Yorkie)向 InfoQ 分享了 JavaScript 在 IoT 领域开发的一些痛点和趋势。
ShadowNode 被约克定义为设备端的 Node.js 运行时,并且支持 N-API。它可以解决开发者在 128MB 设备下,运行 Node.js 的使用问题,它能够在裸运行时只有 1MB 占用。约克透露其做 ShadowNode 的原因很简单,就是想补齐 Node.js 在物联网的部分,让 JavaScript 的开发者从云端开发再次回到用户端,并希望 JavaScript 生态和 IoT 生态能融合得更加紧密。
可能对于不了解 IoT 的人来说,Node.js 和 JavaScript 的性能似乎不够好,那么为什么能用在嵌入式平台上面呢?其实,ShadowNode 目前还没有真正在嵌入式平台上运行 Node.js,对此,约克也分享了其在设备成本一降再降时,是如何优化性能与内存的。
首先是内存上的优化,主要包括常用 ByteCode 的 Compact 模式,压缩指针(Compressed Pointer),选择性地支持了 ECMA 标准等。
其次是性能优化,ShadowNode 是集成在自己的操作系统(YodaOS)上的,所以一些基础 Node.js 包是放在全局路径(/usr/lib/node_modules),按照 Node.js Modules 的搜索算法,它是一个就近原则的算法,这导致其在加载系统模块时,会消耗大量时间在搜索路径,于是,他们引入了一个新的环境变量( NODE_PRIORITIZED_PATH),设置后会优先搜索该路径下的模块。
此外, ShadowNode 比较常用的优化手段是,当遇到一个体积大、依赖多的第三方库要用时,他们通常会用 C 语言把底层重写,然后做一层很薄的 JavaScript API,让它与社区库保持一致,内置的 MQTT / WebSocket 都是按这个套路来完成的,效果都很显著。
而目前 ShadowNode 也有一些性能还有待优化,同时这也是 JavaScript in IoT 的痛点,主要有以下 3 点。
语法的支持,虽然现在 ShadowNode 支持了箭头函数、Class、Symbol 等,但仍然不支持 const/let、generator 和 async/await 等,这可能对于习惯了 Node.js 新特性的开发者来说,会是一段相对痛苦的经历。
调试方式相对简陋,ShadowNode 并不支持 Inspector 和大部分 Chrome DevTools 的功能,仅支持了 Heap Profiler。
生态的缺乏,虽然 ShadowNode 支持运行 NPM 格式的包,但不幸的是,很少有包能在 ShadowNode 上运行起来,最主要的原因就是大部分的包都有大量的依赖。
除此之外,还有对于 RTOS ,完整地使用 ShadowNode(Node.js)非常困难,仍然需要做大量的优化以及移植的工作。
最后,约克分享了他对 IoT 开发前景的看法。他表示,有一个人们很熟悉却极少提到的词,就是 Web,在约克看来,Web 早就脱离浏览器(甚至是 GUI)的范畴了,它代表了一系列的标准。他坚持认为 Web 依然会在 IoT 时代大放异彩,Web 中的一些冷门的 API 也会慢慢进入开发者的视野。再加上 Node.js 与 Deno 都在积极拥抱 Web API,所以约克建议前端开发者或 Node.js 开发者,保持关注标准,或者通过参与 Node.js、Deno、ShadowNode 来加入实现标准的行列中。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

全部留言(1)

  • 最新
  • 精选
  • Panda
    IoT 有搞头
收起评论
显示
设置
留言
1
收藏
28
沉浸
阅读
分享
手机端
快捷键
回顶部