摘要: 一、核心方法代码 //json格式美化 function prettyFormat(str) { try { // 设置缩进为2个空格 str = JSON.stringify(JSON.parse(str), null, 2); str = str .replace(/&/g, '&') 阅读全文
posted @ 2020-07-11 10:39 挑战者V 阅读(4801) 评论(0) 推荐(1) 编辑
摘要: 应用场景:最近我做的一个在线工具网站(参考现在的JSON网站做的),其中有一个功能叫做JSON格式化和校验,通过复制JSON数据点击格式化后,得到美化的JSON数据,再点击按钮”复制”就能获取美化后JSON数据。 核心代码: function selectText(element) { var te 阅读全文
posted @ 2020-07-11 10:37 挑战者V 阅读(588) 评论(0) 推荐(0) 编辑
摘要: 一、复用/发布原则 软件复用的最小粒度应等同于其发布的最小粒度。从软件设计与架构设计的角度来看,复用/发布原则就是指组件中的类与模块必须是彼此紧密相关的。也就是说,一个组件不能由一组毫无关联的类和模块组成,它们之间应该有一个共同的主题或者大方向。 从另一个角度来看,这个原则就没有那么简单。因为根据该 阅读全文
posted @ 2020-07-11 10:26 挑战者V 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 组件是软件的部署单元,是整个软件系统在部署过程中可以独立完成部署的最小实体。例如:对于Java来说,它的组件是jar文件。而在Ruby中,它们是gem文件。在.Net中,它们则是DLL文件,组件则是一组源代码文件的集合。无论采用什么编程语言来开发软件,组件都是该软件在部署过程中的最小单元。 我们可以 阅读全文
posted @ 2020-07-11 10:25 挑战者V 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 一、两个js文件(FileSaver.js和jquery.wordexport.js) FileSaver.js: /* FileSaver.js * A saveAs() FileSaver implementation. * 1.3.2 * 2016-06-16 18:25:19 * * By 阅读全文
posted @ 2020-07-11 10:23 挑战者V 阅读(6781) 评论(0) 推荐(0) 编辑
摘要: 一、下载js库 下载地址:https://github.com/eKoopmans/html2pdf.js 官方文档:https://ekoopmans.github.io/html2pdf.js/ 二、引入 <script src="../js/html2pdf.js"></script> 三、编 阅读全文
posted @ 2020-07-11 10:21 挑战者V 阅读(5473) 评论(1) 推荐(0) 编辑
摘要: 依赖反转原则主要想告诉我们,如果想要设计一个灵活的系统,在源代码层次的依赖关系中就应该多引用抽象类型,而非具体实现。 一、稳定的抽象层 我们每次修改抽象接口的时候,一定也会去修改对应的具体实现。但反过来,当我们修改具体实现时,却很少需要去修改响应的抽象接口。所以我们可以认为接口比实现更稳定。 也就是 阅读全文
posted @ 2020-07-11 10:20 挑战者V 阅读(412) 评论(0) 推荐(0) 编辑
摘要: 回顾一下ISP最初的成因:在一般情况下,任何层次的软件设计如果依赖于不需要的东西,都会是有害的。从源代码层次来说,这样的依赖关系会导致不必要的重新编译和重新部署,对更高层次的软件架构设计来说,问题也是类似的。接口隔离原则告诉我们:任何层次的软件设计如果依赖了它并不需要的东西,就会带来意料之外的麻烦。 阅读全文
posted @ 2020-07-11 10:18 挑战者V 阅读(186) 评论(0) 推荐(1) 编辑
摘要: 1988年,Barbara Liskov在描述如何定义子类型时写下这样一段话:这样需要的是一种可替换性:如果对于每个类型是S的对象o1都存在一个类型为T的对象o2,能使操作T类型的程序P在用o2替换o1时行为保持不变,我们就可以将S称为T的子类型。 在面向对象这场编程革命兴起的早起,我们的普遍认知正 阅读全文
posted @ 2020-07-11 10:17 挑战者V 阅读(184) 评论(0) 推荐(0) 编辑