跳转至

六 新页面开发


title: ecode文档 - 六、新页面开发 created: 2026-04-19 updated: 2026-04-19 type: reference tags: [oa, ecode, weaver, frontend] related: [oa/ecode-guide.md] source: https://e-cloudstore.com/doc.html


ecode, weaver, frontend] related: [oa/ecode-guide.md] source: https://e-cloudstore.com/doc.html ---#### 六、新页面开发

1、PC端新页面开发:

ecodeSDK.rewriteRouteQueue.push(option) ecology版本要求:1906及1906+

ecodeSDK.rewriteRouteQueue.push(option) ecology版本要求:1906及1906+

(1)参数说明
参数 说明 类型 可选 默认 备注
option 复写配置 object 必填 {}
option.fn 复写钩子函数 function 必填 (params)=>{} params 参数请看下一个表格
option.order 复写排序 integer 选填 0
option.desc 复写说明 string 选填 ‘’

参数 说明 类型 可选 默认 备注

参数 说明 类型 可选 默认 备注 参数说明类型可选默认备注

option 复写配置 object 必填 {}

option.fn 复写钩子函数 function 必填 (params)=>{} params 参数请看下一个表格

option.order 复写排序 integer 选填 0

option.desc 复写说明 string 选填 ‘’ 无

option 复写配置 object 必填 {}

option复写配置object必填{} option.fn 复写钩子函数 function 必填 (params)=>{} params 参数请看下一个表格 option.fn复写钩子函数function必填(params)=>{}params 参数请看下一个表格 option.order 复写排序 integer 选填 0

option.order复写排序integer选填0 option.desc 复写说明 string 选填 ‘’ 无 option.desc复写说明string选填‘’无

params 数据

params 数据

参数 说明 类型 备注
Com 路由组件 react component 路由定义时传入的compoent
Route 路由参数 object
nextState 路由参数 object

参数 说明 类型 备注

参数 说明 类型 备注 参数说明类型备注

Com 路由组件 react component 路由定义时传入的compoent

Route 路由参数 object

nextState 路由参数 object 无

Com 路由组件 react component 路由定义时传入的compoent Com路由组件react component路由定义时传入的compoent Route 路由参数 object

Route路由参数object nextState 路由参数 object 无 nextState路由参数object无

(2)基本例子

register.js:需要前置加载,注册了路由就会动态注入到react路由中 tState 路由参数 object 无 nextState路由参数object无

(2)基本例子

register.js:需要前置加载,注册了路由就会动态注入到react路由中register.js:需要前置加载,注册了路由就会动态注入到react路由中

ecodeSDK.rewriteRouteQueue.push({
  fn:(params)=>{
    const {Com,Route,nextState} = params;
    const cpParams = {
      path:'main/cs/app', //路由地址
      appId:'${appId}',
      name:'pageSimple', //具体页面应用id
      node:'app', //渲染的路由节点,这里渲染的是app这个节点
      Route,
      nextState
    }
    if(ecodeSDK.checkPath(cpParams)) { //判断地址是否是要注入的地址
      const acParams = {
        appId:cpParams.appId,
        name:cpParams.name, //模块名称
        props:params, //参数
        isPage:true, //是否是路由页面
        noCss:true //是否禁止单独加载css,通常为了减少css数量,css默认前置加载
      }
      //异步加载模块${appId}下的子模块pageSimple
      return ecodeSDK.getAsyncCom(acParams);
    }
    return null; //这里一定要返回空,不然会干扰到其它新页面
  },
  order:10,
  desc:'Demo简单页面'
});
(acParams); } return null; //这里一定要返回空,不然会干扰到其它新页面 }, order:10, desc:'Demo简单页面' }); `1. `ecodeSDK.rewriteRouteQueue.push({` 2. ` fn:(params)=>{` 3. ` const {Com,Route,nextState} = params;` 4. ` const cpParams = {` 5. ` path:'main/cs/app', //路由地址` 6. ` appId:'${appId}',` 7. ` name:'pageSimple', //具体页面应用id` 8. ` node:'app', //渲染的路由节点,这里渲染的是app这个节点` 9. ` Route,` 10. ` nextState` 11. ` }` 12. ` if(ecodeSDK.checkPath(cpParams)) { //判断地址是否是要注入的地址` 13. ` const acParams = {` 14. ` appId:cpParams.appId,` 15. ` name:cpParams.name, //模块名称` 16. ` props:params, //参数` 17. ` isPage:true, //是否是路由页面` 18. ` noCss:true //是否禁止单独加载css,通常为了减少css数量,css默认前置加载` 19. ` }` 20. ` //异步加载模块${appId}下的子模块pageSimple` 21. ` return ecodeSDK.getAsyncCom(acParams);` 22. ` }` 23. ` return null; //这里一定要返回空,不然会干扰到其它新页面` 24. ` },` 25. ` order:10,` 26. ` desc:'Demo简单页面'` 27. `});` `ecodeSDK.rewriteRouteQueue.push({ecodeSDK.rewriteRouteQueue.push({ecodeSDK.rewriteRouteQueue.push({ fn:(params)=>{fn:(params)=>{` fn:(params)=>{` const {Com,Route,nextState} = params; const {Com,Route,nextState} = params;const {Com,Route,nextState} = params; const cpParams = {const cpParams = {` const cpParams = {` path:'main/cs/app', //路由地址 path:'main/cs/app', //路由地址path:'main/cs/app', //路由地址 appId:'${appId}',appId:'${appId}',` appId:'${appId}',` name:'pageSimple', //具体页面应用id name:'pageSimple', //具体页面应用idname:'pageSimple', //具体页面应用id node:'ap mple', //具体页面应用idname:'pageSimple', //具体页面应用id` name:'pageSimple', //具体页面应用id` node:'apmple', //具体页面应用id name:'pageSimple', //具体页面应用idname:'pageSimple', //具体页面应用id node:'app', //渲染的路由节点,这里渲染的是app这个节点node:'app', //渲染的路由节点,这里渲染的是app这个节点` node:'app', //渲染的路由节点,这里渲染的是app这个节点` Route, Route,Route, nextStatenextState` nextState` } }} if(ecodeSDK.checkPath(cpParams)) { //判断地址是否是要注入的地址if(ecodeSDK.checkPath(cpParams)) { //判断地址是否是要注入的地址` if(ecodeSDK.checkPath(cpParams)) { //判断地址是否是要注入的地址` const acParams = { const acParams = {const acParams = { appId:cpParams.appId,appId:cpParams.appId,` appId:cpParams.appId,` name:cpParams.name, //模块名称 name:cpParams.name, //模块名称name:cpParams.name, //模块名称 props:params, //参数props:params, //参数` props:params, //参数` isPage:true, //是否是路由页面 isPage:true, //是否是路由页面isPage:true, //是否是路由页面 noCss:true //是否禁止单独加载css,通常为了减少css数量,css默认前置加载noCss:true //是否禁止单独加载css,通常为了减少css数量,css默认前置加载` noCss:true //是否禁止单独加载css,通常为了减少css数量,css默认前置加载` } }} //异步加载模块${appId}下的子模块pageSimple//异步加载模块${appId}下的子模块pageSimple` //异步加载模块${appId}下的子模块pageSimple` return ecodeSDK.getAsyncCom(acParams); return ecodeSDK.getAsyncCom(acParams);return ecodeSDK.getAsyncCom(acParams); }}` }` return null; //这里一定要返回空,不然会干扰到其它新页面 return null; //这里一定要返回空,不然会干扰到其它新页面return null; //这里一定要返回空,不然会干扰到其它新页面 },},` },` order:10, order:10,order:10, desc:'Demo简 return null; //这里一定要返回空,不然会干扰到其它新页面},`` }, },order:10,`` order:10, order:10,desc:'Demo简return null; //这里一定要返回空,不然会干扰到其它新页面 },},` },` order:10, order:10,order:10, desc:'Demo简单页面'desc:'Demo简单页面'` desc:'Demo简单页面'`});});}); order:10,`` order:10, order:10,desc:'Demo简单页面'`` desc:'Demo简单页面' desc:'Demo简单页面'});``});});> index.js:不需要前置加载,所有非前置加载js,会被发布成模块 /cloudstore/release/${appId}/index.js

index.js:不需要前置加载,所有非前置加载js,会被发布成模块 /cloudstore/release/${appId}/index.js

const { Provider } = mobxReact;
const SimpleStore = ecodeSDK.imp(SimpleStore);
const Simple = ecodeSDK.imp(Simple);

//实例化store,并通过provider注入所有组件中
const allSimpleStore = {
  simpleStore:new SimpleStore()
}

class simpleRoot extends React.Component {
  render() {
    return (
      <Provider {...allSimpleStore}>
        <Simple {...this.props} />
      </Provider>
    )
  }
}

//发布模块
ecodeSDK.setCom('${appId}','pageSimple',simpleRoot);
s} /> ) } }

//发布模块 ecodeSDK.setCom('${appId}','pageSimple',simpleRoot); `1. `const { Provider } = mobxReact;` 2. `const SimpleStore = ecodeSDK.imp(SimpleStore);` 3. `const Simple = ecodeSDK.imp(Simple);` 4. 5. //实例化store,并通过provider注入所有组件中 6. const allSimpleStore = { 7. simpleStore:new SimpleStore() 8. } 9. 10. `class simpleRoot extends React.Component {` 11. ` render() {` 12. ` return (` 13. ` <Provider {...allSimpleStore}>` 14. ` <Simple {...this.props} />` 15. ` </Provider>` 16. ` )` 17. ` }` 18. `}` 19. 20. //发布模块 21. ecodeSDK.setCom('${appId}','pageSimple',simpleRoot); const { Provider } = mobxReact;``const { Provider } = mobxReact;const { Provider } = mobxReact;const SimpleStore = ecodeSDK.imp(SimpleStore);``const SimpleStore = ecodeSDK.imp(SimpleStore);const SimpleStore = ecodeSDK.imp(SimpleStore);const Simple = ecodeSDK.imp(Simple);``const Simple = ecodeSDK.imp(Simple);const Simple = ecodeSDK.imp(Simple);//实例化store,并通过provider注入所有组件中``//实例化store,并通过provider注入所有组件中`//实例化store,并通过provider注入所有组件中`const allSimpleStore = {``const allSimpleStore = {`const allSimpleStore = {` simpleStore:new SimpleStore()`` simpleStore:new SimpleStore()` simpleStore:new SimpleStore()`}``}`}class simpleRoot extends React.Component {class simpleRoot extends React.Component {`class simpleRoot extends React.Component {` render() { render() {render() { return (return (` return (` <Provider {...allSimpleStore}> <Provider {...allSimpleStore}> rovider {...allSimpleStore}><Provider {...allSimpleStore}>` <Provider {...allSimpleStore}>` rovider {...allSimpleStore}> <Provider {...allSimpleStore}> <Simple {...this.props} />` <Simple {...this.props} />` </Provider> </Provider> ))` )` } }}}}`}`````//发布模块//发布模块//发布模块ecodeSDK.setCom('${appId}','pageSimple',simpleRoot);`ecodeSDK.setCom('${appId}','pageSimple',simpleRoot);ecodeSDK.setCom('${appId}','pageSimple',simpleRoot); SDK.setCom('${appId}','pageSimple',simpleRoot);`ecodeSDK.setCom('${appId}','pageSimple',simpleRoot);###### (3)如何配置和访问页面

获取appId,左上角点击已发布清单图标进入

获取appId,左上角点击已发布清单图标进入

假如appId是d7dce9fcf9d7430e9bdd7eddcb3bfc29,在门户菜单中配置路由地址:/main/cs/app/d7dce9fcf9d7430e9bdd7eddcb3bfc29_pageSimple

假如appId是d7dce9fcf9d7430e9bdd7eddcb3bfc29,在门户菜单中配置路由地址:/main/cs/app/d7dce9fcf9d7430e9bdd7eddcb3bfc29_pageSimple

门户主入口访问地址:/wui/index.html#/main/cs/app/d7dce9fcf9d7430e9bdd7eddcb3bfc29_pageSimple

门户主入口访问地址:/wui/index.html#/main/cs/app/d7dce9fcf9d7430e9bdd7eddcb3bfc29_pageSimple

单独访问地址:/spa/custom/static/index.html#/main/cs/app/d7dce9fcf9d7430e9bdd7eddcb3bfc29_pageSimple

单独访问地址:/spa/custom/static/index.html#/main/cs/app/d7dce9fcf9d7430e9bdd7eddcb3bfc29_pageSimple

2、MOBILE端新页面开发

ecodeSDK.rewriteMobileRouteQueue.push(option) ecology版本要求:1906及1906+

ecodeSDK.rewriteMobileRouteQueue.push(option) ecology版本要求:1906及1906+

(1)参数说明

906及1906+*

ecodeSDK.rewriteMobileRouteQueue.push(option) ecology版本要求:1906及1906+

(1)参数说明| 参数 | 说明 | 类型 | 可选 | 默认 | 备注 |

| --- | --- | --- | --- | --- | --- | | option | 复写配置 | object | 必填 | {} | | | option.fn | 复写钩子函数 | function | 必填 | (params)=>{} | params 参数请看下一个表格 | | option.order | 复写排序 | integer | 选填 | 0 | | | option.desc | 复写说明 | string | 选填 | ‘’ | 无 |

参数 说明 类型 可选 默认 备注

参数 说明 类型 可选 默认 备注 参数说明类型可选默认备注

option 复写配置 object 必填 {}

option.fn 复写钩子函数 function 必填 (params)=>{} params 参数请看下一个表格

option.order 复写排序 integer 选填 0

option.desc 复写说明 string 选填 ‘’ 无

option 复写配置 object 必填 {}

option复写配置object必填{} option.fn 复写钩子函数 function 必填 (params)=>{} params 参数请看下一个表格 option.fn复写钩子函数function必填(params)=>{}params 参数请看下一个表格 option.order 复写排序 integer 选填 0

option.order复写排序integer选填0 option.desc 复写说明 string 选填 ‘’ 无 option.desc复写说明string选填‘’无

params 数据

params 数据

参数 说明 类型 备注
Com 路由组件 react component 路由定义时传入的compoent
props 路由参数 object 在移动端中,有些路由节点不会传入Com,而是传入 props.render
state 路由参数 object
context 路由参数 object

参数 说明 类型 备注

参数 说明 类型 备注 参数说明类型备注

Com 路由组件 react component 路由定义时传入的compoent

props 路由参数 object 在移动端中,有些路由节点不会传入Com,而是传入 props.render

state 路由参数 object 无

context 路由参数 object 无

Com 路由组件 react component 路由定义时传入的compoent Com路由组件react component路由定义时传入的compoent props 路由参数 object 在移动端中,有些路由节点不会传入Com,而是传入 props.render props路由参数object在移动端中,有些路由节点不会传入Com,而是传入 props.render state 路由参数 object 无 state路由参数object无 context 路由参数 object 无 context路由参数object无

(2)基本例子

render state 路由参数 object 无 state路由参数object无 context 路由参数 object 无 context路由参数object无

(2)基本例子> register.js:需要前置加载,注册了路由就会动态注入到react路由中

register.js:需要前置加载,注册了路由就会动态注入到react路由中

let _this = null;

const waitWmLoad = (props,params) => {
    const acParams = {
        appId:'${appId}',
        name:'MobileSimplePage', //模块名称
        params, //参数
        isPage:true, //是否是路由页面
        noCss:true //是否禁止单独加载css,通常为了减少css数量,css默认前置加载
      }
      //异步加载${appId}下的子模块MobilePage1
      class WaitWeaverMobileLoad extends React.Component {
        constructor(props) {
          super(props);
          this.state = {
            isLoad:false
          }
          _this = this;
        }
        setIsLoad(b) {
          this.setState({
            isLoad:b
          });
        }
        render() {
          if(!this.state.isLoad) return (<div />);
          const NewCom = ecodeSDK.getAsyncCom(acParams);
          return (<NewCom />);
        }
      }
      return WaitWeaverMobileLoad;
}

ecodeSDK.onWeaverMobileLoadQueue.push(()=>{
  _this&&_this.setIsLoad(true);
});

//注册和绑定新页面前端实现接口
ecodeSDK.rewriteMobileRouteQueue.push({
  fn:(params)=>{
    const {Com,props,state,context} = params;
    const mpParams = {
      path:'/cs/app/:uuid', //路由地址
      appId:'${appId}',
      name:'MobileSimplePage', //路由名称
      props,
      state
    }
    if(ecodeSDK.checkMobilePath(mpParams)) {
      return waitWmLoad(props,params);
    }
    return null;
  },
  order:10,
  desc:'Demo简单页面'
});
return waitWmLoad(props,params); } return null; }, order:10, desc:'Demo简单页面' }); `1. `let _this = null;` 2. 3. const waitWmLoad = (props,params) => { 4. const acParams = { 5. appId:'${appId}', 6. name:'MobileSimplePage', //模块名称 7. params, //参数 8. isPage:true, //是否是路由页面 9. noCss:true //是否禁止单独加载css,通常为了减少css数量,css默认前置加载 10. } 11. //异步加载${appId}下的子模块MobilePage1 12. class WaitWeaverMobileLoad extends React.Component { 13. constructor(props) { 14. super(props); 15. this.state = { 16. isLoad:false 17. } 18. _this = this; 19. } 20. setIsLoad(b) { 21. this.setState({ 22. isLoad:b 23. }); 24. } 25. render() { 26. if(!this.state.isLoad) return (<div />); 27. const NewCom = ecodeSDK.getAsyncCom(acParams); 28. return (<NewCom />); 29. } 30. } 31. return WaitWeaverMobileLoad; 32. } 33. 34. `ecodeSDK.onWeaverMobileLoadQueue.push(()=>{` 35. ` _this&&_this.setIsLoad(true);` 36. `});` 37. 38. //注册和绑定新页面前端实现接口 39. ecodeSDK.rewriteMobileRouteQueue.push({ 40. fn:(params)=>{ 41. const {Com,props,state,context} = params; 42. const mpParams = { 43. path:'/cs/app/:uuid', //路由地址 44. appId:'${appId}', 45. name:'MobileSimplePage', //路由名称 46. props, 47. state 48. } 49. if(ecodeSDK.checkMobilePath(mpParams)) { 50. props, 47. state 48. } 49. if(ecodeSDK.checkMobilePath(mpParams)) { 50. props, 47. state 48. } 49. if(ecodeSDK.checkMobilePath(mpParams)) { 50. return waitWmLoad(props,params); 51. } 52. return null; 53. }, 54. order:10, 55. desc:'Demo简单页面' 56. }); let _this = null;``let _this = null;let _this = null;const waitWmLoad = (props,params) => {``const waitWmLoad = (props,params) => {`const waitWmLoad = (props,params) => {` const acParams = {`` const acParams = {` const acParams = {` appId:'${appId}',`` appId:'${appId}',` appId:'${appId}',` name:'MobileSimplePage', //模块名称`` name:'MobileSimplePage', //模块名称` name:'MobileSimplePage', //模块名称` params, //参数`` params, //参数` params, //参数` isPage:true, //是否是路由页面`` isPage:true, //是否是路由页面` isPage:true, //是否是路由页面` noCss:true //是否禁止单独加载css,通常为了减少css数量,css默认前置加载`` noCss:true //是否禁止单独加载css,通常为了减少css数量,css默认前置加载` noCss:true //是否禁止单独加载css,通常为了减少css数量,css默认前置加载` }`` }` }` //异步加载${appId}下的子模块MobilePage1`` //异步加载${appId}下的子模块MobilePage1` //异步加载${appId}下的子模块MobilePage1` class WaitWeaverMobileLoad extends React.Component {`` class WaitWeaverMobileLoad extends React.Component {` class WaitWeaverMobileLoad extends React.Component {` constructor(props) {`` constructor(props) {` constructor(props) {` super(props);`` super(props);` super(props);` this.state = {`` this.state = {` this.state = {` is s);` super(props);` this.state = {`` this.state = {` this.state = {` iss);` super(props);` this.state = {`` this.state = {` this.state = {` isLoad:false`` isLoad:false` isLoad:false` }`` }` }` _this = this;`` _this = this;` _this = this;` }`` }` }` setIsLoad(b) {`` setIsLoad(b) {` setIsLoad(b) {` this.setState({`` this.setState({` this.setState({` isLoad:b`` isLoad:b` isLoad:b` });`` });` });` }`` }` }` render() {`` render() {` render() {` if(!this.state.isLoad) return (<div />);`` if(!this.state.isLoad) return (<div />);` if(!this.state.isLoad) return (<div />);` const NewCom = ecodeSDK.getAsyncCom(acParams);`` const NewCom = ecodeSDK.getAsyncCom(acParams);` const NewCom = ecodeSDK.getAsyncCom(acParams);` return (<NewCom />);`` return (<NewCom />);` return (<NewCom />);` }`` }` }` }`` }` }` return WaitWeaverMobileLoad;`` return WaitWeaverMobileLoad;` return WaitWeaverMobileLoad;`}``}`}ecodeSDK.onWeaverMobileLoadQueue.push(()=>{ecodeSDK.onWeaverMobileLoadQueue.push(()=>{`ecodeSDK.onWeaverMobileLoadQueue.push(()=>{` _this&&_this.setIsLoad(true); _this&&_this.setIsLoad(true);_this&&_this.setIsLoad(true);});});`});`````//注册和绑定新页面前端实现接口//注册和绑定新页面前端实现接口//注册和绑定新页面前端实现接口ecodeSDK.rewriteMobileRouteQueue.push({ecodeSDK.rewriteMobileRouteQueue.push({`ecodeSDK.r 页面前端实现接口`ecodeSDK.rewriteMobileRouteQueue.push({ecodeSDK.rewriteMobileRouteQueue.push({ecodeSDK.r页面前端实现接口ecodeSDK.rewriteMobileRouteQueue.push({ecodeSDK.rewriteMobileRouteQueue.push({`ecodeSDK.rewriteMobileRouteQueue.push({` fn:(params)=>{ fn:(params)=>{fn:(params)=>{ const {Com,props,state,context} = params;const {Com,props,state,context} = params;` const {Com,props,state,context} = params;` const mpParams = { const mpParams = {const mpParams = { path:'/cs/app/:uuid', //路由地址path:'/cs/app/:uuid', //路由地址` path:'/cs/app/:uuid', //路由地址` appId:'${appId}', appId:'${appId}',appId:'${appId}', name:'MobileSimplePage', //路由名称name:'MobileSimplePage', //路由名称` name:'MobileSimplePage', //路由名称` props, props,props, statestate` state` } }} if(ecodeSDK.checkMobilePath(mpParams)) {if(ecodeSDK.checkMobilePath(mpParams)) {` if(ecodeSDK.checkMobilePath(mpParams)) {` return waitWmLoad(props,params); return waitWmLoad(props,params);return waitWmLoad(props,params); }}` }` return null; return null;return null; },},` },` order:10, order:10,order:10, desc:'Demo简单页面'desc:'Demo简单页面'` desc:'Demo简单页面'`});});}); order:10,`` order:10, order:10,desc:'Demo简单页面'`` desc:'Demo简单页面' desc:'Demo简单页面'});``});});> index.js:不需要前置加载,所有非前置加载js,会被发布成模块 /cloudstore/release/${appId}/index.js

index.js:不需要前置加载,所有非前置加载js,会被发布成模块 /cloudstore/release/${appId}/index.js

const { Provider } = mobxReact;
const SimpleStore = ecodeSDK.imp(SimpleStore);
const Simple = ecodeSDK.imp(Simple);

//实例化store,并通过provider注入所有组件中
const allSimpleStore = {
  simpleStore:new SimpleStore()
}

class simpleRoot extends React.Component {
  render() {
    return (
      <Provider {...allSimpleStore}>
        <Simple {...this.props} />
      </Provider>
    )
  }
}

//发布模块
ecodeSDK.setCom('${appId}','MobileSimplePage',simpleRoot);
) } }

//发布模块 ecodeSDK.setCom('${appId}','MobileSimplePage',simpleRoot); `1. `const { Provider } = mobxReact;` 2. `const SimpleStore = ecodeSDK.imp(SimpleStore);` 3. `const Simple = ecodeSDK.imp(Simple);` 4. 5. //实例化store,并通过provider注入所有组件中 6. const allSimpleStore = { 7. simpleStore:new SimpleStore() 8. } 9. 10. `class simpleRoot extends React.Component {` 11. ` render() {` 12. ` return (` 13. ` <Provider {...allSimpleStore}>` 14. ` <Simple {...this.props} />` 15. ` </Provider>` 16. ` )` 17. ` }` 18. `}` 19. 20. //发布模块 21. ecodeSDK.setCom('${appId}','MobileSimplePage',simpleRoot); const { Provider } = mobxReact;``const { Provider } = mobxReact;const { Provider } = mobxReact;const SimpleStore = ecodeSDK.imp(SimpleStore);``const SimpleStore = ecodeSDK.imp(SimpleStore);const SimpleStore = ecodeSDK.imp(SimpleStore);const Simple = ecodeSDK.imp(Simple);``const Simple = ecodeSDK.imp(Simple);const Simple = ecodeSDK.imp(Simple);//实例化store,并通过provider注入所有组件中``//实例化store,并通过provider注入所有组件中`//实例化store,并通过provider注入所有组件中`const allSimpleStore = {``const allSimpleStore = {`const allSimpleStore = {` simpleStore:new SimpleStore()`` simpleStore:new SimpleStore()` simpleStore:new SimpleStore()`}``}`}class simpleRoot extends React.Component {class simpleRoot extends React.Component {`class simpleRoot extends React.Component {` render() { render() {render() { return (return (` return (` <Provider {...allSimpleStore}> <Provider {...allSimpleSto <Provider {...allSimpleStore}>`` <Provider {...allSimpleStore}> <Provider {...allSimpleSto <Provider {...allSimpleStore}>` <Provider {...allSimpleStore}>` <Simple {...this.props} /> <Simple {...this.props} /> </Provider>` </Provider>` ) )) }}` }`}}}`````//发布模块``//发布模块//发布模块ecodeSDK.setCom('${appId}','MobileSimplePage',simpleRoot);``ecodeSDK.setCom('${appId}','MobileSimplePage',simpleRoot);ecodeSDK.setCom('${appId}','MobileSimplePage',simpleRoot); ${appId}','MobileSimplePage',simpleRoot);`ecodeSDK.setCom('${appId}','MobileSimplePage',simpleRoot);###### (3)如何配置和访问页面

获取appId,左上角点击已发布清单图标进入

获取appId,左上角点击已发布清单图标进入

假如appId是2d7187049bbe4adfbc4bfe4a41e188f6,生成的访问地址为:/spa/custom/static4mobile/index.html#/cs/app/2d7187049bbe4adfbc4bfe4a41e188f6_MobileSimplePage

假如appId是2d7187049bbe4adfbc4bfe4a41e188f6,生成的访问地址为:/spa/custom/static4mobile/index.html#/cs/app/2d7187049bbe4adfbc4bfe4a41e188f6_MobileSimplePage

配置完成后进入移动门户设置新应用

配置完成后进入移动门户设置新应用

进入移动端入口访问 /spa/em/mobile.html

进入移动端入口访问 /spa/em/mobile.html

ℹ️ 对比提示: 本文档介绍的是动态注入路由页面(SPA 模式),如需开发门户主题/元素(CMS 模式),请参考 七-业务绑定.md