Skip to content

3.2.Javascript编译过程

zhangwentao edited this page Jun 14, 2016 · 1 revision

Javascript编译过程

Her 的编译过程中,Javascript 文件将经历以下几个阶段

jsWrapper

jsWrapper 阶段会分析文件中的require('xxxx')所有同步依赖,给JS文件封装define函数,让这个JS文件符合AMD规范

例如

/*sidebar.js*/
exports.run = function(){
    var $ = require('home:static/lib/js/jquery-1.10.1.js');
    $('html').toggleClass('expanded');
};

编译后会变成

/*sidebar.js*/
define('home:widget/sidebar/sidebar.js',["global","module","exports","require","home:static/lib/js/jquery-1.10.1.js"],function(global, module, exports, require){

  exports.run = function(){
      var $ = require('home:static/lib/js/jquery-1.10.1.js');
      $('html').toggleClass('expanded');
  };

});

requireAnalyze

requireAnalyze 阶段会分析Javascript文件中的同步依赖和异步依赖关系,并添加到文件的依赖中,为之后输出依赖关系表作准备

jsExpand

jsExpand 阶段会扩展js语言的能力

这一阶段处理包括:

  • 替换文件中的__inline('xxx')函数为xxx文件的内容
  • 替换__uri('xxx')函数中的相对路径为线上引用的绝对路径
Clone this wiki locally