研发图纸文件管理系统-前端项目
chenghongxing
2020-07-21 ad5727eaf57127baca9b8a4bea84eed8796822ff
chore: update document for Page; :star2:
2个文件已修改
3个文件已添加
228 ■■■■■ 已修改文件
docs/.vuepress/styles/index.styl 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/assets/new-page-2.png 补丁 | 查看 | 原始文档 | blame | 历史
docs/assets/new-page-us.png 补丁 | 查看 | 原始文档 | blame | 历史
docs/assets/new-page.png 补丁 | 查看 | 原始文档 | blame | 历史
docs/develop/page.md 213 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/.vuepress/styles/index.styl
@@ -1,9 +1,12 @@
.custom-block.tip{
  border-color: #52c41a
  border-color: #1890ff
}
.custom-block.warning{
  border-color: #fa8c16
.theme-default-content code .token.inserted{
  color: #60bd90;
}
.custom-block.error{
  border-color: #f5222d
}
//.custom-block.warning{
//  border-color: #fa8c16
//}
//.custom-block.error{
//  border-color: #f5222d
//}
docs/assets/new-page-2.png
docs/assets/new-page-us.png
docs/assets/new-page.png
docs/develop/page.md
@@ -3,5 +3,216 @@
lang: zh-CN
---
# 页面
这里的『页面』包含新建页面文件,配置路由、样式文件及i18n国际化等。通常情况下,你仅需简单的配置就可以添加一个新的页面。
## 新建页面文件
在 src/pages 下创建新的 .vue 文件。如果页面相关文件过多,您可以创建一个文件夹来放置这些文件。
```diff
  ├── public
  ├── src
  │   ├── assets               # 本地静态资源
  :   :
  │   ├── pages                # 页面组件和通用模板
+ │   │   └── newPage.vue      # 新页面文件
or
+ │   │   └── newFolder        # 为新页面创建一个文件夹
+ │   │       ├── newPage.vue  # 新页面文件
+ │   │       ├── index.less   # 页面样式文件
+ │   │       └── index.js     # import 引导文件
  :   :
  │   └── main.js              # 应用入口js
  ├── package.json             # package.json
  ├── README.md                # README.md
  └── vue.config.js            # vue 配置文件
```
为了更好地演示,我们初始化 newPage.vue 文件如下:
```vue
<template>
  <div class="new-page" :style="`min-height: ${layoutMinHeight}px`">
    <h1>演示页面</h1>
  </div>
</template>
### 作者还没来得及编辑该页面,如果你感兴趣,可以点击下方链接,帮助作者完善此页
<script>
  export default {
    name: 'NewPage',
    inject: ['layoutMinHeight'],
    data() {
      return {
        desc: '这是一个演示页面'
      }
    }
  }
</script>
<style scoped lang="less">
@import "index.less";
</style>
```
index.less 文件:
```less
.new-page{
  height: 100%;
  background-color: @base-bg-color;
  text-align: center;
  padding: 200px 0 0 0;
  margin-top: -24px;
  h1{
    font-size: 48px;
  }
}
```
index.js 文件:
```js
import NewPage from '@/pages/newPage/NewPage'
export default NewPage
```
## 配置路由
路由配置在 src/router/index.js 文件中,我们把上面创建的页面文件加入路由配置中
```js {10-14}
const router =  new Router({
  routes: [
    {name: '登录页'...},
    {
      path: '/',
      name: '首页',
      component: TabsView,
      redirect: '/login',
      children: [
        {
          path: 'newPage',
          name: '新页面',
          component: () => import('@/pages/newPage'),
        },
        {
          path: 'dashboard',
          name: 'Dashboard',
          meta: {
            icon: 'dashboard'
          },
          component: BlankView,
          children: [...]
        }
      ]
      ...
    }
  ]
})
```
:::tip
我们建议使用英文设置路由的 path 属性,用中文设置路由的 name 属性。因为系统将自动提取路由的 path 和 name 属性作为国际化配置。这在后面的章节
 [进阶>国际化](../advance/i18n.md)中将会讲到。
 当然,如果你的项目不需要国际化,可以忽略。
:::
启动服务,你将看到新增页面如下:
![newPage](../assets/new-page.png)
如果你想把它配置为二级页面或更深层级的页面,只需为它配置一个父级路由,并为父级路由配置一个[视图组件](./layout.md#admin-的视图),
这里我们选择 [PageView](https://github.com/iczer/vue-antd-admin/blob/master/src/layouts/PageView.vue),如下:
```js {10-21}
const router =  new Router({
  routes: [
    {name: '登录页'...},
    {
      path: '/',
      name: '首页',
      component: TabsView,
      redirect: '/login',
      children: [
        {
          path: 'parent',
          name: '父级路由',
          component: PageView,
          children: [
            {
              path: 'newPage',
              name: '新页面',
              component: () => import('@/pages/newPage'),
            }
          ]
        },
        {name: 'dashboard'...}
      ]
      ...
    }
  ]
})
```
:::warning
页面所有父级路由的组件必须配置为[视图组件](../develop/layout.md#admin-的视图),否则页面的内容可能不会显示。
目前有 [PageView](https://github.com/iczer/vue-antd-admin/blob/master/src/layouts/PageView.vue)、
[TabsView](https://github.com/iczer/vue-antd-admin/blob/master/src/layouts/tabs/TabsView.vue) 和
[BlankView](https://github.com/iczer/vue-antd-admin/blob/master/src/layouts/BlankView.vue) 可选,
你也可以自己创建视图组件。([什么是视图组件?](../develop/layout.md#admin-的视图))
:::
页面如下:
![newPage2](../assets/new-page-2.png)
## i18n国际化配置
如果你想为页面增加i18n国际化配置,只需在页面同级文件夹下创建 i18n.js 文件,然后在页面文件中引入并使用即可。
创建 i18n.js 文件:
```diff {6-10}
  ├── public
  ├── src
  │   ├── assets               # 本地静态资源
  :   :
  │   ├── pages                # 页面组件和通用模板
  │   │   └── newFolder        # 为新页面创建一个文件夹
  │   │       ├── newPage.vue  # 新页面文件
  │   │       ├── index.less   # 页面样式文件
+ │   │       ├── i18n.js      # i18n 国际化配置文件
  │   │       └── index.js     # import 引导文件
  :   :
  │   └── main.js              # 应用入口js
  ├── package.json             # package.json
  ├── README.md                # README.md
  └── vue.config.js            # vue 配置文件
```
i18n.js 文件内容:
```js
module.exports = {
  messages: {
    CN: {
      content: '演示页面',
      description: '这是一个演示页面'
    },
    HK: {
      content: '演示頁面',
      description: '這是一個演示頁面'
    },
    US: {
      content: 'Demo Page',
      description: 'This is a demo page'
    }
  }
}
```
在 NewPage.vue 文件中引入 i18n.js,并添加需要国际化的内容。如下修改:
```vue {3,11-15}
<template>
  <div class="new-page" :style="`min-height: ${layoutMinHeight}px`">
    <h1>{{$t('content')}}</h1>
  </div>
</template>
<script>
  export default {
    name: 'NewPage',
    inject: ['layoutMinHeight'],
    i18n: require('./i18n'),
    computed: {
      desc() {
        return this.$t('description')
      }
    }
  }
</script>
<style scoped lang="less">
@import "index";
</style>
```
然后页面右上角语言项选择 ``English``,你会发现,页面语言切换为英文了。如下:
![newPageUs](../assets/new-page-us.png)
一切就是这么的简单!
:::tip
如果你尝试切换为繁体语言,可能会发现``页面标题``和``面包屑``显示为英文。
这涉及到路由的国际化配置,在章节 [进阶 > 国际化](../advance/i18n.md) 中,我们会对此作详细讲解。
:::