mirror of
https://github.com/WeBankFinTech/fes.js.git
synced 2025-04-05 19:41:57 +08:00
chore: 优化 create-fes-app
This commit is contained in:
parent
d2dab3b136
commit
7649895c77
@ -14,7 +14,7 @@
|
||||
"docs:dev": "vuepress dev docs --clean-cache",
|
||||
"docs:build": "vuepress build docs --clean-cache",
|
||||
"test": "fes test",
|
||||
"lint": "eslint -c ./.eslintrc.js --ext .js,.jsx,.vue,.ts",
|
||||
"lint": "eslint -c ./.eslintrc.js --ignore-pattern='templates' --ext .js,.jsx,.vue,.ts",
|
||||
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s"
|
||||
},
|
||||
"license": "MIT",
|
||||
@ -57,7 +57,7 @@
|
||||
},
|
||||
"lint-staged": {
|
||||
"*.{js,jsx,vue,ts}": [
|
||||
"eslint"
|
||||
"npm run lint"
|
||||
]
|
||||
},
|
||||
"husky": {
|
||||
@ -71,4 +71,4 @@
|
||||
"path": "./node_modules/cz-conventional-changelog"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,19 +1,16 @@
|
||||
|
||||
module.exports = {
|
||||
extends: [
|
||||
'@webank/eslint-config-webank/vue.js'
|
||||
],
|
||||
extends: ['@webank/eslint-config-webank/vue.js'],
|
||||
globals: {
|
||||
// 这里填入你的项目需要的全局变量
|
||||
// 这里值为 false 表示这个全局变量不允许被重新赋值,比如:
|
||||
//
|
||||
// Vue: false
|
||||
__DEV__: false
|
||||
__DEV__: false,
|
||||
},
|
||||
rules: {
|
||||
'vue/comment-directive': 'off',
|
||||
'global-require': 'off',
|
||||
'import/no-unresolved': 'off',
|
||||
'no-restricted-syntax': 'off'
|
||||
}
|
||||
'no-restricted-syntax': 'off',
|
||||
},
|
||||
};
|
||||
|
@ -1,18 +1,18 @@
|
||||
// fes.config.js 只负责管理 cli 相关的配置
|
||||
import { defineBuildConfig } from '@fesjs/fes';
|
||||
import pxtoviewport from '@ttou/postcss-px-to-viewport';
|
||||
|
||||
|
||||
export default {
|
||||
export default defineBuildConfig({
|
||||
define: {
|
||||
// __VUE_OPTIONS_API__: true,
|
||||
// __VUE_PROD_DEVTOOLS__: false
|
||||
},
|
||||
html: {
|
||||
title: '拉夫德鲁'
|
||||
title: '拉夫德鲁',
|
||||
},
|
||||
targets: {
|
||||
chrome: '61',
|
||||
ios: '10'
|
||||
ios: '10',
|
||||
},
|
||||
extraPostCSSPlugins: [
|
||||
pxtoviewport({
|
||||
@ -28,7 +28,7 @@ export default {
|
||||
replace: true,
|
||||
exclude: [],
|
||||
landscape: false,
|
||||
landscapeUnit: 'vw'
|
||||
})
|
||||
]
|
||||
};
|
||||
landscapeUnit: 'vw',
|
||||
}),
|
||||
],
|
||||
});
|
||||
|
@ -44,12 +44,12 @@
|
||||
"@ttou/postcss-px-to-viewport": "1.1.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@fesjs/fes": "^3.0.0-rc.0",
|
||||
"@fesjs/fes": "^3.0.0-rc.1",
|
||||
"@fesjs/plugin-icon": "^3.0.0-rc.0",
|
||||
"@fesjs/plugin-request": "^3.0.0-rc.0",
|
||||
"@fesjs/builder-webpack": "^3.0.0-rc.0",
|
||||
"@fesjs/plugin-request": "^3.0.0-rc.3",
|
||||
"@fesjs/builder-webpack": "^3.0.0-rc.1",
|
||||
"vue": "^3.2.37",
|
||||
"core-js": "^3.19.2"
|
||||
"core-js": "^3.26.1"
|
||||
},
|
||||
"private": true
|
||||
}
|
@ -1,7 +1,44 @@
|
||||
export const request = {
|
||||
errorConfig: {
|
||||
404() {
|
||||
console.log('to 404 page');
|
||||
import { defineRuntimeConfig } from '@fesjs/fes';
|
||||
|
||||
export default defineRuntimeConfig({
|
||||
request: {
|
||||
// API 前缀
|
||||
baseURL: '',
|
||||
dataHandler(data, response) {
|
||||
// 处理响应内容异常
|
||||
if (data.code !== '0') {
|
||||
if (data.code === '20000') {
|
||||
console.log('hello world');
|
||||
}
|
||||
throw new Error(response);
|
||||
}
|
||||
// 响应数据格式化
|
||||
return data?.result ? data.result : data;
|
||||
},
|
||||
// http 异常,和插件异常
|
||||
errorHandler(error) {
|
||||
if (error.response) {
|
||||
// 请求成功发出且服务器也响应了状态码,但状态代码超出了 2xx 的范围
|
||||
console.log(error.response.data);
|
||||
console.log(error.response.status);
|
||||
console.log(error.response.headers);
|
||||
} else if (error.request) {
|
||||
// 请求已经成功发起,但没有收到响应
|
||||
// `error.request` 在浏览器中是 XMLHttpRequest 的实例,
|
||||
// 而在node.js中是 http.ClientRequest 的实例
|
||||
console.log(error.request);
|
||||
} else if (error.type) {
|
||||
// 插件异常
|
||||
console.log(error.msg);
|
||||
} else {
|
||||
// 发送请求时出了点问题
|
||||
console.log('Error', error.message);
|
||||
}
|
||||
console.log(error.config);
|
||||
},
|
||||
// 请求拦截器
|
||||
requestInterceptors: [],
|
||||
// 响应拦截器
|
||||
responseInterceptors: [],
|
||||
},
|
||||
};
|
||||
});
|
||||
|
@ -4,7 +4,6 @@
|
||||
// 手机号、身份证号 等的校验
|
||||
// 数字分割
|
||||
|
||||
|
||||
export function resetContainerHeight(dom) {
|
||||
const originalHeight = document.body.clientHeight || document.documentElement.clientHeight;
|
||||
|
||||
@ -18,12 +17,11 @@ export function resetContainerHeight(dom) {
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
export function resetInputBlur() {
|
||||
const isWechat = window.navigator.userAgent.match(/MicroMessenger\/([\d.]+)/i);
|
||||
if (!isWechat) return;
|
||||
const wechatVersion = isWechat[1];
|
||||
const version = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
|
||||
const version = navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/);
|
||||
|
||||
// 如果设备类型为iOS 12+ 和wechat 6.7.4+,恢复成原来的视口
|
||||
if (+wechatVersion.replace(/\./g, '') >= 674 && +version[1] >= 12) {
|
||||
|
@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon" viewBox="0 0 1024 1024">
|
||||
<path d="M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 0 0-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 0 0-8-8.4z"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 936 B |
@ -3,18 +3,16 @@
|
||||
fes & 拉夫德鲁 <br />
|
||||
<fes-icon :spin="true" class="one-icon" type="smile" @click="clickIcon" />
|
||||
<div v-if="loading" class="loading">loading</div>
|
||||
<div v-else class="data">{{data}}</div>
|
||||
<div v-else class="data">{{ data }}</div>
|
||||
</div>
|
||||
</template>
|
||||
<config>
|
||||
{
|
||||
"title": "首页",
|
||||
"layout": "false"
|
||||
}
|
||||
</config>
|
||||
<script>
|
||||
import { ref, onMounted } from 'vue';
|
||||
import { useRouter, useRequest } from '@fesjs/fes';
|
||||
import { useRouter, useRequest, defineRouteMeta } from '@fesjs/fes';
|
||||
|
||||
defineRouteMeta({
|
||||
title: '首页',
|
||||
});
|
||||
|
||||
export default {
|
||||
setup() {
|
||||
@ -34,15 +32,15 @@ export default {
|
||||
data,
|
||||
fes,
|
||||
rotate,
|
||||
clickIcon
|
||||
clickIcon,
|
||||
};
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import "~@/styles/mixins/hairline";
|
||||
@import "~@/styles/mixins/hover";
|
||||
@import '~@/styles/mixins/hairline';
|
||||
@import '~@/styles/mixins/hover';
|
||||
|
||||
div {
|
||||
padding: 20px;
|
||||
@ -56,7 +54,7 @@ div {
|
||||
.hover();
|
||||
}
|
||||
.onepiece {
|
||||
.hairline("top");
|
||||
.hairline('top');
|
||||
background: url('../images/male.png');
|
||||
}
|
||||
</style>
|
||||
|
@ -1,21 +1,20 @@
|
||||
<template>
|
||||
<div>{{fes}}</div>
|
||||
<div>{{ fes }}</div>
|
||||
</template>
|
||||
<config>
|
||||
{
|
||||
"title": "onepiece",
|
||||
"layout": "true"
|
||||
}
|
||||
</config>
|
||||
<script>
|
||||
import { defineRouteMeta } from '@fesjs/fes';
|
||||
import { ref } from 'vue';
|
||||
|
||||
defineRouteMeta({
|
||||
title: 'one piece',
|
||||
});
|
||||
|
||||
export default {
|
||||
setup() {
|
||||
const fes = ref('fes upgrade to vue3');
|
||||
return {
|
||||
fes
|
||||
fes,
|
||||
};
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
@ -1,23 +1,27 @@
|
||||
// .fes.js 只负责管理编译时配置,只能使用plain Object
|
||||
import { defineBuildConfig } from '@fesjs/fes';
|
||||
|
||||
|
||||
export default {
|
||||
export default defineBuildConfig({
|
||||
access: {
|
||||
roles: {
|
||||
admin: ["*"],
|
||||
manager: ["/"]
|
||||
}
|
||||
admin: ['*'],
|
||||
manager: ['/'],
|
||||
},
|
||||
},
|
||||
layout: {
|
||||
title: "Fes.js",
|
||||
title: 'Fes.js',
|
||||
footer: 'Created by MumbleFE',
|
||||
navigation: 'mixin',
|
||||
multiTabs: false,
|
||||
menus: [{
|
||||
name: 'index'
|
||||
}]
|
||||
menus: [
|
||||
{
|
||||
name: 'index',
|
||||
},
|
||||
],
|
||||
},
|
||||
enums: {
|
||||
status: [['0', '无效的'], ['1', '有效的']]
|
||||
}
|
||||
};
|
||||
status: [
|
||||
['0', '无效的'],
|
||||
['1', '有效的'],
|
||||
],
|
||||
},
|
||||
});
|
||||
|
@ -1,6 +1,5 @@
|
||||
// .fes.js 只负责管理编译时配置,只能使用plain Object
|
||||
import { defineBuildConfig } from '@fesjs/fes';
|
||||
|
||||
|
||||
export default {
|
||||
publicPath: './'
|
||||
};
|
||||
export default defineBuildConfig({
|
||||
publicPath: './',
|
||||
});
|
||||
|
@ -51,10 +51,10 @@
|
||||
"@fesjs/plugin-layout": "^5.0.0-rc.0",
|
||||
"@fesjs/plugin-model": "^3.0.0-rc.0",
|
||||
"@fesjs/plugin-enums": "^3.0.0-rc.0",
|
||||
"@fesjs/fes-design": "^0.7.0",
|
||||
"@fesjs/fes-design": "^0.7.9",
|
||||
"@fesjs/builder-webpack": "^3.0.0-rc.0",
|
||||
"vue": "^3.2.37",
|
||||
"core-js": "^3.19.2"
|
||||
"vue": "^3.2.45",
|
||||
"core-js": "^3.26.1"
|
||||
},
|
||||
"private": true
|
||||
}
|
@ -1,23 +1,25 @@
|
||||
import { access } from '@fesjs/fes';
|
||||
import { access, defineRuntimeConfig } from '@fesjs/fes';
|
||||
|
||||
import PageLoading from '@/components/pageLoading.vue';
|
||||
import UserCenter from '@/components/userCenter.vue';
|
||||
|
||||
export const beforeRender = {
|
||||
loading: <PageLoading />,
|
||||
action() {
|
||||
const { setRole } = access;
|
||||
return new Promise((resolve) => {
|
||||
setTimeout(() => {
|
||||
setRole('admin');
|
||||
// 初始化应用的全局状态,可以通过 useModel('@@initialState') 获取,具体用法看@/components/UserCenter 文件
|
||||
resolve({
|
||||
userName: '李雷',
|
||||
});
|
||||
}, 1000);
|
||||
});
|
||||
export default defineRuntimeConfig({
|
||||
beforeRender: {
|
||||
loading: <PageLoading />,
|
||||
action() {
|
||||
const { setRole } = access;
|
||||
return new Promise((resolve) => {
|
||||
setTimeout(() => {
|
||||
setRole('admin');
|
||||
// 初始化应用的全局状态,可以通过 useModel('@@initialState') 获取,具体用法看@/components/UserCenter 文件
|
||||
resolve({
|
||||
userName: '李雷',
|
||||
});
|
||||
}, 1000);
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export const layout = {
|
||||
customHeader: <UserCenter />,
|
||||
};
|
||||
layout: {
|
||||
renderCustom: () => <UserCenter />,
|
||||
},
|
||||
});
|
||||
|
@ -1,21 +1,12 @@
|
||||
<template>
|
||||
<div style="padding: 32px;">
|
||||
hello world
|
||||
</div>
|
||||
<div style="padding: 32px">hello world</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
setup() {
|
||||
return {
|
||||
};
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script setup>
|
||||
import { defineRouteMeta } from '@fesjs/fes';
|
||||
|
||||
<config>
|
||||
{
|
||||
"name": "index",
|
||||
"title": "首页"
|
||||
}
|
||||
</config>
|
||||
defineRouteMeta({
|
||||
name: 'index',
|
||||
title: '首页',
|
||||
});
|
||||
</script>
|
||||
|
Loading…
x
Reference in New Issue
Block a user