docs: function createPage(id, callback) {
    return new Promise((resolve, reject) => {
      const pageId = id.substring(0, id.lastIndexOf("_"));
  
      const ctDataMode = this.getPageConfigAttribute(pageId, 'mode');
      const singleInstance = this.getSingleInstance(pageId);
      if (ctDataMode.toLowerCase().indexOf("singleinstance") !== -1 && singleInstance) {
        if (callback) {
          callback(singleInstance);
        }
        resolve();
      } else {
        let ReactComponent;
        const pageRouterConfig = this.config.router[pageId];
        if (pageRouterConfig) {
          // 路由中配置的ReactComponent
          const component = pageRouterConfig.component;
          if (component && component.then) {
            component.then((ReactComponentWrap) => {
              if (ReactComponentWrap) {
                // 每个页的逻辑组件
                ReactComponent = ReactComponentWrap.default;
                // 顶层容器
                const el = $(`<div data-ct-data-role="page"></div>`)[0];
                document.body.appendChild(el);
                // 包装逻辑组件
                const WrappedComponent = Page.create(el)(ReactComponent);
                // 包装逻辑组件放入顶层容器
                ReactDOM.render(
                  <WrappedComponent
                    ctmobile={this}
                    id={id}
                    // ct-data的一系列配置
                    config={pageRouterConfig.config || {}}
                    // componentDidMount后的操作
                    callback={callback}
                  />
                  ,
                  el,
                  () => {
                    resolve();
                  }
                );
              } else {
                reject();
              }
            }).catch((error) => {
              reject(error);
            });
          } else {
            reject();
          }
        } else {
          reject();
        }
      }
  
    });
  }