如何将Vue封装全局过滤器Filters的步骤详细描述成一个冗长且复杂的?

2026-04-03 01:231阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计961个文字,预计阅读时间需要4分钟。

如何将Vue封装全局过滤器Filters的步骤详细描述成一个冗长且复杂的?

在Vue CLI 3构建的基础Vue项目中,进行前后端分离的开发时,通常会涉及后台返回的数据处理。具体来说,需要经过以下步骤才能将数据展示在页面上:

1. 发起请求:通过API调用获取数据。

2.数据处理:在服务器端对数据进行处理,如查询、计算等。

3.返回数据:服务器将处理后的数据返回给前端。

4.接收数据:前端接收到数据后,进行相应的处理。

5.渲染页面:将数据渲染到页面上,展示给用户。

使用最多的是以下场景:

- 列表展示:从后台获取数据列表,并在页面上展示。

- 详情展示:获取某个具体数据详情,如用户信息、商品详情等。- 搜索结果:根据用户输入搜索条件,从后台获取搜索结果并展示。- 分页加载:当数据量较大时,通过分页加载来优化页面性能。

(PS:本文代码在vue-cli3构建的基础vue项目之上进行编写:vue create my-project)

  在前后端分离的项目中,经常会有后台返回的数据需要经过处理才能显示到页面上的场景。

  使用最多的场景就是日期/时间、数字、字符串的格式化处理,实际业务中可能还有更复杂的数据处理逻辑。

  下面就拿封装全局的处理数字和字符串的 filter 来展示 vue 如何 封装全局filter 并统一处理。

一、定义/封装过滤器

  在 src目录 下新建 filters目录 用来专门存放全局过滤器,如果项目的过滤器过多,那么就要按类型分类。
  如果项目需要前台处理的数据不是太多,那么就在 filters目录 下新建一个 index.js 来存放所有的过滤器就足够了。

index.js代码如下:

// 封装过滤器 // 过滤器的声明可以有下列多种写法 /** * Number formatting by unit * like 10000 => 10k * @param {number} num * @param {number} digits * @return {string} */ function numberFormatter(num, digits) { const si = [ { value: 1e18, symbol: "E" }, { value: 1e15, symbol: "P" }, { value: 1e12, symbol: "T" }, { value: 1e9, symbol: "G" }, { value: 1e6, symbol: "M" }, { value: 1e3, symbol: "k" } ]; for (let i = 0; i < si.length; i++) { if (num >= si[i].value) { return (num / si[i].value + 0.1).toFixed(digits).replace(/\.0+$|(\.[0-9]*[1-9])0+$/, '$1') + si[i].symbol } } return num.toString(); } /** * Number formatting by thousand * like 10000 => "10,000" * @param {number} num * @return {string} */ const toThousandFilter = function(num) { return (+num || 0).toString().replace(/^-?\d+/g, m => m.replace(/(?=(?!\b)(\d{3})+$)/g, ',')) }; /** * Upper case first char * like "wenyuan" => "Wenyuan" * @param {string} string * @return {string} */ const uppercaseFirst = string => { return string.charAt(0).toUpperCase() + string.slice(1); }; export default { numberFormatter, toThousandFilter, uppercaseFirst };

二、注册过滤器

  然后在 main.js 中引入注册即可使用:

import filters from "./filters"; // global filters // register global utility filters Object.keys(filters).forEach(key => { Vue.filter(key, filters[key]); });

三、在组件内使用写好的过滤器

  在组件中使用:

<template> <div class="home"> <img alt="Vue logo" src="../assets/logo.png"/> <h1>score:{{ score | numberFormatter }}</h1> <h1>score:{{ score | toThousandFilter }}</h1> <h1>username:{{ username | uppercaseFirst }}</h1> </div> </template> <script> export default { name: "home", components: {}, data() { return { score: 1200000, username: "wenyuan" }; } }; </script>

四、效果

五、可能的报错与注意点

  在 main.js 中,要先定义过滤器, 再新建 vue 实例,否则会报Failed to resolve filter: xxx的错误。

如何将Vue封装全局过滤器Filters的步骤详细描述成一个冗长且复杂的?

以上就是Vue封装全局过滤器Filters的步骤的详细内容,更多关于vue封装过滤器的资料请关注易盾网络其它相关文章!

标签:步骤本文

本文共计961个文字,预计阅读时间需要4分钟。

如何将Vue封装全局过滤器Filters的步骤详细描述成一个冗长且复杂的?

在Vue CLI 3构建的基础Vue项目中,进行前后端分离的开发时,通常会涉及后台返回的数据处理。具体来说,需要经过以下步骤才能将数据展示在页面上:

1. 发起请求:通过API调用获取数据。

2.数据处理:在服务器端对数据进行处理,如查询、计算等。

3.返回数据:服务器将处理后的数据返回给前端。

4.接收数据:前端接收到数据后,进行相应的处理。

5.渲染页面:将数据渲染到页面上,展示给用户。

使用最多的是以下场景:

- 列表展示:从后台获取数据列表,并在页面上展示。

- 详情展示:获取某个具体数据详情,如用户信息、商品详情等。- 搜索结果:根据用户输入搜索条件,从后台获取搜索结果并展示。- 分页加载:当数据量较大时,通过分页加载来优化页面性能。

(PS:本文代码在vue-cli3构建的基础vue项目之上进行编写:vue create my-project)

  在前后端分离的项目中,经常会有后台返回的数据需要经过处理才能显示到页面上的场景。

  使用最多的场景就是日期/时间、数字、字符串的格式化处理,实际业务中可能还有更复杂的数据处理逻辑。

  下面就拿封装全局的处理数字和字符串的 filter 来展示 vue 如何 封装全局filter 并统一处理。

一、定义/封装过滤器

  在 src目录 下新建 filters目录 用来专门存放全局过滤器,如果项目的过滤器过多,那么就要按类型分类。
  如果项目需要前台处理的数据不是太多,那么就在 filters目录 下新建一个 index.js 来存放所有的过滤器就足够了。

index.js代码如下:

// 封装过滤器 // 过滤器的声明可以有下列多种写法 /** * Number formatting by unit * like 10000 => 10k * @param {number} num * @param {number} digits * @return {string} */ function numberFormatter(num, digits) { const si = [ { value: 1e18, symbol: "E" }, { value: 1e15, symbol: "P" }, { value: 1e12, symbol: "T" }, { value: 1e9, symbol: "G" }, { value: 1e6, symbol: "M" }, { value: 1e3, symbol: "k" } ]; for (let i = 0; i < si.length; i++) { if (num >= si[i].value) { return (num / si[i].value + 0.1).toFixed(digits).replace(/\.0+$|(\.[0-9]*[1-9])0+$/, '$1') + si[i].symbol } } return num.toString(); } /** * Number formatting by thousand * like 10000 => "10,000" * @param {number} num * @return {string} */ const toThousandFilter = function(num) { return (+num || 0).toString().replace(/^-?\d+/g, m => m.replace(/(?=(?!\b)(\d{3})+$)/g, ',')) }; /** * Upper case first char * like "wenyuan" => "Wenyuan" * @param {string} string * @return {string} */ const uppercaseFirst = string => { return string.charAt(0).toUpperCase() + string.slice(1); }; export default { numberFormatter, toThousandFilter, uppercaseFirst };

二、注册过滤器

  然后在 main.js 中引入注册即可使用:

import filters from "./filters"; // global filters // register global utility filters Object.keys(filters).forEach(key => { Vue.filter(key, filters[key]); });

三、在组件内使用写好的过滤器

  在组件中使用:

<template> <div class="home"> <img alt="Vue logo" src="../assets/logo.png"/> <h1>score:{{ score | numberFormatter }}</h1> <h1>score:{{ score | toThousandFilter }}</h1> <h1>username:{{ username | uppercaseFirst }}</h1> </div> </template> <script> export default { name: "home", components: {}, data() { return { score: 1200000, username: "wenyuan" }; } }; </script>

四、效果

五、可能的报错与注意点

  在 main.js 中,要先定义过滤器, 再新建 vue 实例,否则会报Failed to resolve filter: xxx的错误。

如何将Vue封装全局过滤器Filters的步骤详细描述成一个冗长且复杂的?

以上就是Vue封装全局过滤器Filters的步骤的详细内容,更多关于vue封装过滤器的资料请关注易盾网络其它相关文章!

标签:步骤本文