写点什么

在 Microsoft Word 中,Node 是如何替代宏的

  • 2016-04-05
  • 本文字数:1861 字

    阅读完需:约 6 分钟

最近的 30 年来,宏(macros)成为了 Microsoft Word 的关键卖点。WordBASIC 最初是在 1989 年引入的,它能够让受过极少培训的打字员都能进行计算机编程,从而简化他们的日常工作。

在那个时代,竞争非常激烈。除了 Word,还有 WordStar 和后来居上的 WordPerfect,它们都有自己的宏编程语言。随着竞争的持续,业务用户的需求越来越多,更新也变得非常频繁。

在上世纪 90 年代末期,发生了一些有意思的事情。Microsoft 创建了 Visual Basic for Applications(VBA),这个语言具有(有限的)OOP 能力以及与其相匹配的 IDE,用以替代 WordBASIC,它所创建的并不仅仅是另外一个嵌入式组件。最初的时候,Microsoft 预期将这项技术用在所有的 MS Office 产品之中,随后他们意识到可以对这项技术进行许可认证。很快,众多的公司都提供了对 VBA 的支持,包括 ArcGIS AutoCAD SolidWorks CorelDraw ,甚至还有 WordPerfect

在世纪之交不久,人们就看到了宏的大幅下滑。所谓的“宏病毒”造成了严重的破坏。因为它们隐藏在 Word 文档中,所以病毒扫描器很难发现它们。

作为回应,Microsoft 锁定了 VBA 编程接口。它依然很强大,但是关闭了安全功能,所以使用它实际上很有挑战性。大多数的病毒扫描器会拒绝所有通过 email 共享的带有宏的文档。

尽管它处于下滑的状态之中,Visual Basic for Applications 依然还是存在的。最新的 7.1 版本是在 2013 年发布的,并且从 2010 年开始它就有 64 位版本了。但是随着基于 Web 的字处理器变得越来越流行,VBA 也似乎走入了死胡同。它基于上世纪 90 年代的 COM 技术,并没有可行的方案将其放到 Web 应用中。随着人们逐渐将语言从 BASIC 替换为 JavaScript,再创建一个“Web 版本的 VBA”显得就有点不合时宜了。

.NET 与 Office

为了让人们放弃过时的 VBA 技术,Microsoft 还创建过 Visual Studio Tools for Office(VSTO)。这个开发工具集和库不仅能够创建 Office 插件,还允许独立的应用操纵 Office 文档。

至少在理论上是这样的。但实际上,在这两方面 VSTO 都失败了。

普通的程序员并不想要安装 Visual Studio 并从头开始创建 Office 插件。他们想要录制一个宏,然后对其修改以满足他们的需求。培训学习的成本从“编辑直到可用为止”变成了完全从头开始,这是难以承受的。

另外,还有版本的问题。VBA 风格的宏会存储为纯文本,这意味着只要你不使用只有新版本才有的特性的话,你所编写的代码能够用到任意版本的 Office 之中。而编写 VSTO 插件时,你需要针对特定的 Office 版本进行编程。这意味着开发人员只能使用公司中最老的版本。

另一方面,专业的开发人员对插件基本上没有太大的兴趣。他们希望构建使用和 / 或生成文档的服务器。VSTO 基于 COM 的自动化,这意味着在做实际的工作之前,首先要有 Word 或 Excel 的一个副本。对于 Web 站点的每个用户,都要运行一个重量级桌面应用的副本,这种做法显然是站不住脚的。

与 VBA 类似,我们实际上无法在基于浏览器的 Web 处理器上使用 VSTO。

使用 Node 构建 Office 的 Add-In

如我们前文所述,JavaScript 现在已经成了通用的编程语言。业余爱好者(以及类似的专业开发人员)不想要或不喜欢重量级的 IDE,如 Eclipse 或 Visual Studio,于是 Node 变成了他们的开发平台。所以,Microsoft 选择这些工具来构建 Office add-in,我们也不应该感到意外。

首先,我们需要安装 Node。然后从命令行中,运行下面的两条命令:

复制代码
npm install -g tsd bower gulp yo generator-office
yo office

yeoman generator 会询问我们想要构建哪种类型的 add-in(ribbon command、 task pane 等)、支持哪些 Office 产品以及想要使用 Angular 还是纯 HTML/JavaScript 进行构建。接下来需要执行的命令就是搭建本地的服务器,用来托管你的 add-in。

gulp serve-static这是用于基本的冒烟测试的,对于实际环境来说,你需要在 Web 上运行 Office。在打开一个空文档之后,可以上传 add-in 的 manifest,然后查看它的实际效果。

你可能会问,既然要上传 manifest,为什么还要启动本地服务器呢?这是因为 manifest 在你的电脑同时运行 Office 的时候,它就允许浏览器从电脑上加载 add-in。在实践中,这意味着你可以修改 add-in,点击浏览器的刷新按钮,就能马上看到实际的效果,不需要在每次变化之后都重新上传 add-in。

因为这是一个 Web 应用,所以可以使用浏览器内置的调试工具进行调试。

要看实际效果的话,可以观看 Harrison Shapley 的 Build Office Add-ins with Any Code Editor and Office Online 演示。

查看英文原文: How Node Replaced Macros in Microsoft Word

2016-04-05 19:003604

评论

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

企业IT架构升级必备:YashanDB数据库应用框架介绍

数据库砖家

企业发展与YashanDB数据库的协同效应研究

数据库砖家

TiDB MCP Server 实践和思考

TiDB 社区干货传送门

TiDB第四届征文-运维开发之旅

利用YashanDB数据库构建企业的信息化管理系统

数据库砖家

两种 TiDB 备份方案任你选择:NFS or S3(内含操作实践/备份/恢复)

TiDB 社区干货传送门

TiDB第四届征文-运维开发之旅 TiDB第四届征文-业务场景实战

TiDB + AiOps,迈入智能运维新时代

TiDB 社区干货传送门

TiDB第四届征文-业务场景实战

平凯数据库(TiDB 企业版)敏捷模式在消防管理平台的实践评估报告

TiDB 社区干货传送门

敏捷模式

利用YashanDB数据库构建稳定可靠的业务系统

数据库砖家

YashanDB在数据治理中的作用与效果评估

数据库砖家

演讲案例|兆翔科技 x TiDB:利用TiDB 助力福建四大机场核心系统高效运营

TiDB 社区干货传送门

物流 / 交通

TiDB 多列索引功能:以更快响应速度、最小化表扫描和流畅性能应对大规模场景

TiDB 社区干货传送门

性能调优

关于 decimal 精度问题

TiDB 社区干货传送门

8.x 实践

国产化浪潮中如何评估一款国产数据库的真实实力

TiDB 社区干货传送门

技术趋势 国产化替代 TiDB第四届征文-运维开发之旅 TiDB第四届征文-业务场景实战

我和 TiDB 的故事,是偶然也是一种必然

TiDB 社区干货传送门

TiDB第四届征文-运维开发之旅

利用YashanDB数据库实现多维数据分析

数据库砖家

平凯数据库(TiDB 企业版)敏捷模式数据库试用

TiDB 社区干货传送门

TEM 试用

TiDB敏捷模式部署测试

TiDB 社区干货传送门

TEM 试用

破解YashanDB数据库性能瓶颈的有效策略

数据库砖家

企业级YashanDB备份恢复策略及实用建议

数据库砖家

一家“小而杂”的零售SaaS公司,为什么把数据库从 MySQL “搬”上平凯数据库(TiDB 企业版)敏捷模式?

TiDB 社区干货传送门

平凯数据库(TiDB 企业版)敏捷模式部署测试

TiDB 社区干货传送门

从 MySQL 到 TiDB:调研、测试、迁移、上线全流程实施方案

TiDB 社区干货传送门

MySQL 迁移

利用YashanDB数据库实现数据生命周期管理最佳实践

数据库砖家

# 学生视角下平凯数据库敏捷模式的学习与探索体验

TiDB 社区干货传送门

平凯数据库敏捷模式体验:助力电商行业实现降本增效

TiDB 社区干货传送门

版本测评 性能测评 敏捷模式

从 MySQL 到 TiDB:成本详解

TiDB 社区干货传送门

MySQL 迁移

企业必备:YashanDB数据库部署与优化详解

数据库砖家

灵活使用YashanDB实现企业级数据权限管控

数据库砖家

企业必备:YashanDB数据库性能优化全攻略

数据库砖家

离线部署tidb-8.5.3

TiDB 社区干货传送门

从 1 台服务器起步!TiDB 企业版敏捷模式试用:低成本享分布式数据库核心能力

TiDB 社区干货传送门

集群管理 TEM 试用 部署与初始化

在Microsoft Word中,Node是如何替代宏的_.NET_Jonathan Allen_InfoQ精选文章