jdists 强大的代码块预处理工具

jopen 9年前

 

jdists logo

背景

软件发布流程

code pretreatment

通常软件发布时会将源文件做一次「预处理」再编译成可执行文件,才发布到市场。

「预处理」的目的主要是出于以下几点

  • 配置线上运行环境,如调试服务地址需变更为实现线上地址;
  • 减少执行程序的大小,移除没有使用的代码或资源并压缩;
  • 增加逆向工程的成本,给代码做混淆(包括改变标识符和代码结构),降低可读性;
  • 移除或增加调试功能,关闭或开启一些特权后门。

一些 IDE 已在「编译」时集成了「预处理」功能。

什么是 jdists

jdists 是一款强大的代码块预处理工具。

什么是「代码块」(code block)?

通常就是注释或注释包裹的代码片段,用于表达各种各样的含义。

举个栗子

  • TODO 注释,表示代码中待完善的地方
/* TODO 功能待开发 */

  • wiredep 注释,表示引入 bower 组件依赖的 css 资源
  <!-- bower:css -->    <link rel="stylesheet" href="bower_components/css/bootstrap.css" />    <!-- endbower -->

jshint.js 顶部注释,表示版权声明
/*!   * JSHint, by JSHint Community.   *   * This file (and this file only) is licensed under the same slightly modified   * MIT license that JSLint is. It stops evil-doers everywhere:   *   *   Copyright (c) 2002 Douglas Crockford  (www.JSLint.com)   * .........   */

  • jshint.js 另一部分注释,表示代码检查配置项
/*jshint quotmark:double */  /*global console:true */  /*exported console */

总之,本文所指「代码块」就是有特殊意义的注释。

什么是「代码块预处理」?

指在代码编译之前,将代码文件按代码块粒度做一次编码或解析。

举个栗子,原本无效的代码片段,经过编码后变成了有效代码。

预处理前:

/*<jdists> console.log('Hello World!'); </jdists>*/

预处理后:

console.log('Hello World!');

项目主页:http://www.open-open.com/lib/view/home/1438772495020