ãã£ã³ã³ãããžãã¹ãšã¯
Tinkoff Businessã¯ãäžå°äŒæ¥åãã®ãœãªã¥ãŒã·ã§ã³ãæäŸããŠããŸãã絊äžãããžã§ã¯ããçŸéããã³æ±ºæžãµãŒãã¹ãããã¥ã¡ã³ããã¶ã€ããŒããã®ä»çŽ20ã®è£œåã§ãã
ããã¯ãã¹ãŠã¢ããªã±ãŒã·ã§ã³ã«å®è£ ãããŠããŸãããããã®ã¢ããªã±ãŒã·ã§ã³ã¯å¥ã ã®ããŒã ã«ãã£ãŠéçºãããç¬èªã®ãªãªãŒã¹ãµã€ã¯ã«ããããŸãããããŠããããã®ã¢ããªã±ãŒã·ã§ã³ã¯ãã¹ãŠãåäžã®èªèšŒã§åäœããããžãã¹ããžãã¯ã®å ±ééšåãå¥ã®ã©ã€ãã©ãªã«å«ã¿ãå ±éã®UIã³ã³ããŒãã³ãã䜿çšããŸãã
2幎åã«æ»ããŸããã
å žåçãªTinkoffBusinessã¢ããªã±ãŒã·ã§ã³ã¯ã次ã®ããã«ãªããŸããã
äž-ã¢ããªã±ãŒã·ã§ã³ãããã²ãŒãããããããŒãå³åŽ-補åããã²ãŒã·ã§ã³ãå«ããµã€ãããŒã
åœæããã€ã¯ãããã³ãã®ã¢ã€ãã¢ã¯ãŸã ããã»ã©äººæ°ãââãããŸããã§ããããç§ãã¡ã¯ãã§ã«ãã®æ¹åã«é²ãã§ããŸããïŒãµã€ãããŒã¯å¥ã®Angularã¢ããªã±ãŒã·ã§ã³ã§ãããã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ã¯ãµã€ãããŒãiframeã«ããŒãããŸãããããã«ãããã¢ããªã±ãŒã·ã§ã³ãåå¥ã«ãªãªãŒã¹ã§ããŸããã
ãã®ã¢ãããŒãã«ã¯æ¬ ç¹ããããŸããã補åãåãæ¿ãããšãã«ã2ã€ã®Angularã¢ããªã±ãŒã·ã§ã³ã§ããŒãžå šäœãèªã¿èŸŒãŸããã®ãåŸ ã€å¿ èŠããããŸããããŸããã»ãšãã©ã®ã¢ããªã±ãŒã·ã§ã³ã¯åãããã¯ãšã³ãAPIèŠæ±ã䜿çšããããããŠãŒã¶ãŒã¯ããããåå®è¡ãããã®ãåŸ ã€å¿ èŠããããŸããã
ãã¬ãŒã ãããŒãžã£ãŒã®ã¢ã€ãã¢
ãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã®ã°ããŒãã«ã¿ã¹ã¯ãåºçŸãããŸã§ãç§ãã¡ã¯ãã®ãããªã¢ãŒããã¯ãã£ã䜿çšããŠããŸãã-åèšèšã次ã«ãã¢ã€ãã¢ãæµ®ãã³ãŸãããããçš®ã®å¶åŸ¡ã®å転ãå®è¡ããŠãã¢ããªã±ãŒã·ã§ã³ããµã€ãããŒãå éšã«ããŒããã代ããã«ããµã€ãããŒãã¢ããªã±ãŒã·ã§ã³èªäœãããŒãããã®ã¯ãªãã§ããããã
ããã«ãããçŸåšã®ã¢ãŒããã¯ãã£ã®å©ç¹ãç¶æããäžèšã®åé¡ãåãé€ãããšãã§ããŸããïŒãããŠæ°ããåé¡ãããããããšãã§ããŸãããããïŒã
åæãããã¿ã€ã
æåã«ãä»ã®ã¢ããªã±ãŒã·ã§ã³ãããŒãããããã«å¿ èŠãªæå°éã®æ©èœãåãããããã¿ã€ããäœæããŸãããå¥ã®ãã¡ã€ã³ããã¹ããã³ãã«äœæãããŸãããã¢ããªã±ãŒã·ã§ã³çµ±èšã®nginxã®ã«ãŒããå€æŽãããŸããã以åã¯ã察å¿ããã¢ããªã±ãŒã·ã§ã³ã®çµ±èšããã¹/ smeã/ accountã/ salaryãªã©ã«æ²¿ã£ãŠããŒããããŠããŸãããããã§ãFrame Managerã®çµ±èšæ å ±ããã¹ãŠã®ãã¹ã«æ²¿ã£ãŠéä¿¡ãããã¢ããªã±ãŒã·ã§ã³èªäœã®éçã«ãŒãã«æ¥å°ŸèŸ/éçæ å ±ãè¿œå ãããŸããã
æ確ã«ããããã«ãäŸãèŠãŠã¿ãŸãããã/some-appãã¹ã«ããã¢ããªã±ãŒã·ã§ã³ãsome-routeã§ããŒãããå¿ èŠããããŸãã詳现ã¯ããŠããã/ some-app / some-route /ãããŒããããšãã«ã©ã®ãããªããã»ã¹ãçºçããããèŠãŠã¿ãŸãããã
- Nginxã¯ããã®ãã¹ã«æ²¿ã£ãŠFrameManagerã®çµ±èšæ å ±ãéä¿¡ããŸãã
- ãã¬ãŒã ãããŒãžã£ãŒãèªã¿èŸŒãã§ããŸããã«ãŒãã«åºã¥ããŠã圌ã¯ããã€ãã®ã¢ããªãããŠã³ããŒãããããšãç解ããŠããŸãã
- iframeã¯ãã¡ã€ã³ã¢ããªãããŒããããsrc = '/ some-app / static /'ã§äœæãããŸãã
åæã«ãã¢ããªã±ãŒã·ã§ã³èªäœã«å€§å¹ ãªæ¹åãå¿ èŠã§ããããã®ãããã¢ããªã±ãŒã·ã§ã³ãã©ã³ãã®ãã¹ã¿ãŒããã©ãŒã¯ããããã«å¿ èŠãªå€æŽãè¿œå ããåŸãå€æŽãå ããŠã¢ããªã±ãŒã·ã§ã³èªäœã®åå¥ã®ã³ããŒãäœæããŸããã
æåã®åé¡
ããã§ã4ã€ã®ã¢ããªã±ãŒã·ã§ã³ãFrame Managerã«è»¢éãããœãªã¥ãŒã·ã§ã³ãæ©èœããŠããããšã確èªããŸãããä»ã®ãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã¯ç¿»èš³ãããããšã«ãªã£ãŠããããããŠãããã§åé¡ãçºçããŸãããéåžžã®ããŒãžã§ã³ãšFrameManagerã§åäœããããŒãžã§ã³ãåæã«ç¶æããã«ã¯ã³ã¹ããããããããããšãå€æããŸããã
å€ãããŒãžã§ã³ã®ãã¹ã¿ãŒã«å€æŽãããã³ã«ãã¢ããªã±ãŒã·ã§ã³ã®æ°ããããŒãžã§ã³ã絶ããæŽæ°ããæ°ããªç«¶åã解決ããæ¢åã®æ©èœãé »ç¹ã«å£ããååž°ãã¹ãã®ã³ã¹ããã»ãŒ2åã«ãªãå¿ èŠããããŸãããããã«ã¯ãã¹ãŠæéãããããããŸãããæ°ãã解決çãå¿ èŠã§ããããšã¯æããã§ããã
æ¹åç¹
ã¢ããªã®1ã€ã®ããŒãžã§ã³ããµã€ãããŒãšãã¬ãŒã ãããŒãžã£ãŒã®äž¡æ¹ã§æ©èœããå Žåãããã¯ç§ãã¡ã«å€ãã®åé¡ãæãã§ããããäœãã§ãããèŠãŠã¿ãŸãããã
ãŸããã¢ããªã±ãŒã·ã§ã³ããã¬ãŒã ãããŒãžã£ãŒã§å®è¡ãããŠãããã©ãããäœããã®æ¹æ³ã§å€æããå¿ èŠããããŸããããã¯éåžžã«ç°¡åã§ããwindow.topãšwindow.selfã®åç §ãæ¯èŒããå¿ èŠããããŸããããããçãããªãå Žåããã¬ãŒã å ãã€ãŸããã¬ãŒã ãããŒãžã£ãŒå ã«ããŸãããã ããããã©ã«ãã§iframeã§éãã¢ããªã±ãŒã·ã§ã³ãããå Žåã¯ãããžãã¯ãè¿œå ããå¿ èŠããããŸãããã®ãããæåã«ãã¬ãŒã ã§éãããŠã£ãžã§ããã¢ããªã±ãŒã·ã§ã³ãããããããåžžã«ãã¬ãŒã ãããŒãžã£ãŒã«ãããšæ³å®ãå§ãããããå€ãã¢ãŒãã§æ©èœããªããªããŸããã
次ã«ãã¢ããªã±ãŒã·ã§ã³ã§å¿ èŠãªå€æŽãšã2ã€ã®ã¢ãŒãã§ã®äœæ¥ããµããŒãããæ¹æ³ã詳ããèŠãŠãããŸãããã
- url. iframe, . , - , â . urlâ Frame Manager, . .
- . Frame Managerâ . : . . , , , post messages custom events. Frame Manager.
- . , Frame Manager. , Angular .
- . , , TCS, config.js . Frame Manager .
- base href. nginx, base href ( /static/). : , base href , . , , , , base href, .
- æ¿èªããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã§ã®æ¿èªã«ã¯ãindex.htmlã«åã蟌ãŸããŠããåå¥ã®ã¹ã¯ãªããã䜿çšãããŸããæ°ããããŒãžã§ã³ã§ã¯ããã®ã¹ã¯ãªããã¯ãã¬ãŒã ãããŒãžã£ãŒã«åã蟌ãŸããŠãããã¢ããªã±ãŒã·ã§ã³ã§åå©çšãããšãšã©ãŒãçºçããŸããã¹ã¯ãªããããžãã¯ãå€æŽããŠãã¢ããªã±ãŒã·ã§ã³ããã¬ãŒã ãããŒãžã£ãŒå
ã«ããŒããããå Žåã«ç¡èŠãããããã«ããããšãã§ããŸãã
ãããã¯ãã¹ãŠå®çšçãªãœãªã¥ãŒã·ã§ã³ã§ãããååãªæè»æ§ããããŸãããæ°ãããã©ã³ãã«ããžãã¯ãè¿œå ãããŸãããããããããŸããŸãªå Žæã§ç¶æããå¿ èŠããããŸããäžè¬ã«ããã¹ãŠãè€éãããŠããªãäžå®å®ãªæ§é ã®ããã«èŠããŸãã
iframeã®åçºæ
次ã«ãindex.htmlã¢ããªã±ãŒã·ã§ã³ãããŒãããããã»ã¹ãå°ãããã¯ãããšããã¢ã€ãã¢ãæãã€ããŸããã srcå±æ§ãæå®ããŠã¢ããªã±ãŒã·ã§ã³ãiframeã«ããŒããã代ããã«ãindex.htmlã«å¯ŸããŠxhrèŠæ±ãè¡ããããŒãžãããã¹ã圢åŒã§ååŸããŠåŠçããiframeã«ããŒãããããšãã§ããŸããããã«ãããããŒããããã¢ããªã±ãŒã·ã§ã³ãå®å šã«å¶åŸ¡ã§ããŸããããŒã¹hrefã®å®çŸ©ãäžèŠãªã¹ã¯ãªããã®åé€ãã¹ã¿ã€ã«ã®ããããå€æ°ã®ãªãŒããŒã©ã€ããªã©ãå¯èœã«ãªããŸãã
ã¯ããmokeyãããã¯éçºè ã«ãã£ãŠæšå¥šãããŠããããæªãç¿æ £ãšèŠãªãããŠããŸãããAngularããŒã ãzone.jsã©ã€ãã©ãªã§ããã䜿çšããå Žåãã©ã®ããã«æªåããŸããïŒããã©ãŒãã³ã¹ã®åé¡ãçºçããå¯èœæ§ããããŸããhtmlã®è§£æã¯ã³ã¹ãã®ãããæäœã®ããã«èŠããŸãããã ããååãšããŠãAngularã¢ããªã±ãŒã·ã§ã³ã®éå§ããŒãžã¯50è¡ãè¶ ããããã¹ãŠã®ãã©ãŠã¶ãŒïŒIE 10ã§ãïŒïŒã«ã¯äŸ¿å©ãªapiããããŸããDOMParserãæååããDOMãååŸã§ããŸãã
ã¢ããªã±ãŒã·ã§ã³ã®ããŒãäžã«ãã¬ãŒã ãããŒãžã£ãŒãäœãããããèŠãŠã¿ãŸãããïŒãã¬ãŒã ãããŒãžã£ãŒèªäœã¯ãã§ã«ããŒããããŠããŸãïŒã
- ãã¹ã«åºã¥ããŠãã¢ããªã±ãŒã·ã§ã³ã®index.htmlãããŒãããŸãã
- ããŒãžã解æããŠDOMã«å€æããã¡ã¢ãªå
ã®äžèŠãªã¹ã¯ãªãããåé€ããããŒã¹ã®hrefãã°ããŒãã«å€æ°ãæ§æãšã¹ã¿ã€ã«ã«çœ®ãæããŸãã
- document.writeïŒïŒã䜿çšããŠãçµæã®ããã¥ã¡ã³ããæžã蟌ãïŒæååã«å€æããŠæ»ãïŒiframeèŠçŽ ãäœæããŸãã
- ã¢ããªã±ãŒã·ã§ã³ãé
ç·å
ã®ã«ãŒãã«ããŸãããŸããããžãã¹ããžãã¯ãããŒã¿äº€æãµãŒãã¹ãä»ããŠæ©èœããããã«å¿
èŠãªã¢ãã«ãæäŸããŸãã
ãããã£ãŠãããžãã¯ã§å¿ èŠãªäžèšã®6ã€ã®å€æŽã®ãã¡ãæåã®ïŒurlåæïŒã®ã¿ãã¢ããªã±ãŒã·ã§ã³å ã«å®è£ ããå¿ èŠããããæ®ãã¯ãã¬ãŒã ãããŒãžã£ãŒãåŠçããŸãã
äœãåŸã
ã¢ããªã±ãŒã·ã§ã³èªäœã®ã³ãŒããå®è³ªçã«å€æŽããããšãªããã¢ããªã±ãŒã·ã§ã³ã®å€èŠ³ãå®å šã«å€æŽããŸããã
åããµã€ãããŒã¯èµ€ã§å²ãŸããŠããŸããiframeã«åã蟌ãŸããŠããŸã
åŸããã¬ãŒã ãããŒãžã£ãŒã¯èµ€ã§åŒ·èª¿è¡šç€ºãããŸããiframeã«ããŒããããã¢ããª
ã°ããŒãã«å€æ°ãšã¹ã¿ã€ã«ããªãŒããŒã©ã€ããŸãã¯è¿œå ããæ©èœãååŸããŸããã
ããšãã°ãããã¯ã¢ããªã±ãŒã·ã§ã³ã®ã¹ã¿ã€ã«èšå®ãã©ã®ããã«èŠãããã§ãã
export const business = {
'sidebar.b-main__sidebar': {
display: 'none'
},
'.b-main': {
'margin-left': '260',
position: 'relative',
display: 'block',
width: '1104px',
'min-height': '100vh',
margin: '0 auto'
}
};
ãããŠãã-ã¢ããªã±ãŒã·ã§ã³èªäœã®èšå®
{
id: 'products',
name: ' ',
icon: 'products',
frameSupported: true,
applications: [
{
id: 'products',
path: '/products',
apiPrefix: '/products',
hasMenuConfig: true,
dynamicCompanyChange: true,
}
]
}
åæã«ãæ§æã¯ãã¬ãŒã ãããŒãžã£ãŒãšã¯å¥ã®ãªããžããªã«ããããªãªãŒã¹ããã«ã¢ããªã±ãŒã·ã§ã³ã®äœæ¥ã®äžéšã®ãã©ã¡ãŒã¿ãŒãå€æŽã§ããŸãã
ãŸããã¢ããªã±ãŒã·ã§ã³éã®ã·ãŒã ã¬ã¹ãªç§»è¡ãäœæããFrameManagerã§èªèšŒãè¡ããŸããããã¬ãŒã ãããŒãžã£ãšã¢ããªã±ãŒã·ã§ã³éã®ããŒã¿å ±æã«ãããäžèŠãªãªã¯ãšã¹ããè¡ãããªãããã«ããŠããŸãã
åé¡ããªãããã§ã¯ãããŸããã察話äžã«ãŠã£ã³ããŠãžã®ãªã³ã¯ã倱ããããããäžéšã®chromeãã©ã°ã€ã³ïŒCryptoProãredux devtoolsïŒãããŠã³ããŒãå¯èœãªã¢ããªã±ãŒã·ã§ã³ã§æ©èœããªããªããŸãããè¿œå ã®æ¹åãå¿ èŠã§ããã
ãã®çµæã2019幎ã®çµããã«ããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ãFrame Managerã«æ£åžžã«è»¢éãããµã€ãããŒã¯å¿ãå»ãããŸããããããããã¬ãŒã ãããŒãžã£ãŒã®äœæ¥ã¯ç¶ç¶ãããæ°ããçåãçããŸãããTinkoffBusinessã®ããã³ããšã³ãã®äœæ¥ãäœããã®æ¹æ³ã§æ¹åããã³æé©åããããšã¯å¯èœã§ããïŒããªããã§ããããšãå€æããŸããïŒããããããã«ã€ããŠã¯æ¬¡ã®èšäºã§è©³ãã説æããŸãã