code: function redirect(originUrl, options) {
          url = getUrl(originUrl);
  
          // 如果url不变则不加载
          if(getCurrentUrl() === url) {
              return;
          }
  
          var method,
              defaultOptions = {
                  trigger: true,
                  forward: true,
                  replace: false
              },
              eventsOptions = {
                  url : url
              };
  
  
          options = merge(defaultOptions, options);
          eventsOptions.target = options.target || null;
          // tirgger 状态不进行页面获取，只切换URL
          if(options.trigger === false) {
              if(isPushState) {
                  method = options.replace ? "replaceState" : "pushState";
                  window.history[method]({}, document.title, url);
              }
              return;
          }
  
          if (!isPushState) {
              options.replace ? (location.replace(url)) : (location.href = url);
              return;
          }
  
          //page render start
          trigger('onpagerenderstart' , eventsOptions);
  
          // 之所以放在页面回调中替换历史记录，是因为在移动端低网速下
          // 有可能后续页面没有在下一次用户操作前返回，而造成添加无效历史记录的问题
          fetchPage(url, options, function(){
              if (options.forward) {
                  method = options.replace ? "replaceState" : "pushState";
                  window.history[method]({}, document.title, originUrl);
              }
          });
      }
docs: 跳转页面
  @param {String} url      目标页面的url
  @param {Object} options  跳转配置参数
  @param {Array|String} options[pagelets]  请求的pagelets
  @param {String} options[containerId]  pagelets渲染容器
  @param {Boolean} options[trigger]  是否触发加载
  @param {Boolean} options[forward]  是否替换URL
  @param {Boolean} options[replace]  是否替换当前历史记录
  @param {HTMLElement} options[target]  触发跳转的DOM元素