写点什么

专访 Scripted——由 VMware 发布的、用于本地开发的 JavaScript 编辑器

  • 2013-01-03
  • 本文字数:2977 字

    阅读完需:约 10 分钟

Scripted 是一款新的基于浏览器的 JavaScript 代码编辑器,它工作于本地,并且由 Node.js Web 服务器提供内容服务。该编辑器由 VMware 基于 Eclipse Orion 的编辑器组件开发。Scripted 是专为这样的开发者而创建——他们在本地开发时,希望使用的是简单、轻量级的工具,而不是非常完整的 IDE 工具。

VMware 公司 SpringSource 部门的主管工程师 Andy Clement 列举了 Scripted 的主要特性

  • 启动快速,轻量级。
  • 支持 JavaScript、HTML 和 CSS 的语法高亮。
  • 错误与警告:
    • 集成了 JSLint,可以标记 JavaScript 代码中的错误 / 警告。
    • AMD 和 CommonJS 模块解析:有一个基本的解析策略,未解析的引用将被标记为错误。
  • 内容辅助:
    • 针对 HTML 和 CSS 的基本内容辅助功能。
    • 针对 JavaScript,内容辅助功能是由一个类型推导引擎驱动的,该引擎能够感知 AMD/CommonJS 模块依赖,而且还使用了 JSDoc 注释来帮助理解代码。
  • 悬停:鼠标悬停在 JavaScript 标示符上时,会显示推断出的类型签名。
  • 导航:在标识符(该推断已被识别)上按 F8,编辑器将跳转到该标示符的声明处。该功能在模块标识符上也有效(比如在 define() 子句中)。
  • 格式化:集成了 JSbeautify。
  • 侧面板:在主编辑器的旁边可以打开一个侧面板——目前该侧面板主要用来承载副编辑器。
  • 外部命令的按键绑定:在编辑器中进行按键绑定以后,可以调用外部命令(如 less 和 mvn 等)。

在不久的将来,该团队打算改进代码辅助和导航功能,以便提供更多的操作面板来承载不同内容,如文档、搜索结果和代码预览等,还准备提供一个简单的插件系统,并支持使用 Chrome Development Tools 和 Node Inspector 进行调试。他们也正在考虑支持类似的语言,诸如 CoffeeScript 和 TypeScript 等。

InfoQ 采访了 Clement,以便更多地了解 Scripted 以及该团队下一步的计划。

InfoQ:Scripted 是基于 Eclipse Orion 开发的。为什么要从 Orion 分离出一个单独的项目呢?

我们曾经很中意 Orion 编辑器组件——Scripted 客户端就是以它为基础的。但 Orion 主要是为远程托管的工作空间或项目而设计的,本地服务模式只是一个可选项。我们发现远程项目并没有吸引所有的开发者,而且我们起初希望围绕本地服务模式设计点东西。在这种情况下,我们觉得 Orion 的服务器有点过于重量级,而且很多属性我们当时是用不到的,比如多用户支持和 Git 集成。通过 Scripted 的客户端 / 服务器架构,我们具有一定的灵活性,以便可以在将来的某个时刻将本地服务器转移到远程服务器上。

InfoQ:Scripted 和 Orion 有哪些主要区别?乍一看,我发现 Scripted 有个副编辑器,而且导航也不相同。还有什么其他重要的改变吗?

Orion 是个可扩展的工具平台。我们并不需要那样的可扩展性,相反我们提供的是一系列更为固定的组件集。Scripted 旨在成为单页面风格的应用程序,并为开发者提供与 vi、textmate 或 sublime 等工具类似的使用体验。在使用像 Git 等系统工作时,Orion 提供了专门的 UI;而 Scripted 也认识到了这一点,对某些任务来说,用户已经有一套熟悉的工具,我们不希望他们为同样的事情再学习另一套 UI。我们一直致力于代码理解(code comprehension)这一关键特性,并将持续改进。我们在构建能够理解 JavaScript 代码的类库上投入了很多精力,希望可以提供更加优秀的内容辅助功能,并且在处理代码时提供更好的导航体验。在开发者编写代码时,不管他们使用的是 AMD 还是 CommonJS 模块系统,Sripted 都能检测出来。如果模块引用无法识别,Sripted 会在编辑器中标记错误;如果从一个模块访问了另一个模块,它会根据对模块结构的理解提供适当的内容提示。它还能解析各种有效的 JSDoc,以便更好地理解参数和返回值。

你提到了侧面板,目前它用来承载副编辑器。在接下来的几个版本中,我们打算在侧面板上多花些心思。可以把它当成这样一个地方,当要在主编辑器中完成某项任务时,任何辅助内容都可以出现在这里。刚开始的时候它被用于副编辑器,不过我们计划在这里支持文档、搜索结果等面板。最理想的情况下,我们希望它不仅可以包含用户所要求的各种内容,而且还可以预先提供一些用户没有要求但 Scripted 认为会用到的内容。也许会有这样一个面板,它可以跟踪主编辑器光标的位置,并且不断更新,如果光标处是任何调用代码的话,该面板可以将被调用内容显示出来(类似于最近在 light table 中看到的某些功能)。重要的是,我们希望这个侧面板包含的是各种相关的内容——Scripted 将会努力积极的保证这一点。

InfoQ:Orion 在服务端使用的是 Jetty。为什么你们却转移到 Node.js 了呢?

我们希望服务端尽量是轻量级的,而 Orion 服务端,如你所说使用的是 Jetty,它跟我们的需求比起来要更复杂一些。我们没有必要使用 Orion 服务器,一旦做出这个决定,我们的选择就非常多了。在以前的那些工具项目中,我们常常遇到的问题就是虽然我们开发了这些工具,但是我们自己却并没有很积极的使用它们,而是简单地将它们交付给用户。我们希望通过 Scripted 改变这种状况,在日常的开发工作中我们就积极的使用它。这种情况自然而然地引导我们除了客户端,在服务端也使用 JavaScript。Node.js 也就成为后端技术的不二之选。迄今为止,运行得还不错。我们对 CommonJS 的支持工作基本上已经开发完了,因为我们需要它来简化服务端的开发工作。

InfoQ:Scripted 是在本地运行的,这就意味着来自服务器的响应也更加快速,但是它是如何跟基于 Web 的代码库进行集成并和其它开发者合作的呢?

目前它还没有跟基于 Web 的代码库或者是“服务端的工作空间”进行集成,如果你愿意这么说的话。在我们的路线图中,我们希望可以远程部署服务器,当然,这并不是该项目的初衷。我们发现开发者们目前还不想放弃在远程工作空间上进行代码操作的习惯——但是未来这种情况可能会有所改变。

InfoQ:对于 Scripted 的未来,你们有什么计划?

现在才刚刚起步。我们发布的第一个版本是 0.2 版,主要是用来收集用户的反馈。在接下来的几个版本上,我们主要的关注点仍然是围绕 JavaScript 的编辑体验:持续改进代码分析功能,提供更好的内容辅助功能。与此同时我们希望可以开始在侧面板上添加一些新的子面板,诸如搜索和文档。我们也开始准备将测试集成进来以提供更简单的方式来加载测试,查看测试输出,进一步我们还会探索将调试器也集成进来。

InfoQ: 关于 VMware 对 Scripted 的参与和计划,你有什么可以分享的吗?

Vmware 一度曾经非常积极地参与过开发工具的开发工作,其中包括 Spring 工具套件和 Groovy/Grails 工具套件。相对于为 IDE 提供插件的传统方式,作为一种对替代方式的探索,VMware 创建了 Scripted。我们认识到有些开发者希望使用轻量级编辑器,但目前这往往意味着要放弃那些能够极大提高生产效率的常见 IDE 特性(如内容辅助和重构)。Scripted 试图证明这并不是必须的。我还应该稍微提一下,Scripted 团队正在和 Orion 团队进行积极的合作,并尽可能回馈 Orion 项目。

编者注:Scripted 基于 Eclipse 公共许可证 1.0 版开放源代码,可以在GitHub 下载

查看英文原文 Interview on Scripted, A JavaScript Editor for Local Development from VMware


感谢臧秀涛对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2013-01-03 06:173333
用户头像

发布了 31 篇内容, 共 85358 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

新思科技解读2023年软件安全行业六大趋势

InfoQ_434670063458

新思科技 软件安全

优秀实践案例征集火热开启,快来投稿!

Apache RocketMQ

消息列队

百度APP iOS端内存优化-原理篇

百度Geek说

ios 内存 企业号 2 月 PK 榜

基于 Kubernetes 的企业级大数据平台,EMR on ACK 技术初探

阿里巴巴云原生

阿里云 容器 云原生

MASA Stack 1.0 发布会讲稿 —— 产品篇

MASA技术团队

.net 云原生 MASA MASA Blazor

【等保小知识】过等保后可以收到哪些资料?

行云管家

等保 等级保护 过等保

直播预约|数据库掌门人论坛召开,共谋中国数据库生态发展新路径

镜舟科技

数据库 大数据 开源

有了 ETL 数据神器 dbt,表数据秒变 NebulaGraph 中的图数据

NebulaGraph

数据库 大数据 数据处理 图数据库

Apipost自动化测试功能概述

不想敲代码

自动化测试 测试自动化 apipost

使用 NineData GUI 创建与修改 ClickHouse 表结构

NineData

MySQL 分布式数据库 Clickhouse Dbeaver NineData

聊一聊,我对DDD的关键理解

阿里技术

DDD

记录一次还算优雅的代码设计

京东科技开发者

线程 cpu 优雅 代码设计 企业号 2 月 PK 榜

从一个Demo说起Zookeeper服务端源码

宋小生

zookeeper

高级java体系课第1期第二周作业

刘博

【活动报名】re:Invent - AI 应用助力企业构建数字战略

亚马逊云科技 (Amazon Web Services)

物联网平台选型葵花宝典:盘点开源、SaaS及通用型平台的优劣对比

AIRIOT

物联网 物联网平台选型 平台选型

直播预告丨 立即解锁 ALB Ingress 高级特性

阿里巴巴云原生

阿里云 容器

云原生技术在容器方面的应用

统信软件

容器 云原生 云服务

Apifox 1 月更新 | 将接口调试做到「极简」的新模式上线

Apifox

Apifox API

什么是智能制造,为什么它对传统制造业影响如此之大?

PreMaint

智能工厂 智能制造

VSCode一键接入Notebook体验算法套件快速完成水表读数

华为云开发者联盟

人工智能 华为云 企业号 2 月 PK 榜 华为云开发者联盟

GaussDB(DWS)现网案例:collation报错

华为云开发者联盟

数据库 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

给 Databend 添加 Aggregate 函数 | 函数开发系例二

Databend

统一观测丨如何使用Prometheus 实现性能压测指标可观测

阿里巴巴云原生

阿里云 云原生 Prometheus 压测

2023年最新互联网大厂精选Java面试真题集锦(JVM、多线程、MQ、MyBatis、MySQL、Redis、微服务、分布式、ES、设计模式)

架构师之道

编程 程序员 计算机 java面试

提升软件质量?为什么不试试华为云CodeArts Check

华为云开发者联盟

云计算 华为云 企业号 2 月 PK 榜 华为云开发者联盟

使用 QuTrunk+Amazon Deep Learning AMI(TensorFlow2)构建量子神经网络

亚马逊云科技 (Amazon Web Services)

深度学习 量子计算

南宁等级测评机构有几家?分别是哪几家?

行云管家

等保 南京 等级保护 等级

火山引擎DataLeap:3个关键步骤,复制字节跳动一站式数据治理经验

字节跳动数据平台

大数据 数据治理 数据研发 实际应用 企业号 2 月 PK 榜

OpenHarmony 3.2 Beta多媒体系列——视频录制

OpenHarmony开发者

OpenHarmony

OpenInfra峰会议程已公布,特色主题演讲,百余场专题会议等你来参与!

Geek_2d6073

专访Scripted——由VMware发布的、用于本地开发的JavaScript编辑器_JavaScript_Abel Avram_InfoQ精选文章