mirror of
https://github.com/WeBankFinTech/fes.js.git
synced 2025-04-06 03:59:53 +08:00
349 lines
59 KiB
HTML
349 lines
59 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en-US">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
<title>目录结构 | Fes.js</title>
|
||
<meta name="generator" content="VuePress 1.5.4">
|
||
|
||
<meta name="description" content="中台应用前端快速解决方案">
|
||
<link rel="preload" href="/fes.js/assets/css/0.styles.54a65285.css" as="style"><link rel="preload" href="/fes.js/assets/js/app.d4a34833.js" as="script"><link rel="preload" href="/fes.js/assets/js/2.1380c702.js" as="script"><link rel="preload" href="/fes.js/assets/js/40.b0d45bd4.js" as="script"><link rel="preload" href="/fes.js/assets/js/10.2329d47f.js" as="script"><link rel="prefetch" href="/fes.js/assets/js/100.c569829e.js"><link rel="prefetch" href="/fes.js/assets/js/101.4c4176fa.js"><link rel="prefetch" href="/fes.js/assets/js/102.ba7e3884.js"><link rel="prefetch" href="/fes.js/assets/js/103.ef62cdd7.js"><link rel="prefetch" href="/fes.js/assets/js/104.86034148.js"><link rel="prefetch" href="/fes.js/assets/js/105.3bb92ea5.js"><link rel="prefetch" href="/fes.js/assets/js/106.1df0d2ff.js"><link rel="prefetch" href="/fes.js/assets/js/107.b4c899e6.js"><link rel="prefetch" href="/fes.js/assets/js/108.5d6f1cb6.js"><link rel="prefetch" href="/fes.js/assets/js/109.3ed5c334.js"><link rel="prefetch" href="/fes.js/assets/js/11.f26621ac.js"><link rel="prefetch" href="/fes.js/assets/js/110.dce23dd6.js"><link rel="prefetch" href="/fes.js/assets/js/111.2476f0f8.js"><link rel="prefetch" href="/fes.js/assets/js/112.bd22c4d5.js"><link rel="prefetch" href="/fes.js/assets/js/113.ca15de1c.js"><link rel="prefetch" href="/fes.js/assets/js/114.957579ae.js"><link rel="prefetch" href="/fes.js/assets/js/115.024593d0.js"><link rel="prefetch" href="/fes.js/assets/js/116.d5cddf01.js"><link rel="prefetch" href="/fes.js/assets/js/117.046ca7d6.js"><link rel="prefetch" href="/fes.js/assets/js/118.11815117.js"><link rel="prefetch" href="/fes.js/assets/js/119.b20cef58.js"><link rel="prefetch" href="/fes.js/assets/js/12.85a9013e.js"><link rel="prefetch" href="/fes.js/assets/js/120.bcc0046b.js"><link rel="prefetch" href="/fes.js/assets/js/121.5670d1e6.js"><link rel="prefetch" href="/fes.js/assets/js/122.7a268c65.js"><link rel="prefetch" href="/fes.js/assets/js/123.91d512e1.js"><link rel="prefetch" href="/fes.js/assets/js/124.b184f22d.js"><link rel="prefetch" href="/fes.js/assets/js/125.2e43132d.js"><link rel="prefetch" href="/fes.js/assets/js/126.ee7d5e3d.js"><link rel="prefetch" href="/fes.js/assets/js/127.45531c4f.js"><link rel="prefetch" href="/fes.js/assets/js/128.32f0a2e5.js"><link rel="prefetch" href="/fes.js/assets/js/129.ef73662a.js"><link rel="prefetch" href="/fes.js/assets/js/13.15a3084c.js"><link rel="prefetch" href="/fes.js/assets/js/130.8df92d78.js"><link rel="prefetch" href="/fes.js/assets/js/131.f76b7077.js"><link rel="prefetch" href="/fes.js/assets/js/132.0af231cd.js"><link rel="prefetch" href="/fes.js/assets/js/133.d597ece5.js"><link rel="prefetch" href="/fes.js/assets/js/134.92e05e2b.js"><link rel="prefetch" href="/fes.js/assets/js/135.9fb556eb.js"><link rel="prefetch" href="/fes.js/assets/js/136.1f72abea.js"><link rel="prefetch" href="/fes.js/assets/js/137.56bccf1e.js"><link rel="prefetch" href="/fes.js/assets/js/138.5a51bcda.js"><link rel="prefetch" href="/fes.js/assets/js/139.b4c67904.js"><link rel="prefetch" href="/fes.js/assets/js/14.4deadb95.js"><link rel="prefetch" href="/fes.js/assets/js/140.cb5be1e8.js"><link rel="prefetch" href="/fes.js/assets/js/141.8ac7a23e.js"><link rel="prefetch" href="/fes.js/assets/js/142.18fed108.js"><link rel="prefetch" href="/fes.js/assets/js/143.770929a1.js"><link rel="prefetch" href="/fes.js/assets/js/144.6575df5c.js"><link rel="prefetch" href="/fes.js/assets/js/145.577f2f6b.js"><link rel="prefetch" href="/fes.js/assets/js/146.185eeeb6.js"><link rel="prefetch" href="/fes.js/assets/js/147.600622ee.js"><link rel="prefetch" href="/fes.js/assets/js/148.ed0ee1ce.js"><link rel="prefetch" href="/fes.js/assets/js/149.96e5521b.js"><link rel="prefetch" href="/fes.js/assets/js/15.43f80fe4.js"><link rel="prefetch" href="/fes.js/assets/js/150.7182a2d1.js"><link rel="prefetch" href="/fes.js/assets/js/151.026f2738.js"><link rel="prefetch" href="/fes.js/assets/js/152.a81d4dfe.js"><link rel="prefetch" href="/fes.js/assets/js/153.4b22b740.js"><link rel="prefetch" href="/fes.js/assets/js/154.772272fb.js"><link rel="prefetch" href="/fes.js/assets/js/155.92d8f811.js"><link rel="prefetch" href="/fes.js/assets/js/156.220bfbea.js"><link rel="prefetch" href="/fes.js/assets/js/157.8807b8cc.js"><link rel="prefetch" href="/fes.js/assets/js/158.3c945605.js"><link rel="prefetch" href="/fes.js/assets/js/159.3c226b1b.js"><link rel="prefetch" href="/fes.js/assets/js/16.21608533.js"><link rel="prefetch" href="/fes.js/assets/js/160.5e21b174.js"><link rel="prefetch" href="/fes.js/assets/js/161.585be5a8.js"><link rel="prefetch" href="/fes.js/assets/js/162.df94370a.js"><link rel="prefetch" href="/fes.js/assets/js/163.a72fddff.js"><link rel="prefetch" href="/fes.js/assets/js/164.a99e2d54.js"><link rel="prefetch" href="/fes.js/assets/js/165.1b64cb5a.js"><link rel="prefetch" href="/fes.js/assets/js/166.b864ebc8.js"><link rel="prefetch" href="/fes.js/assets/js/167.9f5457b2.js"><link rel="prefetch" href="/fes.js/assets/js/168.31c84839.js"><link rel="prefetch" href="/fes.js/assets/js/169.fd9ef1ad.js"><link rel="prefetch" href="/fes.js/assets/js/17.628e539d.js"><link rel="prefetch" href="/fes.js/assets/js/170.3fc4f24a.js"><link rel="prefetch" href="/fes.js/assets/js/171.2c85e346.js"><link rel="prefetch" href="/fes.js/assets/js/172.811f8353.js"><link rel="prefetch" href="/fes.js/assets/js/173.da8fc25b.js"><link rel="prefetch" href="/fes.js/assets/js/174.a10e3d95.js"><link rel="prefetch" href="/fes.js/assets/js/175.5b6b9f95.js"><link rel="prefetch" href="/fes.js/assets/js/176.9ae11d97.js"><link rel="prefetch" href="/fes.js/assets/js/177.263c7c05.js"><link rel="prefetch" href="/fes.js/assets/js/178.8af820ff.js"><link rel="prefetch" href="/fes.js/assets/js/179.340f2124.js"><link rel="prefetch" href="/fes.js/assets/js/18.f74c470d.js"><link rel="prefetch" href="/fes.js/assets/js/180.1721f39e.js"><link rel="prefetch" href="/fes.js/assets/js/181.362ec251.js"><link rel="prefetch" href="/fes.js/assets/js/182.8be6f10c.js"><link rel="prefetch" href="/fes.js/assets/js/183.e0094e6b.js"><link rel="prefetch" href="/fes.js/assets/js/184.4ded5010.js"><link rel="prefetch" href="/fes.js/assets/js/185.ecfa04cc.js"><link rel="prefetch" href="/fes.js/assets/js/186.d85e6338.js"><link rel="prefetch" href="/fes.js/assets/js/187.45ee0ff9.js"><link rel="prefetch" href="/fes.js/assets/js/188.455e3ba7.js"><link rel="prefetch" href="/fes.js/assets/js/189.99089212.js"><link rel="prefetch" href="/fes.js/assets/js/19.adb191bd.js"><link rel="prefetch" href="/fes.js/assets/js/190.8db6e175.js"><link rel="prefetch" href="/fes.js/assets/js/191.58e5c5e5.js"><link rel="prefetch" href="/fes.js/assets/js/20.3c4a8246.js"><link rel="prefetch" href="/fes.js/assets/js/21.bceab9c1.js"><link rel="prefetch" href="/fes.js/assets/js/22.b9c001d7.js"><link rel="prefetch" href="/fes.js/assets/js/23.c3c204bd.js"><link rel="prefetch" href="/fes.js/assets/js/24.727208d4.js"><link rel="prefetch" href="/fes.js/assets/js/25.90ae11fd.js"><link rel="prefetch" href="/fes.js/assets/js/26.30023c0d.js"><link rel="prefetch" href="/fes.js/assets/js/27.81a4b14d.js"><link rel="prefetch" href="/fes.js/assets/js/28.57f73fbb.js"><link rel="prefetch" href="/fes.js/assets/js/29.fd64021e.js"><link rel="prefetch" href="/fes.js/assets/js/3.5e11613d.js"><link rel="prefetch" href="/fes.js/assets/js/30.76efdf4f.js"><link rel="prefetch" href="/fes.js/assets/js/31.e869900c.js"><link rel="prefetch" href="/fes.js/assets/js/32.b2e26eb6.js"><link rel="prefetch" href="/fes.js/assets/js/33.747fbc03.js"><link rel="prefetch" href="/fes.js/assets/js/34.de9ee359.js"><link rel="prefetch" href="/fes.js/assets/js/35.fec8dc48.js"><link rel="prefetch" href="/fes.js/assets/js/36.3bc574d9.js"><link rel="prefetch" href="/fes.js/assets/js/37.6bc69c79.js"><link rel="prefetch" href="/fes.js/assets/js/38.58d126e9.js"><link rel="prefetch" href="/fes.js/assets/js/39.c5630ef0.js"><link rel="prefetch" href="/fes.js/assets/js/4.8aad18e1.js"><link rel="prefetch" href="/fes.js/assets/js/41.5389b6cf.js"><link rel="prefetch" href="/fes.js/assets/js/42.08a733d0.js"><link rel="prefetch" href="/fes.js/assets/js/43.faa7983a.js"><link rel="prefetch" href="/fes.js/assets/js/44.b9392e16.js"><link rel="prefetch" href="/fes.js/assets/js/45.c8f02fd6.js"><link rel="prefetch" href="/fes.js/assets/js/46.70c14108.js"><link rel="prefetch" href="/fes.js/assets/js/47.be381f75.js"><link rel="prefetch" href="/fes.js/assets/js/48.23b5f25e.js"><link rel="prefetch" href="/fes.js/assets/js/49.c8f41428.js"><link rel="prefetch" href="/fes.js/assets/js/5.ef7cb79c.js"><link rel="prefetch" href="/fes.js/assets/js/50.6b3a205c.js"><link rel="prefetch" href="/fes.js/assets/js/51.952169d3.js"><link rel="prefetch" href="/fes.js/assets/js/52.aa7f7958.js"><link rel="prefetch" href="/fes.js/assets/js/53.0c06e959.js"><link rel="prefetch" href="/fes.js/assets/js/54.7c361990.js"><link rel="prefetch" href="/fes.js/assets/js/55.fc8c73f5.js"><link rel="prefetch" href="/fes.js/assets/js/56.9f4b303c.js"><link rel="prefetch" href="/fes.js/assets/js/57.5750a64c.js"><link rel="prefetch" href="/fes.js/assets/js/58.fafee21e.js"><link rel="prefetch" href="/fes.js/assets/js/59.d3c586c7.js"><link rel="prefetch" href="/fes.js/assets/js/6.1f8c31c8.js"><link rel="prefetch" href="/fes.js/assets/js/60.6b493d4c.js"><link rel="prefetch" href="/fes.js/assets/js/61.6d4baf8a.js"><link rel="prefetch" href="/fes.js/assets/js/62.7a25fd87.js"><link rel="prefetch" href="/fes.js/assets/js/63.5e270828.js"><link rel="prefetch" href="/fes.js/assets/js/64.b17abb2c.js"><link rel="prefetch" href="/fes.js/assets/js/65.ecb4d044.js"><link rel="prefetch" href="/fes.js/assets/js/66.214baade.js"><link rel="prefetch" href="/fes.js/assets/js/67.e98811c2.js"><link rel="prefetch" href="/fes.js/assets/js/68.0b88d471.js"><link rel="prefetch" href="/fes.js/assets/js/69.37a9f9dc.js"><link rel="prefetch" href="/fes.js/assets/js/7.154f06b1.js"><link rel="prefetch" href="/fes.js/assets/js/70.b9276e8b.js"><link rel="prefetch" href="/fes.js/assets/js/71.ec413e60.js"><link rel="prefetch" href="/fes.js/assets/js/72.9b78f34a.js"><link rel="prefetch" href="/fes.js/assets/js/73.5cc116e1.js"><link rel="prefetch" href="/fes.js/assets/js/74.ed3f9134.js"><link rel="prefetch" href="/fes.js/assets/js/75.0ac19e88.js"><link rel="prefetch" href="/fes.js/assets/js/76.8fe79f15.js"><link rel="prefetch" href="/fes.js/assets/js/77.011411bc.js"><link rel="prefetch" href="/fes.js/assets/js/78.932d3724.js"><link rel="prefetch" href="/fes.js/assets/js/79.e5e592c9.js"><link rel="prefetch" href="/fes.js/assets/js/8.6a1e4d2c.js"><link rel="prefetch" href="/fes.js/assets/js/80.87be71a6.js"><link rel="prefetch" href="/fes.js/assets/js/81.55e1c975.js"><link rel="prefetch" href="/fes.js/assets/js/82.ab36fade.js"><link rel="prefetch" href="/fes.js/assets/js/83.14cd3a8f.js"><link rel="prefetch" href="/fes.js/assets/js/84.f413793b.js"><link rel="prefetch" href="/fes.js/assets/js/85.cf1d54c8.js"><link rel="prefetch" href="/fes.js/assets/js/86.9867ea44.js"><link rel="prefetch" href="/fes.js/assets/js/87.7d9d9c02.js"><link rel="prefetch" href="/fes.js/assets/js/88.1fb3748f.js"><link rel="prefetch" href="/fes.js/assets/js/89.c338aa8d.js"><link rel="prefetch" href="/fes.js/assets/js/9.fc7e7822.js"><link rel="prefetch" href="/fes.js/assets/js/90.5aa004be.js"><link rel="prefetch" href="/fes.js/assets/js/91.52c4697f.js"><link rel="prefetch" href="/fes.js/assets/js/92.876ffbbe.js"><link rel="prefetch" href="/fes.js/assets/js/93.0fc5d2e3.js"><link rel="prefetch" href="/fes.js/assets/js/94.159fad62.js"><link rel="prefetch" href="/fes.js/assets/js/95.a7ba2e4a.js"><link rel="prefetch" href="/fes.js/assets/js/96.7e1c7796.js"><link rel="prefetch" href="/fes.js/assets/js/97.171b9202.js"><link rel="prefetch" href="/fes.js/assets/js/98.13a9a6a3.js"><link rel="prefetch" href="/fes.js/assets/js/99.81556285.js">
|
||
<link rel="stylesheet" href="/fes.js/assets/css/0.styles.54a65285.css">
|
||
</head>
|
||
<body>
|
||
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/fes.js/" class="home-link router-link-active"><!----> <span class="site-name">Fes.js</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/fes.js/guide/" class="nav-link router-link-active">
|
||
指南
|
||
</a></div><div class="nav-item"><a href="/fes.js/api/" class="nav-link">
|
||
API参考
|
||
</a></div><div class="nav-item"><a href="/fes.js/ui/" class="nav-link">
|
||
组件
|
||
</a></div><div class="nav-item"><a href="/fes.js/cli/" class="nav-link">
|
||
CLI
|
||
</a></div> <a href="https://github.com/WeBankFinTech/fes.js" target="_blank" rel="noopener noreferrer" class="repo-link">
|
||
GitHub
|
||
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="/fes.js/guide/" class="nav-link router-link-active">
|
||
指南
|
||
</a></div><div class="nav-item"><a href="/fes.js/api/" class="nav-link">
|
||
API参考
|
||
</a></div><div class="nav-item"><a href="/fes.js/ui/" class="nav-link">
|
||
组件
|
||
</a></div><div class="nav-item"><a href="/fes.js/cli/" class="nav-link">
|
||
CLI
|
||
</a></div> <a href="https://github.com/WeBankFinTech/fes.js" target="_blank" rel="noopener noreferrer" class="repo-link">
|
||
GitHub
|
||
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group depth-0"><p class="sidebar-heading open"><span>基础</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/fes.js/guide/" aria-current="page" class="sidebar-link">介绍</a></li><li><a href="/fes.js/guide/install.html" class="sidebar-link">安装</a></li><li><a href="/fes.js/guide/play.html" class="sidebar-link">快速上手</a></li><li><a href="/fes.js/guide/directory-structure.html" aria-current="page" class="active sidebar-link">目录结构</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/fes.js/guide/directory-structure.html#目录规范" class="sidebar-link">目录规范</a></li><li class="sidebar-sub-header"><a href="/fes.js/guide/directory-structure.html#fes-config-js" class="sidebar-link">fes.config.js</a></li><li class="sidebar-sub-header"><a href="/fes.js/guide/directory-structure.html#mock-js" class="sidebar-link">mock.js</a></li><li class="sidebar-sub-header"><a href="/fes.js/guide/directory-structure.html#app-js" class="sidebar-link">app.js</a></li><li class="sidebar-sub-header"><a href="/fes.js/guide/directory-structure.html#src-assets" class="sidebar-link">src/assets</a></li><li class="sidebar-sub-header"><a href="/fes.js/guide/directory-structure.html#src-components" class="sidebar-link">src/components</a></li><li class="sidebar-sub-header"><a href="/fes.js/guide/directory-structure.html#src-pages" class="sidebar-link">src/pages</a></li><li class="sidebar-sub-header"><a href="/fes.js/guide/directory-structure.html#src-static" class="sidebar-link">src/static</a></li><li class="sidebar-sub-header"><a href="/fes.js/guide/directory-structure.html#webpack-config-js" class="sidebar-link">webpack.config.js</a></li><li class="sidebar-sub-header"><a href="/fes.js/guide/directory-structure.html#自定义目录结构" class="sidebar-link">自定义目录结构</a></li></ul></li><li><a href="/fes.js/guide/layout.html" class="sidebar-link">布局</a></li><li><a href="/fes.js/guide/route.html" class="sidebar-link">路由</a></li><li><a href="/fes.js/guide/permisson.html" class="sidebar-link">权限管理</a></li><li><a href="/fes.js/guide/i18n.html" class="sidebar-link">国际化</a></li><li><a href="/fes.js/guide/option.html" class="sidebar-link">Vue增强</a></li><li><a href="/fes.js/guide/unit.html" class="sidebar-link">单元测试</a></li></ul></section></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>插件</span> <!----></p> <!----></section></li><li><a href="/fes.js/guide/releaseNote.html" class="sidebar-link">Release 记录</a></li><li><a href="/fes.js/guide/contact.html" class="sidebar-link">联系我们</a></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="目录结构"><a href="#目录结构" class="header-anchor">#</a> 目录结构</h1> <p>在<a href="#/guide/play">快速入门</a>中,大家对框架应该有初步的印象,接下来我们了解下目录结构。</p> <h2 id="目录规范"><a href="#目录规范" class="header-anchor">#</a> 目录规范</h2> <p>Fes.js遵循 <strong>“约定优于配置”</strong> 的原则,推荐的目录结构如下:</p> <div class="language- extra-class"><pre class="language-text"><code>fes-project
|
||
├── .eslintrc.js
|
||
├── fes.config.js
|
||
├── mock.js(可选)
|
||
├── webpack.config.js(可选)
|
||
├── package.json
|
||
└── src
|
||
├── app.js
|
||
├── assets
|
||
│ ├── images
|
||
│ │ ├── bg.png
|
||
│ │ └── logo.png
|
||
│ ├── styles
|
||
│ │ ├── main.scss
|
||
│ │ └── variables.scss
|
||
│ └── utils.js
|
||
├── components
|
||
│ ├── fesHeader.vue
|
||
│ ├── fesLeft.vue
|
||
│ └── wbDate.vue
|
||
├── pages
|
||
│ ├── home
|
||
│ │ └── index.vue
|
||
│ └── list
|
||
│ ├── components
|
||
│ │ └── common.vue
|
||
│ ├── edit
|
||
│ │ └── index.vue
|
||
│ └── index.vue
|
||
└── static
|
||
└── favicon.ico
|
||
</code></pre></div><h2 id="fes-config-js"><a href="#fes-config-js" class="header-anchor">#</a> fes.config.js</h2> <p>配置文件</p> <div class="language-javascript extra-class"><pre class="language-javascript"><code>module<span class="token punctuation">.</span>exports <span class="token operator">=</span> <span class="token punctuation">{</span>
|
||
<span class="token comment">// 是否采用行内 sso 登录</span>
|
||
sso<span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
|
||
<span class="token comment">// 可选有vertical、horizontal,默认vertical</span>
|
||
mode<span class="token operator">:</span> <span class="token string">'vertical'</span><span class="token punctuation">,</span>
|
||
<span class="token comment">// 可选有blue、dark,默认blue</span>
|
||
theme<span class="token operator">:</span> <span class="token string">'blue'</span><span class="token punctuation">,</span>
|
||
<span class="token comment">// 项目名称</span>
|
||
fesName<span class="token operator">:</span> <span class="token string">'xx 运营平台'</span><span class="token punctuation">,</span>
|
||
<span class="token comment">// 图标,可以将 favicon.ico 文件放入 src/static</span>
|
||
favicon<span class="token operator">:</span> <span class="token string">'static/favicon.ico'</span><span class="token punctuation">,</span>
|
||
<span class="token comment">// 是否显示左侧区域,默认true</span>
|
||
FesLeft<span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
|
||
<span class="token comment">// 是否显示头部区域,默认为false</span>
|
||
FesHeader<span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
|
||
<span class="token comment">// 是否开启路由懒加载</span>
|
||
lazyRouter<span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
|
||
<span class="token comment">// 是否开启 gzip 压缩,也可以传一个 obj 声明压缩参数</span>
|
||
compress<span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
|
||
<span class="token comment">// 环境变量配置, 默认使用local环境</span>
|
||
env<span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
<span class="token comment">// 本地开发环境</span>
|
||
local<span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
api<span class="token operator">:</span> <span class="token string">''</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||
<span class="token comment">// 开发环境 fes [dev/build] --env=develop</span>
|
||
develop<span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
api<span class="token operator">:</span> <span class="token string">'http://h.adm-test.webank.io'</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||
<span class="token comment">// 生产环境 fes [dev/build] --env=prod </span>
|
||
prod<span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
api<span class="token operator">:</span> <span class="token string">'http://adm.webank.io'</span>
|
||
<span class="token punctuation">}</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||
<span class="token comment">// 配置角色,控制显示的菜单内容和路由权限,使用FesApp.setRole('unLogin')来修改当前用户的角色</span>
|
||
roles<span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
unLogin<span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'/home'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||
service<span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'/list'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||
admin<span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'/list'</span><span class="token punctuation">,</span> <span class="token string">'/api/fes'</span><span class="token punctuation">]</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||
<span class="token comment">// 数据字典</span>
|
||
map<span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
status<span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token string">'1'</span><span class="token punctuation">,</span> <span class="token string">'成功'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token string">'2'</span><span class="token punctuation">,</span> <span class="token string">'失败'</span><span class="token punctuation">]</span><span class="token punctuation">]</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||
<span class="token comment">// 左侧菜单配置,仅支持二级菜单</span>
|
||
menu<span class="token operator">:</span> <span class="token punctuation">[</span>
|
||
<span class="token punctuation">{</span>
|
||
<span class="token comment">// 一级菜单支持配置icon</span>
|
||
icon<span class="token operator">:</span> <span class="token string">'static/bell.png'</span><span class="token punctuation">,</span>
|
||
<span class="token comment">// 菜单名称</span>
|
||
title<span class="token operator">:</span> <span class="token string">'接口'</span><span class="token punctuation">,</span>
|
||
<span class="token comment">// 菜单对应的路由</span>
|
||
path<span class="token operator">:</span> <span class="token string">'/api'</span><span class="token punctuation">,</span>
|
||
<span class="token comment">// 子菜单</span>
|
||
subMenu<span class="token operator">:</span> <span class="token punctuation">[</span>
|
||
<span class="token punctuation">{</span>
|
||
title<span class="token operator">:</span> <span class="token string">'Fes'</span><span class="token punctuation">,</span>
|
||
path<span class="token operator">:</span> <span class="token string">'/api/fes'</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||
<span class="token punctuation">{</span>
|
||
title<span class="token operator">:</span> <span class="token string">'FesApp'</span><span class="token punctuation">,</span>
|
||
path<span class="token operator">:</span> <span class="token string">'/api/fesApp'</span>
|
||
<span class="token punctuation">}</span>
|
||
<span class="token punctuation">]</span>
|
||
<span class="token punctuation">}</span>
|
||
<span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||
<span class="token comment">// 国际化 默认为zh-cn</span>
|
||
i18n<span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
locale<span class="token operator">:</span> <span class="token string">'en'</span><span class="token punctuation">,</span>
|
||
messages<span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
<span class="token string">'zh-cn'</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
menu<span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
<span class="token keyword">interface</span><span class="token operator">:</span> <span class="token string">'接口'</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||
overview<span class="token operator">:</span> <span class="token string">'概述'</span><span class="token punctuation">,</span>
|
||
i18n<span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
internationalization<span class="token operator">:</span> <span class="token string">'国际化,基于'</span><span class="token punctuation">,</span>
|
||
achieve<span class="token operator">:</span> <span class="token string">'实现。'</span><span class="token punctuation">,</span>
|
||
ui<span class="token operator">:</span> <span class="token string">'UI组件'</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||
title<span class="token operator">:</span> <span class="token string">'标题'</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||
en<span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
menu<span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
<span class="token keyword">interface</span><span class="token operator">:</span> <span class="token string">'interface'</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||
overview<span class="token operator">:</span> <span class="token string">'Overview'</span><span class="token punctuation">,</span>
|
||
i18n<span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
internationalization<span class="token operator">:</span> <span class="token string">'internationalization,base on'</span><span class="token punctuation">,</span>
|
||
achieve<span class="token operator">:</span> <span class="token string">'to achieve.'</span><span class="token punctuation">,</span>
|
||
ui<span class="token operator">:</span> <span class="token string">'UI components'</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||
title<span class="token operator">:</span> <span class="token string">'title'</span>
|
||
<span class="token punctuation">}</span>
|
||
<span class="token punctuation">}</span>
|
||
<span class="token punctuation">}</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">;</span>
|
||
</code></pre></div><h2 id="mock-js"><a href="#mock-js" class="header-anchor">#</a> mock.js</h2> <p>当运行环境<code>--env=local</code>时fes.js启动mock模拟后台服务,配置如下:</p> <div class="language-javascript extra-class"><pre class="language-javascript"><code>module<span class="token punctuation">.</span><span class="token function-variable function">exports</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">cgiMock<span class="token punctuation">,</span> Mock<span class="token punctuation">,</span> faker</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||
|
||
<span class="token keyword">var</span> Random <span class="token operator">=</span> Mock<span class="token punctuation">.</span>Random<span class="token punctuation">;</span>
|
||
|
||
<span class="token comment">//前缀,全局(可选)</span>
|
||
cgiMock<span class="token punctuation">.</span>prefix <span class="token operator">=</span> <span class="token string">''</span><span class="token punctuation">;</span>
|
||
|
||
<span class="token comment">// 返回一个数字</span>
|
||
<span class="token function">cgiMock</span><span class="token punctuation">(</span><span class="token string">'/number'</span><span class="token punctuation">,</span> <span class="token number">123</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
|
||
<span class="token comment">// 返回一个json</span>
|
||
<span class="token function">cgiMock</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
|
||
url<span class="token operator">:</span> <span class="token string">'/json'</span><span class="token punctuation">,</span>
|
||
result<span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
<span class="token string">"code"</span><span class="token operator">:</span> <span class="token string">"400101"</span><span class="token punctuation">,</span>
|
||
<span class="token string">"msg"</span><span class="token operator">:</span> <span class="token string">"不合法的请求:Missing cookie 'wb_app_id' for method parameter of type String"</span><span class="token punctuation">,</span>
|
||
<span class="token string">"transactionTime"</span><span class="token operator">:</span> <span class="token string">"20170309171146"</span><span class="token punctuation">,</span>
|
||
<span class="token string">"success"</span><span class="token operator">:</span> <span class="token boolean">false</span>
|
||
<span class="token punctuation">}</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
|
||
<span class="token comment">//利用mock.js 产生随机文本</span>
|
||
<span class="token function">cgiMock</span><span class="token punctuation">(</span><span class="token string">'/text'</span><span class="token punctuation">,</span> Random<span class="token punctuation">.</span><span class="token function">cparagraph</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
|
||
<span class="token comment">// 返回一个字符串 利用mock.js 产生随机字符</span>
|
||
<span class="token function">cgiMock</span><span class="token punctuation">(</span><span class="token string">'/string'</span><span class="token punctuation">,</span> Mock<span class="token punctuation">.</span><span class="token function">mock</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
|
||
<span class="token string">"string|1-10"</span><span class="token operator">:</span> <span class="token string">"★"</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
|
||
<span class="token comment">// 正则匹配url, 返回一个字符串</span>
|
||
<span class="token function">cgiMock</span><span class="token punctuation">(</span><span class="token regex">/\/abc|\/xyz/</span><span class="token punctuation">,</span> <span class="token string">'regexp test!'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
|
||
<span class="token comment">// option.result 参数如果是一个函数, 可以实现自定义返回内容, 接收的参数是是经过 express 封装的 req 和 res 对象.</span>
|
||
<span class="token function">cgiMock</span><span class="token punctuation">(</span><span class="token regex">/\/function$/</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">req<span class="token punctuation">,</span> res</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||
res<span class="token punctuation">.</span><span class="token function">send</span><span class="token punctuation">(</span><span class="token string">'function test'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
|
||
<span class="token comment">// 返回文本 fs.readFileSync</span>
|
||
<span class="token function">cgiMock</span><span class="token punctuation">(</span><span class="token string">'/file'</span><span class="token punctuation">,</span> cgiMock<span class="token punctuation">.</span><span class="token function">file</span><span class="token punctuation">(</span><span class="token string">'./test.json'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
|
||
<span class="token comment">// 更复杂的规则配置</span>
|
||
<span class="token function">cgiMock</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
|
||
url<span class="token operator">:</span> <span class="token regex">/\/who/</span><span class="token punctuation">,</span>
|
||
method<span class="token operator">:</span> <span class="token string">'GET'</span><span class="token punctuation">,</span>
|
||
<span class="token function-variable function">result</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">req<span class="token punctuation">,</span> res</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||
<span class="token keyword">if</span> <span class="token punctuation">(</span>req<span class="token punctuation">.</span>query<span class="token punctuation">.</span>name <span class="token operator">===</span> <span class="token string">'kwan'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||
res<span class="token punctuation">.</span><span class="token function">json</span><span class="token punctuation">(</span><span class="token punctuation">{</span><span class="token string">'kwan'</span><span class="token operator">:</span> <span class="token string">'孤独患者'</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
<span class="token keyword">else</span> <span class="token punctuation">{</span>
|
||
res<span class="token punctuation">.</span><span class="token function">send</span><span class="token punctuation">(</span><span class="token string">'Nooooooooooo'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||
headers<span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
<span class="token string">'Content-Type'</span><span class="token operator">:</span> <span class="token string">'text/plain'</span><span class="token punctuation">,</span>
|
||
<span class="token string">'Content-Length'</span><span class="token operator">:</span> <span class="token string">'123'</span><span class="token punctuation">,</span>
|
||
<span class="token string">'ETag'</span><span class="token operator">:</span> <span class="token string">'12345'</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||
cookies<span class="token operator">:</span> <span class="token punctuation">[</span>
|
||
<span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token string">'myname'</span><span class="token punctuation">,</span> value<span class="token operator">:</span> <span class="token string">'kwan'</span><span class="token punctuation">,</span> maxAge<span class="token operator">:</span> <span class="token number">900000</span><span class="token punctuation">,</span> httpOnly<span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">}</span>
|
||
<span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||
<span class="token comment">//接口随机延迟</span>
|
||
timeout<span class="token operator">:</span> Mock<span class="token punctuation">.</span><span class="token function">mock</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
|
||
<span class="token string">"number|1000-5000"</span><span class="token operator">:</span> <span class="token number">1000</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span>number
|
||
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
|
||
<span class="token comment">// 转发所有请求到指定URL,可以解决跨域</span>
|
||
cgiMock<span class="token punctuation">.</span><span class="token function">proxy</span><span class="token punctuation">(</span><span class="token string">'http://test-adm.weoa.com/xxx'</span><span class="token punctuation">)</span>
|
||
|
||
<span class="token punctuation">}</span>
|
||
</code></pre></div><p>如果希望部分接口使用Mock,其他接口使用请求转发:</p> <div class="language-js extra-class"><pre class="language-js"><code>module<span class="token punctuation">.</span><span class="token function-variable function">exports</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">cgiMock<span class="token punctuation">,</span> Mock<span class="token punctuation">,</span> faker</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||
|
||
<span class="token comment">//新的接口 走数据模拟</span>
|
||
<span class="token function">cgiMock</span><span class="token punctuation">(</span><span class="token string">'new'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">req<span class="token punctuation">,</span> res</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
|
||
<span class="token punctuation">)</span><span class="token punctuation">}</span>
|
||
|
||
<span class="token comment">//老的接口直接调后台接口</span>
|
||
cgiMock<span class="token punctuation">.</span><span class="token function">proxy</span><span class="token punctuation">(</span><span class="token string">'http://test-adm.weoa.com/xxx'</span><span class="token punctuation">)</span>
|
||
<span class="token punctuation">}</span>
|
||
</code></pre></div><h2 id="app-js"><a href="#app-js" class="header-anchor">#</a> app.js</h2> <p>在 <code>fes-core</code> 初始化内部逻辑后执行导出的函数,建议在<code>app.js</code>中编写全局设置,如引入其他第三方插件、注册全局事件、设置应用权限等。</p> <div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">import</span> Vue <span class="token keyword">from</span> <span class="token string">'vue'</span><span class="token punctuation">;</span>
|
||
<span class="token keyword">import</span> somePlugin <span class="token keyword">from</span> <span class="token string">'somePlugin'</span>
|
||
<span class="token keyword">import</span> <span class="token string">'./assets/styles/main.scss'</span><span class="token punctuation">;</span>
|
||
|
||
Vue<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span>somePlugin<span class="token punctuation">)</span>
|
||
|
||
<span class="token keyword">export</span> <span class="token keyword">default</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||
|
||
<span class="token function">setTimeout</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
|
||
<span class="token keyword">this</span><span class="token punctuation">.</span>FesApp<span class="token punctuation">.</span><span class="token function">setRole</span><span class="token punctuation">(</span><span class="token string">'admin'</span><span class="token punctuation">,</span> <span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token number">1000</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
|
||
<span class="token comment">// 设置路由钩子</span>
|
||
<span class="token keyword">this</span><span class="token punctuation">.</span>FesApp<span class="token punctuation">.</span><span class="token function">setBeforeRouter</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token parameter"><span class="token keyword">from</span><span class="token punctuation">,</span> to<span class="token punctuation">,</span> next</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
|
||
<span class="token function">next</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token keyword">this</span><span class="token punctuation">.</span>FesApp<span class="token punctuation">.</span><span class="token function">setAfterRouter</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token parameter">route</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
|
||
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">您浏览到了</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>route<span class="token punctuation">.</span>path<span class="token interpolation-punctuation punctuation">}</span></span><span class="token template-punctuation string">`</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
|
||
<span class="token comment">// 设置AJAX配置</span>
|
||
<span class="token keyword">this</span><span class="token punctuation">.</span>FesApi<span class="token punctuation">.</span><span class="token function">option</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
|
||
<span class="token comment">// 设置响应结构</span>
|
||
<span class="token keyword">this</span><span class="token punctuation">.</span>FesApi<span class="token punctuation">.</span><span class="token function">setResponse</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
|
||
successCode<span class="token operator">:</span> <span class="token string">'0'</span><span class="token punctuation">,</span>
|
||
codePath<span class="token operator">:</span> <span class="token string">'code'</span><span class="token punctuation">,</span>
|
||
messagePath<span class="token operator">:</span> <span class="token string">'msg'</span><span class="token punctuation">,</span>
|
||
resultPath<span class="token operator">:</span> <span class="token string">'result'</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
</code></pre></div><h2 id="src-assets"><a href="#src-assets" class="header-anchor">#</a> src/assets</h2> <p>存放公共静态资源,例如样式文件、图片资源等。</p> <h2 id="src-components"><a href="#src-components" class="header-anchor">#</a> src/components</h2> <p>在这个目录下的*.vue组件在编译后会自动注册为全局组件,可以直接在vue单文件的<code><template></template></code>中使用。</p> <h3 id="规则"><a href="#规则" class="header-anchor">#</a> 规则</h3> <p>读取文件名称作为组件名称进行注册,例如<code>src/components/message.vue</code>注册的全局组件名称为<code>message</code>,</p> <h3 id="特殊组件"><a href="#特殊组件" class="header-anchor">#</a> 特殊组件</h3> <p><code>fesHeader.vue</code><br>
|
||
用于自定义页面头部。参数<code>FesHeader</code>控制<code>fesHeader.vue</code> 是否显示。在<code>fes.config.js</code>中配置<code>FesHeader</code>定义全局的,也可以在页面组件中单独配置<code>FesHeader</code>。<br> <code>fesLeft.vue</code><br>
|
||
用于自定义菜单栏。配置参数<code>FesLeft</code>控制<code>fesLeft.vue</code> 是否显示。在<code>fes.config.js</code>中配置<code>FesLeft</code>定义全局的,也可以在页面组件中单独配置<code>FesLeft</code>。</p> <h2 id="src-pages"><a href="#src-pages" class="header-anchor">#</a> src/pages</h2> <p>在<code>pages</code>目录下编写页面,<code>Fes.js</code>会根据<code>pages</code>目录以及文件结构自动生成<a href="https://router.vuejs.org/zh-cn/" target="_blank" rel="noopener noreferrer">Vue-router<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>路由配置。</p> <h3 id="规则-2"><a href="#规则-2" class="header-anchor">#</a> 规则</h3> <div class="language-dir extra-class"><pre class="language-text"><code>pages
|
||
├── index.vue # 根路由页面 路径 index.html#/
|
||
├── a.vue # 路径 /a
|
||
├── b # 文件夹b
|
||
│ ├── index.vue # 路径 /b
|
||
│ ├── @id.vue # 动态路由 /b/:id
|
||
│ └── c.vue # 路径 /b/c
|
||
└── layout.vue # 根路由下所有page共用的外层
|
||
</code></pre></div><ol><li>如果目录下有<code>layout.vue</code>,则子目录对应的路径是当前目录对应路径的子路由。如果没有则子目录对应的路径和当前目录对应路径是平级的。</li> <li>带参数的路径使用<code>@id.vue</code>的形式</li></ol> <h3 id="编译"><a href="#编译" class="header-anchor">#</a> 编译</h3> <p>编译后在<code>.cache</code>目录下生成<code>routeConfig.js</code>,内容如下:</p> <div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">import</span> layout <span class="token keyword">from</span> <span class="token string">'D:\\git\\fes-template\\src\\pages\\layout.vue'</span><span class="token punctuation">;</span>
|
||
<span class="token keyword">import</span> index <span class="token keyword">from</span> <span class="token string">'D:\\git\\fes-template\\src\\pages\\index.vue'</span><span class="token punctuation">;</span>
|
||
<span class="token keyword">import</span> a <span class="token keyword">from</span> <span class="token string">'D:\\git\\fes-template\\src\\pages\\a.vue'</span><span class="token punctuation">;</span>
|
||
<span class="token keyword">import</span> b_index <span class="token keyword">from</span> <span class="token string">'D:\\git\\fes-template\\src\\pages\\b\\index.vue'</span><span class="token punctuation">;</span>
|
||
<span class="token keyword">import</span> b__id <span class="token keyword">from</span> <span class="token string">'D:\\git\\fes-template\\src\\pages\\b\\@id.vue'</span><span class="token punctuation">;</span>
|
||
<span class="token keyword">export</span> <span class="token keyword">default</span> <span class="token punctuation">{</span>
|
||
<span class="token string">'/'</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
component<span class="token operator">:</span> layout<span class="token punctuation">,</span>
|
||
subRoutes<span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
<span class="token string">'/'</span> <span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
name<span class="token operator">:</span> <span class="token string">'index'</span><span class="token punctuation">,</span> component<span class="token operator">:</span> index
|
||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||
<span class="token string">'/a'</span> <span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
name<span class="token operator">:</span> <span class="token string">'a'</span><span class="token punctuation">,</span> component<span class="token operator">:</span> a
|
||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||
<span class="token string">'/b'</span> <span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
name<span class="token operator">:</span> <span class="token string">'b_index'</span><span class="token punctuation">,</span> component<span class="token operator">:</span> b_index
|
||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||
<span class="token string">'/b/:id'</span> <span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
name<span class="token operator">:</span> <span class="token string">'b__id'</span><span class="token punctuation">,</span> component<span class="token operator">:</span> b__id
|
||
<span class="token punctuation">}</span>
|
||
<span class="token punctuation">}</span>
|
||
<span class="token punctuation">}</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">;</span>
|
||
</code></pre></div><h2 id="src-static"><a href="#src-static" class="header-anchor">#</a> src/static</h2> <p>不需要经过webpack编译处理的静态资源,可以在页面中通过 URL(static/xxx) 直接引用。<br>
|
||
例如有文件<code>src/static/1.txt</code>,在页面中使用如下:</p> <div class="language-html extra-class"><pre class="language-html"><code><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">target</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>_blank<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>static/1.txt<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
|
||
点击下载 1.txt
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span>
|
||
</code></pre></div><h2 id="webpack-config-js"><a href="#webpack-config-js" class="header-anchor">#</a> webpack.config.js</h2> <p>自定义<code>webpack</code>配置<br> <code>mode</code>是编译命令,<code>configs</code>则是编译中的默认配置</p> <div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">const</span> CspHtmlWebpackPlugin <span class="token operator">=</span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'csp-html-webpack-plugin'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
module<span class="token punctuation">.</span><span class="token function-variable function">exports</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">mode<span class="token punctuation">,</span> configs<span class="token punctuation">,</span> webpack</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||
<span class="token keyword">if</span> <span class="token punctuation">(</span>mode <span class="token operator">===</span> <span class="token string">'build'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||
<span class="token keyword">return</span> <span class="token punctuation">{</span>
|
||
plugins<span class="token operator">:</span> <span class="token punctuation">[</span><span class="token keyword">new</span> <span class="token class-name">CspHtmlWebpackPlugin</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
|
||
<span class="token string">'base-uri'</span><span class="token operator">:</span> <span class="token string">"'self'"</span><span class="token punctuation">,</span>
|
||
<span class="token string">'object-src'</span><span class="token operator">:</span> <span class="token string">"'none'"</span><span class="token punctuation">,</span>
|
||
<span class="token string">'script-src'</span><span class="token operator">:</span> <span class="token punctuation">[</span>
|
||
<span class="token string">"'self'"</span>
|
||
<span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||
<span class="token string">'style-src'</span><span class="token operator">:</span> <span class="token punctuation">[</span>
|
||
<span class="token string">"'self'"</span>
|
||
<span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||
<span class="token string">'connect-src'</span><span class="token operator">:</span> <span class="token punctuation">[</span>
|
||
<span class="token string">"'self'"</span><span class="token punctuation">,</span>
|
||
<span class="token string">'http://adm.webank.io'</span>
|
||
<span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||
<span class="token string">'img-src'</span><span class="token operator">:</span> <span class="token punctuation">[</span>
|
||
<span class="token string">'data:'</span><span class="token punctuation">,</span>
|
||
<span class="token string">"'self'"</span>
|
||
<span class="token punctuation">]</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">]</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
<span class="token keyword">return</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">;</span>
|
||
</code></pre></div><h2 id="自定义目录结构"><a href="#自定义目录结构" class="header-anchor">#</a> 自定义目录结构</h2> <p>除了上述目录结构,也可以根据自己的需要增加其他目录,但不能更改现有的目录结构。</p></div> <footer class="page-edit"><!----> <div class="last-updated"><span class="prefix">上次编辑时间:</span> <span class="time">11/27/2020, 3:38:53 AM</span></div></footer> <div class="page-nav"><p class="inner"><span class="prev">
|
||
←
|
||
<a href="/fes.js/guide/play.html" class="prev">
|
||
快速上手
|
||
</a></span> <span class="next"><a href="/fes.js/guide/layout.html">
|
||
布局
|
||
</a>
|
||
→
|
||
</span></p></div> </main></div><div class="global-ui"><!----></div></div>
|
||
<script src="/fes.js/assets/js/app.d4a34833.js" defer></script><script src="/fes.js/assets/js/2.1380c702.js" defer></script><script src="/fes.js/assets/js/40.b0d45bd4.js" defer></script><script src="/fes.js/assets/js/10.2329d47f.js" defer></script>
|
||
</body>
|
||
</html>
|