开发一个 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 的运行实例、图片说明」

「蒲公英」期刊,每周更新,我们专注于挖掘「基础技术工程化跨端框架技术图形编程服务端开发桌面开发人工智能」等多个大方向的业界热点,并加以专业的解读;不仅如此,我们还精选凹凸技术文章,向大家呈现团队内的研究技术方向。

抬头仰望,蒲公英的种子会生根发芽,如夏花绚烂;格物致知,我们登高远眺、沧海拾遗,以求积硅步而至千里。

蒲公英 · JELLY技术周刊贡献指南

欢迎关注凹凸实验室博客:aotu.io

或者关注凹凸实验室公众号(AOTULabs),不定时推送文章:

蒲公英 · JELLY技术周刊 Vol.13 跟 VSCode 学习如何开发大型 IDE 项目的更多相关文章

  1. 蒲公英 · JELLY技术周刊 Vol.03

    蒲公英 · JELLY技术周刊 Vol.03 「蒲公英」期刊全新升级--JELLY技术周刊!深度挖掘业界热点动态,来自团队大咖的专业点评,带你深入了解团队研究的技术方向. 登高远眺 天高地迥,觉宇宙之 ...

  2. 蒲公英 · JELLY技术周刊 Vol.16 谷歌首个线上 Web 开发者大会

    蒲公英 · JELLY技术周刊 Vol.16 近期,谷歌有史以来的第一次线上谷歌 Web 开发者大会,Web Vitals.PWA.DevTools 和 Lighthouse 6.0 等一系列特性或产 ...

  3. 蒲公英 · JELLY技术周刊 Vol.17: 90 行代码实现 React Hooks

    蒲公英 · JELLY技术周刊 Vol.17 React Hooks 相信大家都不陌生,自被设计出以来就备受好评,在很多场景中都有极高的使用率,其中原理更是很多大厂面试中的必考题,很多朋友都能够如数家 ...

  4. 蒲公英 · JELLY技术周刊 Vol.19 从零开始的 Cloud IDE 开发

    蒲公英 · JELLY技术周刊 Vol.19 你是否也会有想法去开发一个自己的 IDE 却苦于时间和精力不足,完成 Desktop IDE 却又被 Cloud IDE 的概念追在身后难以入睡,这样的两 ...

  5. 蒲公英 · JELLY技术周刊 Vol.20: Vue3 极致优化——分析 Vue3 Compiler 告诉你为什么这么快

    蒲公英 · JELLY技术周刊 Vol.20 性能优化是一条无尽的路,我们总是可以找到各种途径去提升体验,不论是响应时间还是按需加载,亦或是根据框架或者组件有针对性的优化都会是不错的方法.如果你在使用 ...

  6. 蒲公英 · JELLY技术周刊 Vol.22: npm i react-router@6.0.0-beta.0

    蒲公英 · JELLY技术周刊 Vol.22 近期 React Router 已经释出了 6.x 的 beta 版本,正式版本已经不远了,作为 React 生态中的重要组成部分,React Route ...

  7. 蒲公英 · JELLY技术周刊 Vol.25 · Webpack 5 正式发布,你学废了么

    蒲公英 · JELLY技术周刊 Vol.25 阔别两年,Webpack 5 正式发布了,不仅清理掉很多冗余的功能,同样也为我们带来了很多新鲜的能力,不论是默认开启的持久缓存,还是反病毒保护,亦或者被其 ...

  8. 蒲公英 · JELLY技术周刊 Vol 27: 平平无奇 React 17

    蒲公英 · JELLY技术周刊 Vol.27 这个热闹的十月终于要走到尾声,React 17 历经 4 个 RC 版本之后,也于数天前正式发布了,而同在几天前发布的 CRA 4.0 也已经完成了 Re ...

  9. 蒲公英 · JELLY技术周刊 Vol.28: Next.js 10 发布

    蒲公英 · JELLY技术周刊 Vol.28 前端应用到底该选 SSR 还是 CSR?每个项目技术栈决策的时候都会根据实际需求有自己的看法,而在不久前 React 17 发布之后,自然而然也会有同学好 ...

随机推荐

  1. 【Spring注解驱动开发】使用@Scope注解设置组件的作用域

    写在前面 Spring容器中的组件默认是单例的,在Spring启动时就会实例化并初始化这些对象,将其放到Spring容器中,之后,每次获取对象时,直接从Spring容器中获取,而不再创建对象.如果每次 ...

  2. 详解 Flink DataStream中min(),minBy(),max(),max()之间的区别

    解释 官方文档中: The difference between min and minBy is that min returns the minimum value, whereas minBy ...

  3. v-model 指令来实现双向数据绑定

    <div id="app"> <p>{{ message }}</p> <input v-model="message" ...

  4. 完美解决PYQT5登录界面跳转主界面方法

    该问题,有很多种方法,但是很多方法要么这个有问题,要么那个有问题,最后终于找到一种没问题的方法.记录一下: Login.py(登录窗口)文件 import sys from PyQt5 import ...

  5. 添加cookie绕过登陆

    添加cookie绕过登陆 #!/usr/bin/env python # -*- coding: utf-8 -*- from selenium import webdriver import tim ...

  6. if test表达式逻辑判断不能用&&

    用&&会报错 用and 例如: <if test="age!=null and name!=null">

  7. 8种排序算法 Java实现

    冒泡排序 O(n2) 两个数比较大小,较大的数下沉,较小的数冒起来. public static void bubbleSort(int[] a) { //临时变量 int temp; //i是循环次 ...

  8. 动态调试 别人写的jar包

    在别人的jar应用程序里: 在VMoption选项中添加: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=50064 或者 ...

  9. 这一次搞懂Spring Web零xml配置原理以及父子容器关系

    前言 在使用Spring和SpringMVC的老版本进行开发时,我们需要配置很多的xml文件,非常的繁琐,总是让用户自行选择配置也是非常不好的.基于约定大于配置的规定,Spring提供了很多注解帮助我 ...

  10. Flutter学习笔记(37)--动画曲线Curves 效果

    如需转载,请注明出处:Flutter学习笔记(37)--动画曲线Curves 效果