【QCon】精华内容上线92%,全面覆盖“人工智能+”的典型案例!>>> 了解详情
写点什么

专访 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:173198
用户头像

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

关注

评论

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

本地缓存Ehcache的应用实践 | 京东云技术团队

京东科技开发者

一键部署Palworld幻兽帕鲁服务器最佳实践

天翼云开发者社区

云计算 云服务器

eosio.token 智能合约介绍

BSN研习社

区块链 智能合约 EOS

Sublime Text v4.0(4169)注册汉化版:代码编辑器的卓越之选

影影绰绰一往直前

AI大模型:基础模型的新时代

百度开发者中心

人工智能 大模型

平台工程: 用Backstage构建开发者门户 - 2

俞凡

平台工程

强大的CAD绘图软件:Autodesk AutoCAD 2024 mac中文破解版

影影绰绰一往直前

探索大模型的端应用与形态

百度开发者中心

人工智能 深度学习 大模型

服装品牌如何利用数字化工具提升商品管理效率

第七在线

萨曼莎AI结合MoE技术创新应用: 引领AI Agents落地新格局

Geek_2d6073

【大数据技术攻关专题】「Apache-Flink零基础入门」手把手+零基础带你玩转大数据流式处理引擎Flink(基础加强+运行原理)

洛神灬殇

大数据 flink flink 实战 技术指南 2024年第三十一篇文章

一文搞懂设计模式—单例模式

Java随想录

Java 设计模式

一文详解应用安全防护ESAPI

华为云开发者联盟

安全 开发 华为云 华为云开发者联盟 应用安全防护

Mac视频下载工具:Downie 4 v4.7.3中文版

影影绰绰一往直前

年度大模型榜单揭晓,智谱AI GLM-4在上海人工智能实验室司南榜单中位居国内榜首

Geek_2d6073

预训练对话大模型深度解读

百度开发者中心

自然语言处理 深度学习 大模型

私有化部署的局域网即时通讯工具

WorkPlus

Video Cut Crop Join for Mac(mac视频剪辑合并软件 )v3.7激活版

iMac小白

LigaAI 的 8 个年度关键词 | 2023 年度盘点

LigaAI

研发管理 研发效能度量 2023年终总结

Mac专业PDF编辑与管理工具:PDF Expert v3.9中文激活版

影影绰绰一往直前

由亚马逊云科技 Graviton4 驱动的全新内存优化型实例 Amazon EC2 实例(R8g),现已开放预览

亚马逊云科技 (Amazon Web Services)

Java’ Amazon EC2

数字照片管理和编辑软件 Lightroom Classic 2022 mac中文破解版

影影绰绰一往直前

数字化商品计划管理:提升运营效率和竞争力的关键

第七在线

实用技巧:Mock.js 模拟数据生成教程

Apifox

前端 前端开发 Mock Mock 服务 Mock.js

DevOps是什么?只看这篇文章就够了!

华为云PaaS服务小智

DevOps 华为云

Cornerstone for Mac v4.2永久激活版下载

影影绰绰一往直前

预训练对话大模型深度解读

百度开发者中心

自然语言处理 深度学习 大模型训练 大模型

软件卸载和清理工具:App Cleaner & Uninstaller mac v8.2.6中文破解版

影影绰绰一往直前

全能pdf编辑阅读软件 PDF Reader Pro for mac直装激活版

影影绰绰一往直前

从3天到3小时,“文思助手”让行业专业写作“文思泉涌”

飞桨PaddlePaddle

百度 paddle 百度飞桨 文心大模型‘ 飞桨星河社区

面试官:Sentinel是如何实现限流的?

王磊

Java 面试

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