首页 > 其他分享 >Vue:TDesign Starter 定制改造,中后台管理系统(前端)

Vue:TDesign Starter 定制改造,中后台管理系统(前端)

时间:2022-12-27 21:22:15浏览次数:64  
标签:TDesign Vue -- res ts vue 定制 data Starter

目前来说,TDesign Starter 和普通的业务代码一样,没法做到像 npm 包一样通过升级来达到同步新增功能或修复问题的效果,所以这里记录一下TDesign Starter的定制改造过程。

0. 源码拉取

安装最新的td-starter, 并初始化项目(完整版),然后进行定制(通过package.json查看定制版本)

npm i tdesign-starter-cli@latest -g
td-starter init

1. 定制迁移

定制迁移是将需要的模块代码迁移的自己的项目中,不需要的代码留作参考即可。

1.1. tdesign/

.editorconfig
.env
.env.development
.eslintignore
.eslintrc
.gitignore
.prettierrc.js
.stylelintignore
commitlint.config.js
globals.d.ts
index.html
jsx.d.ts
package.json
package-lock.json
shims-vue.d.ts
stylelint.config.js
tsconfig.json
vite.config.js

1.2. tdesign/public

public
--/*

1.3. tdesign/src

assets
--/*
components
--/color
--/result
--/thumbnail
config
--/*
layouts
--/*
pages
--/login
--/result
--/user
router
--/*
store
--/*
style
--/*
utils
--/*
App.vue
interface.ts
main.jsx
permission.js

2. 定制调整

定制调整是将迁移过来的部分代码根据自己的需求进行调整。

2.1 路由调整

router/modules/base.ts - 删除

index.js 调整部分代码,如下:

// 这里删除了...baseRouters,注意导入也应该一并删除
export const asyncRouterList = [...componentsRouters, ...othersRouters];
const defaultRouterList = [
  {
    path: '/login',
    name: 'login',
    component: () => import('@/pages/login/index.vue'),
  },
  {
    path: '*',
    // 这里改成跳转到结果页, /store/modules/tab-router.ts的homeRoute也可以跟着调整
    redirect: '/result/success',
  },
  ...asyncRouterList,
];

component.ts 删除除了结果页之外的路由配置(因为页面已经删除了)

2.2 页面调整

/pages/user/index.vue 页面中删除service的导入,即下面的代码:

import { USER_INFO_LIST, TEAM_MEMBERS, PRODUCT_LIST } from '@/service/service-user';

并且将data中的数据设置为空数组,主要是下面这个三个:

data() {
  return {
    USER_INFO_LIST: [],
    TEAM_MEMBERS: [],
    PRODUCT_LIST: [],
  };
},

2.3. 定制request

/utils/request.ts调整,根据自己的需求调整,不一定通用!!

CODE定义不需要,可以删除,或者调整为自定义的CODE

const CODE = {
  LOGIN_TIMEOUT: 1000,
  REQUEST_SUCCESS: 0,
  REQUEST_FOBID: 1001,
};

安装qs,配置axios转化请求参数:

npm i qs --save

axios配置调整,调整为使用form表单请求:

import qs from 'qs'

const instance = axios.create({
  baseURL: API_HOST,
  timeout: 6000,
  withCredentials: true,
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
    'X-Requested-With': 'XMLHttpRequest'
  },
  transformRequest: [
    function (data) {
      return qs.stringify(data, { indices: false })
    }
  ]
});

调整response返回,并且返回code=-1时,跳转到登录页面

import store from '@/store';

instance.interceptors.response.use(
  (response) => {
    if (response.status === 200) {
      const { data } = response;
      if (!data.success && data.code === -1) {
        const hash = window.location.hash
        if (!hash.startsWith('#/login')) {
          store.dispatch('user/logout');
        }
      }
      return data
    }
  },
  ...
}

2.4. 定制service

可以根据自己的需要定制service-base统一处理GET、POST请求

2.5. 定制store

/store/modules/user.ts 中的登录和获取用户信息的action需要进行调整

import axiosInstance from '@/utils/request';

// 登录改为请求接口:
async login({ commit }, userInfo) {
  return axiosInstance.post('/login', {
    username: userInfo.account,
    password: userInfo.password
  }).then(res => {
    if (res.success) {
      // string
      commit('setToken', res.data);
    }
    return res
  })
},

// 获取用户信息也改为请求接口:
async getUserInfo({ commit }) {
  await axiosInstance.get('/admin/userInfo').then(res => {
    if (res.success) {
      // {name: '', roles: []}
      commit('setUserInfo', res.data);
    }
  })
},

2.6. 其他调整

可以根据需要隐藏头部的GitHub链接、帮助文档链接等

/layouts/components/Header.vue

如果不需要keep-alive可以移除(之前遇到遇到过页面无法刷新的问题)

/layouts/components/Content.vue

release打包后的请求地址可以通过src/config/host.ts中的release节点配置

3. 开发文档

开发文档:https://tdesign.tencent.com/starter/docs/vue/develop

修改记录:https://github.com/Tencent/tdesign-vue-starter/commits/develop

发布记录:https://github.com/Tencent/tdesign-vue-starter/releases

标签:TDesign,Vue,--,res,ts,vue,定制,data,Starter
From: https://www.cnblogs.com/michong2022/p/17009034.html

相关文章

  • Vue3之watchEffect函数
    watchEffect函数watch的套路是:既要指明监视的属性,也要指明监视的回调。watchEffect的套路是:不用指明监视哪个属性,监视的回调中用到哪个属性,那就监视哪个属性。wat......
  • 一文理解vuex和pinia的区别
    一文理解vuex和pinia的区别......
  • SpringBoot vue
    springboot整合vue就行前后端完全分离,监听器,过滤器,拦截器https://github.com/ninuxGithub/spring-boot-vue-separateAblogbuiltupwithSpringBootinthebackend......
  • vue3 项目中设置组件name
    在开发vue3项目时,如果使用的是setup语法,那么想要给组件设置name属性。可以通过下面的两种形式。在组件中额外创建一个script脚本,在其中采用选项式api的写法,设置name属性......
  • Vue
    Vue输入绑定//输入绑定v-model//修饰符.lazy并不是实时改变,而是在失去焦点或者按回车时才会更新.number将输入转换成Number类型.trim可以自动过滤输入首尾的......
  • vue环境安装与配置
    https://www.jb51.net/article/251371.htmhttps://www.yht7.com/news/193355一、下载和安装Vue:https://nodejs.org/en/download/安装目录:D:\ProgramFiles\nodej......
  • 前端___Vue小案例
    Vue小案例包含bootstrap和Vue的使用文本输入框,复选框与Vue变量的绑定包含v-model,@,:,v-for,computed,methods,等语法的使用...仅供复习时使用源码:<!DOCTYPEhtml><ht......
  • 使用vue-pdf实现pdf预览翻页
    1.先引入npminstall--savevue-pdfvue3用 npminstall--savevue-pdf3 2.导入importpdffrom'vue-pdf'components:{pdf},3.vue中使用<pdfstyle="width:1......
  • Vue 封装自定义组件,通过npm install的方式安装使用
    1、新创建一个空的项目,我创建了一个新的项目(common-package-ui)2、在src下创建一个package文件夹用于存放自己的自定义组件,我创建了一个测试文件夹(test),下面创建了一个test......
  • Vue3 企业级优雅实战 - 组件库框架 - 9 实现组件库 cli - 上
    上文搭建了组件库cli的基础架子,实现了创建组件时的用户交互,但遗留了cli/src/command/create-component.ts中的createNewComponent函数,该函数要实现的功能就是上文开......