Simon Zhang

Results 14 issues of Simon Zhang

> 在手机端展示PDF是移动开发者的一大痛点 目前在PC端展示PDF有较多的解决方案,比如: # PC端 ## embed标签 ```html ``` ## pdf.js 这里不再赘述使用方法,网上一大堆 那么在手机端展示pdf就成了一个难题,尤其是在微信上(兼容性无力吐槽),经过一番研究,在GitHub上发现了pdf2htmlEX这个神器! # 移动端 ## pdf2htmlEX GitHub链接先来一发:[https://github.com/coolwanglu/pdf2htmlEX](https://github.com/coolwanglu/pdf2htmlEX) Demo再来一发,注意url,是xxx.html! [http://coolwanglu.github.io/pdf2htmlEX/demo/geneve.html](http://coolwanglu.github.io/pdf2htmlEX/demo/geneve.html) ok,相信你看了Demo基本已经被它的显示效果惊呆了,下面我们来看一下它的使用吧: ## 安装 官方文档:[https://github.com/coolwanglu/pdf2htmlEX/wiki/Building](https://github.com/coolwanglu/pdf2htmlEX/wiki/Building) Mac OS X可以使用brew来安装 ```bash brew install...

> AngularJS是当前非常的流行的前端框架,它的语法糖非常多,也极大的方便了前端开发者,但是有着用法还是需要去琢磨一下的 #ng-options 在select表单控件中,总结一下目前的几种写法。 ##普通写法 ```html test1 test1 test1 test1 ``` 优点:简单 缺点: - 代码很不简洁,如果选项较多就会很乱 - 不方便渲染,如果option在变需要使用js动态加载 - 不方便存储对象 ##使用ng-repeat ng-repeat是angularJS中非常强大的一个directive,在渲染列表上极大的方便了前端开发者,那么由于有多个重复的option,当然可以使用ng-repeat,用法如下: ```html {{option.name}} $scope.options = [{id:1,name:'test1'},{id:2,name:'test2'},{id:3,name:'test3'}]; ``` 优点: - 代码简介...

#javaScript设计模式——策略模式 > 策略模式(Strategy):将定义的一组算法封装起来,使其相互之间可以替换。封装的算法具有一定独立性,不会随客户端变化而变化。 ##商品促销问题 > 问题描述:超时年底促销,部分商品5折销售,部分9折,普通用户满100返30,高级VIP用户满100返50... 对于前端,一般的处理方式可能是写多个方法,针对不同的优惠策略选择不同的方法来处理。如: ``` javascript //100返30 function return30(price) { //dosomething } //100返50 function return50(price) { //dosomething } //9折 function percent90(price) { //dosomething } ... ``` 这里一个促销策略对应一个方法显得过于冗余,并且很不方便管理,代码阅读性较差。可能有的胖友会想到把这些都封装为一个方法,然后使用if或者switch语句来判断状态并返回策略,如:...

> 树状层级包含关系的JSON转换为一个数组列表,使用尾递归算法不仅代码简单,而且性能高效,不会爆栈 > 需求简介: 把树状的JSON数据连起来转换成一个个的数组,如:item1层有一个item2,它的下面有两个item2\_1,item2\_2,那么转换为数据就是 [{item1:"item1\_key",item2\_1:"item2\_1\_key"},{item1:"item1\_key",item2\_2:"item2\_2\_key"}],也就是循环遍历 ## 思路 _优雅的写代码_ 可以看到,我们是从JSON里面取数据,那么对于Object类型,一般都是使用item.key这样的方式去取数据,但是对于现在的这个需求,这样写显然是很不优雅的一种写法,而且通用性很低,字段名字一改就都得改了。 所以:我们把需要取的字段名按顺序放在一个数据里面,记录index,每次从数组中取字段名称,这样代码看起来既简洁,维护起来也很方便。 ## 对象闭包问题解决 这里插一句关于对象的闭包问题:for循环当中,我们取了当前的i值,肯定会发生闭包,那么简单的解决办法就是: > 先将对象转成字符串,再转成对象,这样来回一转就取到的是对象值了 > > var str = JSON.stringfy(obj) > > JSON.parse(str) 代码如下,大家可以放到网页中看一下控制台输出: ```javascript var json =...