蒲公英 · JELLY技术周刊 Vol.13 跟 VSCode 学习如何开发大型 IDE 项目
开发一个 IDE 很难么?这或许是件很难的事情,但当我们参考 VSCode 的技术构架来看,整个开发流程就会平滑顺畅很多,从内核开发、代码编辑器、视图结构到插件系统,在这整个技术构架中我们可以看到很多一个 IDE 开发中需要注意的方方面面。如果你对 VSCode 深入研究过,相信可以从中颇受启发,在此之前不妨先来看看本期推荐。
登高远眺
天高地迥,觉宇宙之无穷
基础技术
跟 VSCode 学习如何开发大型 IDE 项目
VSCode 是当下非常流行的微软开源的代码编辑器,它在满足多样性插件化生态的同时保证了软件的健壮和性能,这得益于其优秀的插件化内核架构设计。本文作者是蚂蚁金服云凤蝶团队成员,文中对 VSCode 的关键技术架构作了深刻的剖析和理解,包括内核分层隔离与扩展机制、依赖注入、命令系统、插件化架构等等,如果你正在打造一个可扩展的软件系统,这篇解读非常值得去学习参考。其实,VSCode 的优秀架构离不开其专注而克制的产品定位——“编辑器 + 代码理解 + 调试”,其他的内容交给社区生态来扩展。最完美的设计,往往是精简到极致,而无法再做减法了。
前端进阶:跟着开源项目学习插件化架构
微内核(插件化)架构被广泛应用于软件系统设计中,譬如 Vue 的插件机制 Vue.use(Plugin)
就是一个简单的插件化设计。微内核架构既能满足灵活扩展的特性,又不影响系统的稳定性。本文基于西瓜视频播放器项目来阐述微内核架构的实践应用,在播放器中,小到一个播放按钮大到一项直播功能特性都可以理解为一个插件模块。作者贴合简练的代码,讲述了插件系统中插件管理、连接和通信的全过程,非常通俗易懂。
图形编程
UI 交互动效合辑
这个合辑收集了近期较有创意的 UI 交互转场动效,可以看到许多不同于寻常转场交互的想法,比如波纹、图形变形与转场动画的结合,又比如利用弧形色块的变化进行的转场效果等等,目前已发布了8期内容,有网页动效设计需求的设计或开发都可以浏览参考,同时感受一下优秀动效设计中的缓动曲线。
AR 体验的“后浪”来了:ARCore Depth API 让遮挡难题迎刃而解
针对 AR 开发场景中景深算法的 Depth API 正式发布。有了这个 API,开发者在支持 ARCore 的 Android 设备上开发 AR 场景时可以更准确地处理虚拟物体与现实物体的遮挡关系,完全杜绝虚拟物体与透视关系不符的“贴图”问题,使得虚拟物体沉浸效果更为真实。文中还有更多的应用场景,并提供了海量动图演示。
桌面开发
Flutter 在桌面端的最新进展:支持打包 Windows 和 Linux 应用了
Flutter 的目标是支持尽可能多的平台和设备,我们已经知道它可以很好地在 iOS 和 Android 设备上运行了,那么它对桌面端的支持情况如何呢?Tim Sneath,Flutter 产品经理,在最近的一篇博文中分享了他们最新的进展,聊到了他们支持了打包 Windows 和 Linux 应用了,如何调用不同桌面系统的原生组件,以及更新插件模型来方便开发者更容易地支持不同的平台等工作。Tim Sneath 还分享了有开发者已经利用 Flutter 发布了最新的桌面端应用,你也可以跟随本文,尝试一下,看看 Flutter 桌面端能否满足你的需求。
译文:https://jelly.jd.com/article/5ef9e4ac7c53070156dd5b8a
服务端开发
Easy-Monitor3 开始你的Node.js内核性能监控之旅
Easy-Monitor3是一款基于 Node.js Addon实现的开源内核采样以及收集工具,提供完整的Web UI支持(APM),支持私有化部署,全平台支持。可用于内存泄露分析,性能瓶颈分析,监控告警等。
工具推介
AutoCannon:一款http压测工具
AutoCannon是一款使用node编写的压测工具,能比wrk生成更多负载,市面上类似的产品很多,老牌的ab,带有图形界面的soap ui等。不过AutoCannon可以方便的进行命令行调用,甚至还能在代码内调用,这对于写压测脚本来说就非常方便。另外它还能结合node clinic 一起使用,定位性能问题无往而不利。
沧海拾遗
沧海拾遗,积跬步以至千里
实现一个简单但有趣的 AR 效果
看完 Depth API 这样的 AR 后浪,不知道你有没有心动呢?如果你也想快速上手 AR,不妨来试试这样一个简单的效果,让你快速对 Web AR 有一个了解,这些基础能帮助我们在 AR 这条路上走的更远。
碰撞检测 -- 源自生活的特效
Web 中有很多常见的 2D 碰撞检测,掌握这些实用的小技巧,在特定需求的页面中会有更为出色的体验。你对这些方法熟悉么?还不了解的话可以进来试试看哦~「内含基于 Canvas 的运行实例、图片说明」
「蒲公英」期刊,每周更新,我们专注于挖掘「基础技术、工程化、跨端框架技术、图形编程、服务端开发、桌面开发、人工智能」等多个大方向的业界热点,并加以专业的解读;不仅如此,我们还精选凹凸技术文章,向大家呈现团队内的研究技术方向。
抬头仰望,蒲公英的种子会生根发芽,如夏花绚烂;格物致知,我们登高远眺、沧海拾遗,以求积硅步而至千里。
欢迎关注凹凸实验室博客:aotu.io
或者关注凹凸实验室公众号(AOTULabs),不定时推送文章:
蒲公英 · JELLY技术周刊 Vol.13 跟 VSCode 学习如何开发大型 IDE 项目的更多相关文章
- 蒲公英 · JELLY技术周刊 Vol.03
蒲公英 · JELLY技术周刊 Vol.03 「蒲公英」期刊全新升级--JELLY技术周刊!深度挖掘业界热点动态,来自团队大咖的专业点评,带你深入了解团队研究的技术方向. 登高远眺 天高地迥,觉宇宙之 ...
- 蒲公英 · JELLY技术周刊 Vol.16 谷歌首个线上 Web 开发者大会
蒲公英 · JELLY技术周刊 Vol.16 近期,谷歌有史以来的第一次线上谷歌 Web 开发者大会,Web Vitals.PWA.DevTools 和 Lighthouse 6.0 等一系列特性或产 ...
- 蒲公英 · JELLY技术周刊 Vol.17: 90 行代码实现 React Hooks
蒲公英 · JELLY技术周刊 Vol.17 React Hooks 相信大家都不陌生,自被设计出以来就备受好评,在很多场景中都有极高的使用率,其中原理更是很多大厂面试中的必考题,很多朋友都能够如数家 ...
- 蒲公英 · JELLY技术周刊 Vol.19 从零开始的 Cloud IDE 开发
蒲公英 · JELLY技术周刊 Vol.19 你是否也会有想法去开发一个自己的 IDE 却苦于时间和精力不足,完成 Desktop IDE 却又被 Cloud IDE 的概念追在身后难以入睡,这样的两 ...
- 蒲公英 · JELLY技术周刊 Vol.20: Vue3 极致优化——分析 Vue3 Compiler 告诉你为什么这么快
蒲公英 · JELLY技术周刊 Vol.20 性能优化是一条无尽的路,我们总是可以找到各种途径去提升体验,不论是响应时间还是按需加载,亦或是根据框架或者组件有针对性的优化都会是不错的方法.如果你在使用 ...
- 蒲公英 · JELLY技术周刊 Vol.22: npm i react-router@6.0.0-beta.0
蒲公英 · JELLY技术周刊 Vol.22 近期 React Router 已经释出了 6.x 的 beta 版本,正式版本已经不远了,作为 React 生态中的重要组成部分,React Route ...
- 蒲公英 · JELLY技术周刊 Vol.25 · Webpack 5 正式发布,你学废了么
蒲公英 · JELLY技术周刊 Vol.25 阔别两年,Webpack 5 正式发布了,不仅清理掉很多冗余的功能,同样也为我们带来了很多新鲜的能力,不论是默认开启的持久缓存,还是反病毒保护,亦或者被其 ...
- 蒲公英 · JELLY技术周刊 Vol 27: 平平无奇 React 17
蒲公英 · JELLY技术周刊 Vol.27 这个热闹的十月终于要走到尾声,React 17 历经 4 个 RC 版本之后,也于数天前正式发布了,而同在几天前发布的 CRA 4.0 也已经完成了 Re ...
- 蒲公英 · JELLY技术周刊 Vol.28: Next.js 10 发布
蒲公英 · JELLY技术周刊 Vol.28 前端应用到底该选 SSR 还是 CSR?每个项目技术栈决策的时候都会根据实际需求有自己的看法,而在不久前 React 17 发布之后,自然而然也会有同学好 ...
随机推荐
- scws中文分词安装和使用
一.下载源码 wget http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2 tar xvjf scws-1.2.3.tar.bz2 二.执行配置 ...
- springboot使用自定义异常
sprinboot使用自定义注解 创建自定义异常类,继承RuntimeException public class MyException extends RuntimeException { p ...
- @loj - 3157@「NOI2019」机器人
目录 @description@ @solution@ @accepted code@ @details@ @description@ 小 R 喜欢研究机器人. 最近,小 R 新研制出了两种机器人,分 ...
- @atcoder - AGC008E@ Next or Nextnext
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个长度为 N 的序列 a,问有多少排列 p,满足对于每一个 ...
- java特性 JDK JRE JVM
1简单性 2可移植性性(跨平台) 3面向对象 4高性能 5分布式 6动态性 7多线程 8安全性JDK:java开发工具 . JRE:JDK:java运行环境 . JVM:JDK:java虚拟机
- [源码解析] GroupReduce,GroupCombine 和 Flink SQL group by
[源码解析] GroupReduce,GroupCombine和Flink SQL group by 目录 [源码解析] GroupReduce,GroupCombine和Flink SQL grou ...
- Beta冲刺--冲刺总结
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta 冲刺 这个作业的目标 Beta冲刺--冲刺总结 作业正文 如下 其他参考文献 ... Beta冲刺 ...
- MySQL实战45讲笔记一
MySQL的基本架构大体可以分为server层和存储引擎层,逻辑架构图如下: Server层除了图中显示的,还包括所有的内置函数(包括日期.时间.数学和加密函数等),存储过程.触发器.视图等跨存储引擎 ...
- linux中神奇的命令alias
在linux中大家应该都知道,有些命令和参数特别繁琐,而且还是大量输入这些命令,这个时候我们就可以使用linux中的alias命令来给这些繁琐的命令起别名,但是,alias 命令只对当前终端有效,当终 ...
- python 3内置函数
2018-07-14 enumerate() 用于指定下标 例: m = ['a','b','c'] for i,j in enumerate(m,1): print(i,j) 输出: 1 a 2 b ...