互联网时代,各种H5
应用、小程序……各种C端、B端企业都需要中后端管理系统。 UI
组件库有antd
、iview
等多种,但常见的管理领域包括企业访问、权限管理、集成请求处理、数据库管理、自动测试,甚至国际化。如果我们是从头开始构建的话,这些都是我们应该考虑的,但是那些其实是和公司是分开的,所以我不想以后再创建管理控制台的时候复制粘贴,所以我选择了我。新发布的Fes.js 2.0
即将建成。
关于 Fes.js
Fes.js
是基于最新Vue3 + webpack5
的前端应用系统。它通过插件提供通用设置、访问、许可证管理、Vuex
、国际化等功能。有关fes.js
的更多信息,请参阅官方文档。话不多说,让我带您从头开始构建一个无缝的中后端管理系统。
准备好
首先,确保Node 的本地版本已开启 12.0.0
如果您想使用yarn
,请使用以下三部曲:
1。创建模板
yarn create @fesjs/fes-app fes-demo
根据您的需求选择创建PC或H5。创建项目后,转到刚刚创建的文件夹:cd fes-demo
,然后继续下一步。
2。放置依赖
yarn
3。激活开发环境
yarn dev
如果您更喜欢使用npm
(您害怕头发),请使用以下三部曲:
# 创建模板
npx @fesjs/create-fes-app fes-demo
# 安装依赖
npm install
# 运行
npm run dev
第一次见面
# 创建模板
npx @fesjs/create-fes-app fes-demo
# 安装依赖
npm install
# 运行
npm run dev
做完以上操作后,在浏览器中访问:http://127.0.0.1:8080,就可以看到第一个系统界面,如下图:
快点
新页面
接下来,我们尝试创建一些页面,并在pages
文件夹下创建以下文件夹和文件:
├─pages
│ ├─order
| └─ list.vue
| └─ detail.vue
│ └─product
| └─ list.vue
会根据文件夹结构自动为Vue
生成routes
。如果你想知道生成路径的结构,可以在文件src\.fes\core\routes\routes.js
中找到。
页面布局
创建页面pages/product/list.vue
后,我们来编辑name
、title
等页面相关信息。我们以文件pages/product/list.vue
为例。代码如下:
// src/pages/product/list.vue
<template>
<div>...</div>
</template>
<config>
{
"name": "productManage",
"title": "产品管理"
}
</config>
<script>
import { ref, reactive, toRaw } from 'vue';
...
</script>
Windows 和权限菜单
页面配置完成后,在.fes.js
文件中设置菜单和权限。更多信息请访问官方文档网站,这里我们更改内容如下:
export default {
... // 其他配置略
access: {
roles: {
superAdmin: ["/", "/product/list", "/order/list", "/order/detail"],
admin: ["/", "/product/list"]
}
},
layout: {
...
menus: [
{
name: 'index'
},
{
name: 'productManage' // 产品管理
},
{
name: 'orderManage', // 订单管理
title: '订单管理',
children: [
{
name: 'orderList' // 订单列表
}
]
}
]
}
...
};
如您所见,我们设置了两个角色,高级经理(superAdmin
)和简单经理(admin
)。超级管理员可以比普通管理员访问更多的页面,并将角色设置为superAdmin
(超级管理员),使用setRole
方法翻译页面。请在此处查看 app.js
代码:
import { access } from '@fesjs/fes';
export const beforeRender = {
loading: <PageLoading />,
action() {
const { setRole } = access;
return new Promise((resolve) => {
setTimeout(() => {
setRole('superAdmin'); // 设定角色
resolve({
userName: 'Hello, World!'
});
}, 1000);
});
}
};
同时,menus
中的name
必须与页面编辑中的name
相匹配。例如,menus
中的【产品管理】中的name: 'productManage'
需要匹配♿中的自定义页面文件src/pages/product/list.vue
文件name
。
配置menus
并设置相应的权限后,我们看到这个界面:
到这里我们就完成了新的自定义页面、菜单、权限等设置的设计。你认为事情有那么简单吗?
接下来简单看一下其他常见的开发配置设置~
常用配置分析
1。如何根据要求安装UI组件库?这里以ant-design-vue
为例,在.fes.js
上添加如下设置:
export default {
...
extraBabelPlugins: [
['import', { libraryName: 'ant-design-vue', libraryDirectory: 'es', style: 'css' }]
],
...
};
只需复制babel
的设置即可,太简单了~
2。如何播放HTTP请求?
import { request } from '@fesjs/fes';
export default {
add: (data, option) => request('/api/product/add', data, option),
getList: (data, option) => request('/api/product/list', data, option)
};
更多游戏,请查看插件请求文档。
3。共享请求处理在哪里配置?
例如,如果想让接口相关的数据统一,可以添加钩子函数responseDataAdaptor
。参数data
是接口返回消息的部分。例如,如果你想让code
在界面中统一,你可以添加errorHandler
。
示例:
如果后端返回的数据JSON
如下:
{
"code": "8888",
"msg": "未登录或登录态过期,请重新登录"
}
然后在app.js
中进行以下配置:
import { getRouter } from '@fesjs/fes';
export const request = {
responseDataAdaptor: (data) => {
// data.code = data.retCode;
return data;
},
errorHandler: {
8888: (err) => {
const router = getRouter();
alert('登录态过期,请重新登录');
router.push('/account/login');
}
}
};
在上面的配置中,8888
对应于接口的code
字段返回的值。如果接口返回的code
字段有其他名称,如retCode
,可改为responseDataAdaptor
,如:data.code = data.retCode;
。
4。是否支持移动应用程序开发?
Fes.js
支持PC端和移动端开发,提供PC端和移动端的定制能力。例如PC安装、许可证管理、国际化等;手机屏幕适配、1px问题、hover条件等相信你在启动应用时已经看到了,PC或H5选择~
5。导入别名文件
Fes.js 2.0
将以下配置添加到.fes.js
:
alias: {
'@common': 'src/common/',
'@utils': 'src/utils/',
'@images': 'src/images/',
'@services': 'src/services/'
}
文件导入方式:
import xxx from '@/common/xxx.js';
6。换标志?
将徽标字段添加到文件.fes.js
并将其替换为您的图像路径(可以是完整图像链接)。 注意,如果Logo是本地的,需要将Logo文件复制到public
文件夹下的(否则在项目根目录下单独创建public
文件夹)。 public
文件夹可以存放其他不需要包含在 webpack
中的文件。
这里,在文件夹public
中创建一个新文件夹img
,并放置Logo图像。然后Logo的路径设置如下:
export default {
...
layout: {
title: 'xx管理系统',
logo: './img/logo.png',
...
},
...
};
最后,如果你想了解更多关于开发场景的结构,可以查看官方文档,获得一点经验。
结论
实践了新的内部管理体系fes.js
后,我总体感觉还是可以提高开发效率的。可以通过插件添加许多自定义开发场景,节省您自己动手的时间。不过,fes 2.0
刚刚发布,还有很多开发领域需要支持。我们希望未来能够推出插件,提供更多的可能性。
参考链接
- Fes.js官网:winixt.gitee.io/fesjs/zh/
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。