当前位置:首页 > 程序设计 > 代码设计pdf电子书
《重构:改善既有代码的设计(第2版)》电子书封面

重构:改善既有代码的设计(第2版)

  • 发布时间:2021年03月22日 14:45:46
  • 作者:马丁·福勒
  • 大小:129 MB
  • 类别:代码设计电子书
  • 格式:PDF
  • 版本:超清版
  • 评分:9.7

重构:改善既有代码的设计(第2版) PDF 超清版

    重构:改善既有代码的设计(第2版)》是一本关于代码设计相关的电子书资源,介绍了关于重构、代码设计方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小129 MB,马丁·福勒编写,目前豆瓣、亚马逊、当当、京东等综合评分为:8.4分,我们还提供了样章在线阅读,一起来看下具体内容。

    Tags:代码设计 重构 

    内容介绍

    本书是经典著作《重构》出版20年后的更新版。书中清晰揭示了重构的过程,解释了重构的原理和实践方式,并给出了何时以及何地应该开始挖掘代码以求改善。书中给出了60多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法的动机和技术。本书提出的重构准则将帮助开发人员一次一小步地修改代码,从而减少了开发过程中的风险。 本书适合软件开发人员、项目管理人员等阅读,也可作为高等院校计算机及相关专业师生的参考读物。

    推荐理由

    1. 软件开发大师的不朽经典 2. 生动阐述重构原理和具体做法    3. 普通程序员进阶到编程高手必须修炼的秘笈 重构,一言以蔽之,是在不改变外部行为的前提下,有条不紊地改善代码。20 多年前,正是《重构:改善既有代码的设计》第1 版的出版,使重构终于从编程高手们的小圈子走出,成为众多普通程序员日常开发工作中不可或缺的一部分。如今,Martin Fowler 的《重构:改善既有代码的设计》一书已经成为全球有经验的程序员手中的利器,既可用来改善既有代码的设计、提升软件的可维护性,又可用于使既有代码更易理解、焕发出新的活力。 这本备受关注的第2 版在第1 版的基础上做了全面修订,反映了编程领域业已发生的许多变化。第2 版中介绍的重构列表更加内聚,并用JavaScript 语言重写了代码范例。此外,第2 版中还新增了与函数式编程相关的重构范例,旨在教会读者如何在没有类的环境下开展重构。 新版沿袭了第1 版的结构,依次解释什么是重构,为什么要重构,如何通过“坏味道”识别出需要重构的代码,以及如何在实践中成功实施重构(无论用的是什么编程语言)。 ● 理解重构的过程和重构的基本原则; ● 快速有效地应用各种重构手法,提升程序的表达力和可维护性; ● 识别代码中能指示出需要重构的地方的“坏味道”; ● 深入了解各种重构手法,每个手法都包含解释、动机、做法和范例4 个部分; ● 构建稳固的测试,以支持重构工作的开展; ● 理解重构过程的权衡取舍以及重构存在的挑战等。 本书凝聚了软件开发社区专家多年摸索而获得的宝贵经验,书中所蕴涵的思想和精华,值得反复咀嚼,而且往往能够常读常新。

    目录

    • 第 1 章 重构,第 一个示例 1
    • 1.1 起点 1
    • 1.2 对此起始程序的评价 3
    • 1.3 重构的第 一步 5
    • 1.4 分解statement 函数 6
    • 1.5 进展:大量嵌套函数 22
    • 1.6 拆分计算阶段与格式化阶段 24
    • 1.7 进展:分离到两个文件(和两个阶段) 31
    • 1.8 按类型重组计算过程 34
    • 1.9 进展:使用多态计算器来提供数据 41
    • 1.10 结语 43
    • 第 2 章 重构的原则 45
    • 2.1 何谓重构 45
    • 2.2 两顶帽子 46
    • 2.3 为何重构 47
    • 2.4 何时重构 50
    • 2.5 重构的挑战 55
    • 2.6 重构、架构和YAGNI 62
    • 2.7 重构与软件开发过程 63
    • 2.8 重构与性能 64
    • 2.9 重构起源何处 67
    • 2.10 自动化重构 68
    • 2.11 延展阅读 70
    • 第3 章 代码的坏味道 71
    • 3.1 神秘命名(Mysterious Name) 72
    • 3.2 重复代码(Duplicated Code) 72
    • 3.3 过长函数(Long Function) 73
    • 3.4 过长参数列表(Long Parameter List) 74
    • 3.5 全局数据(Global Data) 74
    • 3.6 可变数据(Mutable Data) 75
    • 3.7 发散式变化(Divergent Change) 76
    • 3.8 霰弹式修改(Shotgun Surgery) 76
    • 3.9 依恋情结(Feature Envy) 77
    • 3.10 数据泥团(Data Clumps) 78
    • 3.11 基本类型偏执(Primitive Obsession) 78
    • 3.12 重复的switch(Repeated Switches) 79
    • 3.13 循环语句(Loops) 79
    • 3.14 冗赘的元素(Lazy Element) 80
    • 3.15 夸夸其谈通用性(Speculative Generality) 80
    • 3.16 临时字段(Temporary Field) 80
    • 3.17 过长的消息链(Message Chains) 81
    • 3.18 中间人(Middle Man) 81
    • 3.19 内幕交易(Insider Trading) 82
    • 3.20 过大的类(Large Class) 82
    • 3.21 异曲同工的类(Alternative Classes with Different Interfaces) 83
    • 3.22 纯数据类(Data Class) 83
    • 3.23 被拒绝的遗赠(Refused Bequest) 83
    • 3.24 注释(Comments) 84
    • 第4 章 构筑测试体系 85
    • 4.1 自测试代码的价值 85
    • 4.2 待测试的示例代码 87
    • 4.3 第 一个测试 90
    • 4.4 再添加一个测试 93
    • 4.5 修改测试夹具 95
    • 4.6 探测边界条件 96
    • 4.7 测试远不止如此 99
    • 第5 章 介绍重构名录 101
    • 5.1 重构的记录格式 101
    • 5.2 挑选重构的依据 102
    • 第6 章 第 一组重构 105
    • 6.1 提炼函数(Extract Function) 106
    • 6.2 内联函数(Inline Function) 115
    • 6.3 提炼变量(Extract Variable) 119
    • 6.4 内联变量(Inline Variable) 123
    • 6.5 改变函数声明(Change Function Declaration) 124
    • 6.6 封装变量(Encapsulate Variable) 132
    • 6.7 变量改名(Rename Variable) 137
    • 6.8 引入参数对象(Introduce Parameter Object) 140
    • 6.9 函数组合成类(Combine Functions into Class) 144
    • 6.10 函数组合成变换(Combine Functions into Transform) 149
    • 6.11 拆分阶段(Split Phase) 154
    • 第7 章 封装 161
    • 7.1 封装记录(Encapsulate Record) 162
    • 7.2 封装集合(Encapsulate Collection) 170
    • 7.3 以对象取代基本类型(Replace Primitive with Object) 174
    • 7.4 以查询取代临时变量(Replace Temp with Query) 178
    • 7.5 提炼类(Extract Class) 182
    • 7.6 内联类(Inline Class) 186
    • 7.7 隐藏委托关系(Hide Delegate) 189
    • 7.8 移除中间人(Remove Middle Man) 192
    • 7.9 替换算法(Substitute Algorithm) 195
    • 第8 章 搬移特性 197
    • 8.1 搬移函数(Move Function) 198
    • 8.2 搬移字段(Move Field) 207
    • 8.3 搬移语句到函数(Move Statements into Function) 213
    • 8.4 搬移语句到调用者(Move Statements to Callers) 217
    • 8.5 以函数调用取代内联代码(Replace Inline Code with Function Call) 222
    • 8.6 移动语句(Slide Statements) 223
    • 8.7 拆分循环(Split Loop) 227
    • 8.8 以管道取代循环(Replace Loop with Pipeline) 231
    • 8.9 移除死代码(Remove Dead Code) 237
    • 第9 章 重新组织数据 239
    • 9.1 拆分变量(Split Variable) 240
    • 9.2 字段改名(Rename Field) 244
    • 9.3 以查询取代派生变量(Replace Derived Variable with Query) 248
    • 9.4 将引用对象改为值对象(Change Reference to Value) 252
    • 9.5 将值对象改为引用对象(Change Value to Reference) 256
    • 第 10 章 简化条件逻辑 259
    • 10.1 分解条件表达式(Decompose Conditional) 260
    • 10.2 合并条件表达式(Consolidate Conditional Expression) 263
    • 10.3 以卫语句取代嵌套条件表达式(Replace Nested Conditional with Guard Clauses) 266
    • 10.4 以多态取代条件表达式(Replace Conditional with Polymorphism) 272
    • 10.5 引入特例(Introduce Special Case) 289
    • 10.6 引入断言(Introduce Assertion) 302
    • 第 11 章 重构API 305
    • 11.1 将查询函数和修改函数分离(Separate Query from Modifier) 306
    • 11.2 函数参数化(Parameterize Function) 310
    • 11.3 移除标记参数(Remove Flag Argument) 314
    • 11.4 保持对象完整(Preserve Whole Object) 319
    • 11.5 以查询取代参数(Replace Parameter with Query) 324
    • 11.6 以参数取代查询(Replace Query with Parameter) 327
    • 11.7 移除设值函数(Remove Setting Method) 331
    • 11.8 以工厂函数取代构造函数(Replace Constructor with Factory Function) 334
    • 11.9 以命令取代函数(Replace Function with Command) 337
    • 11.10 以函数取代命令(Replace Command with Function) 344
    • 第 12 章 处理继承关系 349
    • 12.1 函数上移(Pull Up Method) 350
    • 12.2 字段上移(Pull Up Field) 353
    • 12.3 构造函数本体上移(Pull Up Constructor Body) 355
    • 12.4 函数下移(Push Down Method) 359
    • 12.5 字段下移(Push Down Field) 361
    • 12.6 以子类取代类型码(Replace Type Code with Subclasses) 362
    • 12.7 移除子类(Remove Subclass) 369
    • 12.8 提炼超类(Extract Superclass) 375
    • 12.9 折叠继承体系(Collapse Hierarchy) 380
    • 12.10 以委托取代子类(Replace Subclass with Delegate) 381
    • 12.11 以委托取代超类(Replace Superclass with Delegate) 399
    • 参考文献 405
    • 索引 409

    读书笔记

    java生成可变表头的excel代码实例

    本文为大家分享了java生成可变表头excel的具体步骤,供大家参考,具体内容如下

    1、实现功能:

      传入一个表头和数据,将数据导入到excel中。

      为了便于项目的扩展,数据传入通过泛型集合传入,获取数据时,通过反射的方式获取,这样无论你的表头是多少项,我都能很方便的生成。另外为了便于数据的管理,我每天都会自动生成一个文件夹,excel生成在相应的文件夹中。文件的根目录通过读取项目中的properties文件获取(详情可查看:获取tomcat上properties文件内容的方法)。好啦,接下来直接进入代码开发吧。

    2、所需jar包

      这里使用的是通过poi的方式将数据导入到excel中。

    java如何生成可变表头的excel

    3、代码设计

    1)、properties文件内容

    filePath=E\:/appData

    2)、获取文件保存的根目录(来自项目中的properties文件)

    import java.io.BufferedInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Properties;
    
    public class GetFilePlace 
    {
     /**
      * 读取文件,获取excel保存的根目录
      * @return excel保存的根目录
      */
     public String getFilePath()
     {
      String dir = System.getProperty("user.dir"); //获得tomcat所在的工作路径 
      
      //获取到存储了文件存储位置的filedir.properties 文件路径
      String realDir = dir + File.separator + "src" + File.separator +"META-INF" + File.separator + "filedir.properties";
      
      /*String realDir = dir.substring(0, dir.length()-4) + File.separator +"webapps" + File.separator + "generateExcels" 
          + File.separator + "classes" + File.separator + "META-INF" + File.separator + "config" + File.separator + "filedir.properties";
     */
      return realDir;
     }
     
     /**
      * 获取filePath路径【properities文件】中key对应的值,
      * @param filePath properities文件路径【包含properities文件】
      * @param key 要查找的key值
      * @return key对应的value
      */
      public String GetValueByKey(String filePath, String key) 
      {
       Properties pps = new Properties();
       try {
        InputStream in = new BufferedInputStream (new FileInputStream(filePath)); 
        pps.load(in);
        String value = pps.getProperty(key);
        in.close();
        return value;
        
       }catch (IOException e) {
        e.printStackTrace();
        return null;
       }
      }
     
     /**
      * 查询properities文件中可以对应的存储地点
      * @param key 查询主键
      * @return key对应的存储地址
      */
     public String getFileDirFromProperties(String key)
     {
      return GetValueByKey(getFilePath(),key);
     }
     
     public static void main(String[] args)
     {
      System.out.println(new GetFilePlace().getFileDirFromProperties("filePath"));
     }
    }
    
    

    3)、生成文件夹

    import java.io.File;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    
    public class GenerateFold
    {
     /**
      * 查询当前生成的excel需要存在在哪个路径,如果存在则存储在相应的位置,否则生成改目录, 每天生成一个文件夹,文件夹的命名规则为 年月日的时间戳
      * @param foldName 生成excel保存路径
      * @return   现在的excel需要保存路径
      */
     public String getFold(String foldName)
     {
      SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
      
      String todayStr = format.format(Calendar.getInstance().getTime());
      
      String foldPath = foldName + File.separator + todayStr; 
      
      File file = new File(foldPath);
      
      if(!file.exists() && !file.isDirectory())
      {
       System.out.println("不存在");
       file.mkdirs();
      }
      else
      {
       System.out.println("存在");
      }
      return foldPath;
     }
    
    }
    
    

    4)、生成excel

    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.List;
    import java.util.UUID;
    
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFCellStyle;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.hssf.util.Region;
    import org.apache.poi.ss.usermodel.CellStyle;
    
    import com.zcr.until.GetFilePlace;
    import com.zcr.until.User;
    
    /**
     * 生成excel
     * @author zcr
     *
     */
    public class GenerateExcel
    {
     /**
      * 通过关键字查询properties文件相应文件的存储位置,根据表头顺序将数据保存到相应文件路径的xls文件中, 文件的命名规则是时间戳加一串全球唯一编码
      * @param fileDir       //查找文件存储根目录
      * @param head       //表头
      * @param list       //数据
      * @return        //文件的保存路径及其名字的字符串
      */
     public <T> String generateExcels(String fileDir,String [] head,List<T> list) 
     {
      //获得存储的路径
      //String savePath = new GetFilePlace().getFileDirFromProperties(key);
      
      //文件存储名字
      String saveFileName = "";
      SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSS");
      saveFileName += format.format(Calendar.getInstance().getTime());
      
      UUID uuid = UUID.randomUUID(); //全球唯一编码
      
      saveFileName += "-" + uuid.toString();
      
      
      HSSFWorkbook workbook = new HSSFWorkbook();
      HSSFSheet sheet = workbook.createSheet();
      workbook.setSheetName(0,"APP数据"); //设置表格工作簿名称
      HSSFCellStyle cellStyle = workbook.createCellStyle();
      cellStyle.setAlignment(CellStyle.ALIGN_CENTER);
      cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
      
      HSSFRow titleRow = sheet.createRow(0);
      sheet.addMergedRegion(new Region(0,(short)0,0,(short)(head.length-1)));
      HSSFCell titleCell = titleRow.createCell(0);
      titleCell.setCellValue("AAP数据____ ");
      titleCell.setCellStyle(cellStyle);
      HSSFRow row1 = sheet.createRow(1);
      
      
      //设置表头
      for(int i = 0 ; i < head.length ; i++)
      {
       HSSFCell cell = row1.createCell(i);
       cell.setCellValue(head[i]); //设置值
       cell.setCellStyle(cellStyle);//设置样式
      }
      
      
      if(null != list && list.size() > 0)
      {
       int size = list.size(); 
       Class classType = list.get(0).getClass();
       for(int i = 0,rowNum=2 ; i < size ; i ++,rowNum++)
       {
        HSSFRow rows = sheet.createRow(rowNum);
        T t = list.get(i);
        
        //添加数据行
        for(int j = 0 ; j < head.length ; j++) 
        {
         //获得首字母
         String firstLetter = head[j].substring(0,1).toUpperCase(); 
         
         //获得get方法,getName,getAge等
         String getMethodName = "get" + firstLetter + head[j].substring(1);
         
         Method method;
         try
         {
          //通过反射获得相应的get方法,用于获得相应的属性值
          method = classType.getMethod(getMethodName, new Class[]{});
          
          HSSFCell dataCell = rows.createCell(j);
          try
          {
            System.out.print(getMethodName +":" + method.invoke(t, new Class[]{}) +",");
            dataCell.setCellValue(method.invoke(t, new Class[]{}).toString());
          }
          catch (IllegalArgumentException e)
          {
           e.printStackTrace();
          }
          catch (IllegalAccessException e)
          {
           e.printStackTrace();
          }
          catch (InvocationTargetException e)
          {
           e.printStackTrace();
          } //设置值
          dataCell.setCellStyle(cellStyle);//设置样式
         }
         catch (SecurityException e)
         {
          e.printStackTrace();
         }
         catch (NoSuchMethodException e)
         {
          e.printStackTrace();
         }
         
        }
        System.out.println();
       }
      }
      else
      {
       System.out.println("没有数据");
      }
      
      //获得文件存储路径
      //String fileDir = new GetFilePlace().getFileDirFromProperties(key);
      saveFileName += ".xls";
      String saveFilePathAndName = fileDir + File.separator + saveFileName;
      OutputStream out = null;
      try
      {
       out = new FileOutputStream(saveFilePathAndName);
       try
       {
        workbook.write(out);//保存文件
       }
       catch (IOException e)
       {
        // TODO Auto-generated catch block
        e.printStackTrace();
       }
      }
      catch (FileNotFoundException e)
      {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
      finally
      {
       try
       {
        out.close();
       }
       catch (IOException e)
       {
        // TODO Auto-generated catch block
        e.printStackTrace();
       }
      }
      
      return saveFilePathAndName;
     }
    
     
     /**
      * 提供外界调用的接口,生成以head为表头,list为数据的excel
      * @param head //数据表头
      * @param list //数据
      * @return  //excel所在的路径
      */
     public <T> String generateExcel(String [] head,List<T> list)
     {
      final String FilePath = "filePath";
      String saveFilePathAndName = "";
     
      //获得存储的根目录
      String savePath = new GetFilePlace().getFileDirFromProperties(FilePath);
      
      //获得当天存储的路径
      String realSavePath = new GenerateFold().getFold(savePath);
      
      //生成excel并将存储的路径返回(包含文件名)
      saveFilePathAndName = generateExcels(realSavePath, head, list);
      
      return saveFilePathAndName;
     }
     
     
     public static void main(String[] args)
     {
      String [] head = {"name","sex","adress","height","age","jj"};
      
      List<User> list = new ArrayList<User>();
      User user1 = new User("zhangsan",1,1.1f,"北京","男","AA");
      User user2 = new User("lisi",22222,3.2f,"上海","女","BB");
      
      list.add(user1);
      list.add(user2);
      
      System.out.println(new GenerateExcel().generateExcel(head,list));
      //System.out.println(new GenerateExcel().generateExcels("E:\\appData\\20151104",head,list));
     }
    
    }
    
    
    

    102776

    5)、测试结果

    生成了文件

    java如何生成可变表头的excel

      文件内容如下

    java如何生成可变表头的excel

    properties文件读取可查看:获取tomcat上properties文件内容的方法

    读取excel可查看:java使用POI批量导入excel数据的方法

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

    以上就是本次介绍的代码设计电子书的全部相关内容,希望我们整理的资源能够帮助到大家,感谢大家对码农之家的支持。

    上一篇:代码整洁之道(2020)

    下一篇:STL源码剖析

    查看更多
    下载地址:百度网盘下载
    代码设计 相关电子书
    零基础python入门(含课件代码)
    零基础python入门(含课件代码) PDF 高清版

    本资源是《 零基础python入门 》课程的附带课件,包含PPT讲义和课程代码。是零基础python学习者的福音,手把手教你如何学好python,需要的朋友可下载试试! 目录 第一章:课程介绍及python发展方向 第二章:程序设计与python语言 第三章:案例1 -- 汇率兑换 第四章:案例2 -- 分形树的绘制 第五章:案例3 -- 基础代谢率(BMR)计算 第六章:案例4 -- 52周存钱挑战 第七章:案例5 -- 判断第几天 第八章:案例6 -- 判断密码强弱 第九章:案例7 -- 模拟掷骰子

    立即下载
    Python项目开发案例集锦:实战项目代码+配套文件
    Python项目开发案例集锦:实战项目代码+配套文件 PDF 完整版

    Python项目开发案例集锦 涵盖8个开发方向、23个项目,循序渐进地让读者在实践中学习,在实践中提升实际开发能力。 全书共8篇:控制台程序、小游戏、实用小工具、网络爬虫、数据分析、人工智能、Web开发和微信小程序,内容包括:学生信息管理系统、企业编码生成系统、简易五子棋游戏(控制台版)、玛丽冒险、彩图版飞机大战、DIY字符画、超级画板、Word助手、图片批量处理器、RCQ读者书库、火车票分析助手、高德地图+58租房、开心麻花影视作品分

    立即下载
    C和C++代码精粹
    C和C++代码精粹 PDF 超清版

    C和C++代码精粹 作者:ChuckAllison 译者:董慧颖 丛书名:C和C++实务精选 出版日期:2003年4月 本书基于作者备受好评的C/C++UserJournal杂志上的每月专栏,通过大量完全符合ISO标准C++的程序集合,说明了C++真正强大的威力,是C和C++职业程序员的实践指南。 全书分为3篇共20章,分别从指针、预处理器、C标准库、抽象、模板、异常、算法、容器、文件处理、动态内存管理等不同层次的话题展开讨论。书中的精粹代码,对于C和C++程序员具有很好的使用价值和启发意

    立即下载
    大数据处理系统:Hadoop源代码情景分析
    大数据处理系统:Hadoop源代码情景分析 PDF 高清版

    Hadoop是目前采用最广、最重要的一种开源的大数据处理平台,读懂Hadoop的源代码,深入理解其各种机理,对于掌握大数据处理的技术有着显而易见的重要性。毛德操著的《大数据处理系统(Had

    立即下载
    代码管理核心技术及实践
    代码管理核心技术及实践 PDF 超清版

    这本书通过系统化的介绍和比较,从整体上讲解了代码管理工具和系统的历史和发展,帮助读者在现实中从团队的大小及代码管理模式是集中式还是分布式、开源还是闭源等各个角度去了解和思考代码管理的核心技术和实践经验

    立即下载
    读者心得
    87小时48分钟前回答

    jQuery实现的超酷苹果风格图标滑出菜单效果代码

    本文实例讲述了jQuery实现的超酷苹果风格图标滑出菜单效果代码。分享给大家供大家参考。具体如下: 这是一款超酷苹果风格图标滑出菜单,调用了jquery1.3.2的库文件,整个菜单动感十足,用在网站上增色不少。 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-apple-style-ico-show-menu-codes/ 具体代码如下: !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"htmlheadtitle超酷苹果风格图标滑出菜单/titlemeta http-equiv="Content-Type" content="text/html; charset=gbk"/style body{ margin:0px; padding:0px; background-color:#f0f0f0; font-family:Arial; } .title{ position:absolute; top:100px; left:50%; margin-left:-204……

    41小时55分钟前回答

    Vue自定义过滤器格式化数字三位加一逗号实现代码

    前端处理一些金额,数字类的数据要求按照固定的格式显示,比如9,527,025,或者带有小数(如1,587.23)仍要三位一断。有些话也不必多说,既然要求如此,实现呗。 作为前端主流框架之一的Vue,类似的功能肯定都有人写的很完善了。我呢,最讨厌不动脑筋去网上找现成的,所以我自己写了一个。话不多说,先放效果图再贴代码(为了展现思路,我面向过程写的,另外这个是针对保留两位小数的数字进行过滤,因为保留整数的太简单了)。 !DOCTYPE htmlhtml head meta charset="UTF-8" meta http-equiv="Content-Type" content="text/html" titleVue数字过滤器逢三一断/title /head body div id="app" h4说明:这个版本是针对保留两位小数的浮点数……

    码农之家

    宿云飞 提供上传

    资源
    39
    粉丝
    9
    喜欢
    60
    评论
    9

    Copyright 2018-2021 www.xz577.com 码农之家

    版权投诉 / 书籍推广:520161757@qq.com