Scripted:VMware 出品的 JavaScript 编辑器

工程 | Andy Clement | 2012 年 10 月 11 日 | ...

本周,Scripted 代码编辑器的第一个版本已在 github 上发布:https://github.com/scripted-editor/scripted

尽管 Scripted 是一款通用代码编辑器,但最初的重点是构建出色的 JavaScript 编辑体验。Scripted 本身完全使用 JavaScript 和 HTML/CSS 构建。它是一款基于浏览器的编辑器,在开发人员的机器上本地运行,并使用 Node.js 实例来提供编辑器代码并执行编辑器操作。运行 Scripted 的唯一先决条件是您安装了最新版本的 Node.js(我们目前正在使用 Node 0.8.11 进行测试)。Scripted 重用了来自 Eclipse Orion 的编辑器组件。

 

Scripted 的实际应用

 

为什么要创建 Scripted?

Scripted 是我们内部原型设计和探索性工作的结果,旨在探索未来工具的不同策略。探索这个领域的驱动因素实际上是两方面的

首先,我们看到许多用户选择不使用 IDE,而是选择更简单的轻量级编辑器(vim、Sublime、textmate)。开发人员通常对常用任务(例如命令行 git)有一套非常熟悉的工具,并且不觉得需要通过其他用户界面学习如何使用这些工具。这些开发人员希望工具能够即时启动,并在操作过程中保持极高的响应速度。然而,目前,当选择放弃 IDE 时,他们似乎也放弃了他们已经习惯的那些好处,例如出色的内容辅助、快速导航和早期错误提示。Scripted 提供了一种轻量级且快速的工具,同时还支持开发人员离不开的关键 IDE 功能——例如内容辅助和对常见模块系统的理解。这些是 Scripted 的主要重点。

其次,我们看到云 IDE 和云工作区概念的普及。开发人员连接到某个远程系统进行开发工作,通常这些工具(例如 Cloud9 IDEeXo Cloud IDE)提供基于浏览器的编辑体验。用户的工作区位于远程系统上。这种设置可能适用于某些团队,尽管根据我们的经验,我们发现仍然需要离线开发模式,因为开发人员并非 100% 的时间都连接到互联网,而且让他们放弃“完全控制”并在远程托管文件可能很困难。通过遵循基于浏览器的编辑模型并在本地托管服务器,Scripted 正在提供一种可以满足开发人员当前需求的工具,并且将来只需将服务器部署到远程即可实现云工作区的使用。

从根本上说,我们觉得许多现有的 JavaScript 工具在某些关键领域存在不足,鉴于我们在语言工具方面的背景,我们想看看是否可以构建一个轻量级工具来解决这些需求。  

专注于 JavaScript

JavaScript 的受欢迎程度持续增长。它不再仅仅用于客户端编程,像 Node.js 这样的框架使其能够用于完整的端到端解决方案。这就是为什么我们选择将 JavaScript 作为 Scripted 的首要重点。当然,我们还对相关语言感兴趣(例如 CoffeeScript,最近发布的 TypeScript),但目前共同点是 JavaScript。我们希望为一种语言构建出色的体验,而不是为多种语言构建不太出色的体验。  

功能集

  • 快速启动,轻量级。
  • JavaScript、HTML 和 CSS 的语法高亮显示。
  • 错误和警告
    • 集成了 JSLint,为 JavaScript 代码提供错误/警告标记。
    • AMD 和 CommonJS 模块解析:存在基本解析,未解析的引用将被标记为错误。
  • 内容辅助
    • HTML、CSS 的基本内容辅助
    • 对于 JavaScript,内容辅助由类型推断引擎驱动,该引擎了解 AMD/CommonJS 模块依赖关系,并使用 JSDoc 注释来帮助其理解代码。
  • 悬停:将鼠标悬停在 JavaScript 标识符上会显示推断的类型签名。
  • 导航:在标识符(被推断器识别的)上按 F8,编辑器将导航到声明。这也适用于模块标识符(例如在 define() 子句中)
  • 格式化:集成了 JSbeautify
  • 侧面板:在主编辑器旁边可以打开一个侧面板——目前可用于托管第二个编辑器。
  • 外部命令的按键绑定:编辑器中的按键绑定可以调用外部命令(less、mvn 等)
有关这些功能的更多详细信息,请参阅 wiki 文档

 

使用 Scripted 开发 Scripted

Scripted 100% 使用 JavaScript、HTML 和 CSS。因此,它是使用 Scripted 编辑器的完美代码库。对于我们的其他工具项目,我们通常不会在日常工作中使用工具本身;相反,我们开发它们供他人使用。在 VMware,我们正在使用 Scripted 开发 Scripted——没有什么比开发人员自己不断遇到错误更能更快地修复错误了!

 

Scripted 入门

github 登录页面包含一个入门视频:

但基本步骤如下

  1. 确保已安装 Node
  2. 从此处获取最新打包版本 (0.2.0):scripted_v0.2.0.zip  
  3. 解压
  4. 确保 bin 文件夹中的脚本可执行(如果是在 linux/mac 上),使用chmod 755 bin/*
  5. 将 bin 文件夹添加到您的路径中

    Mac/Linuxexport PATH=<pathToUnzipLocationOrClone>/bin:$PATH

    Win

    set PATH=<pathToUnzipLocationOrClone>\bin;%PATH%  

  6. 开始使用,像启动 'vi' 一样启动它,使用 'scr' 或 'scripted'

    scr foo.js

Scripted 会在启动时尝试推断您的项目根目录。它通过在层次结构中搜索一个接近的.git.project文件来完成此操作。如果您没有,它将以单文件模式工作。要告诉 Scripted 根目录在哪里,您可以在根目录创建一个简单的(空).scripted文件。Scripted 需要知道根目录,因为当然,某些操作(例如内容辅助、依赖项解析、搜索)是在项目上下文中发生的。  

技术

如前所述,服务器端技术是 Node.js,但它确实是一个非常小的服务器代码量。推断引擎的基础是我们为分析模块依赖关系而编写的一些服务器端 JS。

在客户端,我们不想在编辑器技术上重复造轮子,因此选择使用 Eclipse Orion 的编辑器。这提供了一种快速的编辑体验,对于任何使用过“完整 eclipse”中的编辑器的人来说都非常熟悉——它具有许多相同的行为和按键绑定。在可能的情况下,我们在内容辅助等功能方面所做的工作正在贡献回 Orion 项目。任何需要解析的 JavaScript 都通过我们可恢复的 Esprima 解析器衍生版本进行处理。当开发人员积极编辑文件时,代码通常处于未完成状态,因此即使存在错误也能返回不错的 AST 的可恢复解析器非常重要。

 

下一步是什么?

我们目前处于早期阶段(0.2.0 版本),我们未来的计划包括
  • 更智能的推断,从而带来更好的内容辅助和更简单的导航。
  • 侧面板的更多窗格。目前只有一个编辑器窗格,但我们打算包括搜索结果窗格、文档、git 信息窗格,也许还有代码预览和模拟代码执行窗格。目的是让 Scripted 尽可能尝试自动管理这些窗格,以便屏幕上的所有内容都与手头的任务保持相关。
  • 简单的插件系统。
  • 调试。探索与 Chrome Dev Tools 和 node inspector 等工具的集成。
 

我们决定尽早开源以获取反馈。如果您想帮助我们塑造编辑器,请加入讨论。有一个 scripted-dev google group 用于讨论,以及一个 jira issuetracker 用于记录错误、增强请求和对现有问题进行投票,以确保它们得到适当的优先级。如果您想自己开始修改代码库,我们绝对欢迎提交——请参阅 github 页面了解更多信息。

请尝试一下! https://github.com/scripted-editor/scripted

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,助您加速进步。

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看所有