[Job 实战]vue 后台/网站 开发总结(1)

简介: [Job 实战]vue 后台/网站 开发总结(1)

1、常规组件 传值 有2种写法

  • 开发部分
  • 推荐的第一种 对象形式 接收

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • 第二 数组形式 接收

网络异常,图片无法展示
|
网络异常,图片无法展示
|

  • 官网描述

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • 常规 父--->子

网络异常,图片无法展示
|

  • 子 ---> 父 方法

网络异常,图片无法展示
|

2、class/style 动态控制

  • 开发部分
    网络异常,图片无法展示
    |

  • 官网
  • 对象语法

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • 数组语法

网络异常,图片无法展示
|

  • 用在组件上
    网络异常,图片无法展示
    |

  • style 直接定义 推荐
    网络异常,图片无法展示
    |

  • 多重值

网络异常,图片无法展示
|

  • vue 会给不同浏览器 加不同前缀

3、后端给的是 一些字段的 id 前端需要展示出这些字段

  • 第一种方式 推荐
  • 先将这些值拿到 并放在 store 中
import to from 'await-to-js';
import scriptApi from '@/api/modules/scriptApi';
const idMap = localStorage.getItem('pia-idMap');
let map = {};
if (idMap) {
  try {
    map = JSON.parse(idMap);
  } catch (error) {
    //
  }
}
function format(arr) {
  const obj = {};
  arr.forEach(item => {
    // eslint-disable-next-line no-underscore-dangle
    obj[item._id] = item.data;
  });
  return obj;
}
// 第一个参数是应用程序中 store 的唯一 id
export default defineStore('script-config', {
  state: () => ({
    //  下面5个都是剧本的属性的映射关系
    historicalBg: map.historicalBg || [],
    source: map.source || [],
    type: map.type || [],
    authorization: map.authorization || [],
    label: map.label || [],
  }),
  getters: {},
  actions: {
    // 获取映射关系
    async initMap() {
      const [err, res] = await to(scriptApi.init());
      const code = res?.code;
      if (err || code !== 0) {
        return;
      }
      const { data } = res;
      // eslint-disable-next-line no-restricted-syntax
      for (const key in data) {
        // eslint-disable-next-line no-prototype-builtins
        if (data.hasOwnProperty(key)) {
          data[key] = format(data[key]);
        }
      }
      this.historicalBg = data.historicalBg;
      this.source = data.source;
      this.type = data.type;
      this.authorization = data.authorization;
      this.label = data.label;
      localStorage.setItem('pia-idMap', JSON.stringify(data));
    },
  },
});
复制代码
  • api

网络异常,图片无法展示
|

  • localStorage 中也存了

网络异常,图片无法展示
|

  • 使用

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • 第二种方式  如果用在一些 没有关联的页面比较合适 当然此处可优化

网络异常,图片无法展示
|

  • 页面直接调用
    网络异常,图片无法展示
    |

4、这种选项框 内容传递问题  如果使用 value 将无法 传递 自定义数据

网络异常,图片无法展示
|

  • 这样写
    网络异常,图片无法展示
    |

  • 使用

网络异常,图片无法展示
|

网络异常,图片无法展示
|

5、常用的页面/表单刷新方法

  • 最不建议的是 window.location.reload() 非常的不现代化,体验非常的差
  • 推荐方式  使用 ref

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • getList 调取接口

网络异常,图片无法展示
|

网络异常,图片无法展示
|

6、值得注意的 switch 开关状态 控制

网络异常,图片无法展示
|

  • 点击取消时 刷新 恢复
  • 点击 确认后发请求
  • 需要控制 Modal 显示隐藏

网络异常,图片无法展示
|

网络异常,图片无法展示
|

7、关于弹窗 Modal 和 confirm 选择

网络异常,图片无法展示
|

  • 比较丑的 表现

网络异常,图片无法展示
|

  • 使用 这种语法 更改为上面的表达
this.$Modal.confirm({ content: `<h3>询问内容?</h3>`, onOk: async () => { this.$Message.success('操作成功') }, })
复制代码

8、关于组件封装和页面简化

  • 其实比较忌讳的是 写一些重复页面 ,这样会导致 写起来,包括后面的维护都变得比较困难
  • 我想 每个行业 应该都会注重 重复性,重复的 代码 或者模版 往往 被视为是更好的表达
  • 简单来说 就是复用
  • 比如下面这个例子  3个tab 内容比较类似 ,可以写三个页面,当然也可以 写一个 组件 其他的页面传递一些参数

网络异常,图片无法展示
|

9、关于搜索/选择框数据渲染问题

  • 这种 选择框的数据 需要动态生成,不能是固定写死的

网络异常,图片无法展示
|

  • 看下解决方式
  • data 中的 初始搜索项目为 空

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • 点击 搜索 后是这样的

网络异常,图片无法展示
|

10、方便新添加的数据管理,按钮状态切换实现参考

  • 目的是 新添加的 内容 不要 立即在网站上生效,可以做二次确认或者审核

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

11、数据 移动 + 序号变更

  • 移动使用的是 Sortable.js
  • 序号变更 需要给后端传递数据  传递 currentIndex, targetIndex

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

11、使用 @/utils/xslx 读取或者导入 Excel

  • 下载模版

网络异常,图片无法展示
|

  • 上传文件

网络异常,图片无法展示
|

  • 看一下效果

网络异常,图片无法展示
|

12、有个 detail 页面 需要跳到新页面

  • 参考实现

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • 暂时 写这么多,未完待续......

参考网站

[Vue官网]



相关文章
|
4天前
|
缓存 JavaScript 前端开发
vue学习第四章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中计算属性的基本与复杂使用、setter/getter、与methods的对比及与侦听器的总结。如果你觉得有用,请关注我,将持续更新更多优质内容!🎉🎉🎉
vue学习第四章
|
4天前
|
JavaScript 前端开发
vue学习第九章(v-model)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript与Vue的大一学生,自学前端2年半,正向全栈进发。此篇介绍v-model在不同表单元素中的应用及修饰符的使用,希望能对你有所帮助。关注我,持续更新中!🎉🎉🎉
vue学习第九章(v-model)
|
4天前
|
JavaScript 前端开发 开发者
vue学习第十章(组件开发)
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文深入讲解Vue组件的基本使用、全局与局部组件、父子组件通信及数据传递等内容,适合前端开发者学习参考。持续更新中,期待您的关注!🎉🎉🎉
vue学习第十章(组件开发)
|
10天前
|
JavaScript 前端开发
如何在 Vue 项目中配置 Tree Shaking?
通过以上针对 Webpack 或 Rollup 的配置方法,就可以在 Vue 项目中有效地启用 Tree Shaking,从而优化项目的打包体积,提高项目的性能和加载速度。在实际配置过程中,需要根据项目的具体情况和需求,对配置进行适当的调整和优化。
|
10天前
|
存储 缓存 JavaScript
如何在大型 Vue 应用中有效地管理计算属性和侦听器
在大型 Vue 应用中,合理管理计算属性和侦听器是优化性能和维护性的关键。本文介绍了如何通过模块化、状态管理和避免冗余计算等方法,有效提升应用的响应性和可维护性。
|
9天前
|
JavaScript 前端开发 UED
vue学习第二章
欢迎来到我的博客!我是一名自学了2年半前端的大一学生,熟悉JavaScript与Vue,目前正在向全栈方向发展。如果你从我的博客中有所收获,欢迎关注我,我将持续更新更多优质文章。你的支持是我最大的动力!🎉🎉🎉
|
9天前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。自学前端2年半,熟悉JavaScript与Vue,正向全栈方向发展。博客内容涵盖Vue基础、列表展示及计数器案例等,希望能对你有所帮助。关注我,持续更新中!🎉🎉🎉
|
JavaScript 测试技术 容器
Vue2+VueRouter2+webpack 构建项目
1). 安装Node环境和npm包管理工具 检测版本 node -v npm -v 图1.png 2). 安装vue-cli(vue脚手架) npm install -g vue-cli --registry=https://registry.
1052 0
|
10天前
|
存储 缓存 JavaScript
在 Vue 中使用 computed 和 watch 时,性能问题探讨
本文探讨了在 Vue.js 中使用 computed 计算属性和 watch 监听器时可能遇到的性能问题,并提供了优化建议,帮助开发者提高应用性能。
|
10天前
|
存储 缓存 JavaScript
Vue 中 computed 和 watch 的差异
Vue 中的 `computed` 和 `watch` 都用于处理数据变化,但使用场景不同。`computed` 用于计算属性,依赖于其他数据自动更新;`watch` 用于监听数据变化,执行异步或复杂操作。
下一篇
无影云桌面