0 Comments

Web前端研发工程师编程能力飞升之路(6)

发布于:2013-04-07  |   作者:广州网站建设  |   已聚集:人围观

六.【大侠】

这里所说的大侠,不是大家互相吹捧的“大侠”,而是实至名归的高手。这个级别的人完全有能力写出不差于Bindows/jQuery/Ext/YUI/Dojo的同等级别规模的前端开发框架。应用成熟的开发框架指导、解决问题。


  1. // 库文件 /mz/string/escapeReg.js  
  2. /**  
  3.  * 在拼接正则表达式字符串时,消除原字符串中特殊字符对正则表达式的干扰  
  4.  * @author:meizz  
  5.  * @version: 2010/12/16  
  6.  * @param               {String}        str     被正则表达式字符串保护编码的字符串  
  7.  * @return              {String}                被保护处理过后的字符串  
  8. */  
  9. mz.string.escapeReg = function (str) {  
  10.         return str.replace(new RegExp("([.*+?^=!:\x24{}()|[\\]\/\\\\])", "g"), "\\\x241");  
  11. }  
  12.  
  13. // 库文件 /mz/url/delQuery.js  
  14. /// include mz.string.escapeReg;  
  15. /**  
  16.  * 删除URL字符串中指定的 Query  
  17.  * @author:meizz  
  18.  * @version:2010/12/16  
  19.  * @param               {String}        url     URL字符串  
  20.  * @param               {String}        key     被删除的Query名  
  21.  * @return              {String}                被删除指定 query 后的URL字符串  
  22. */  
  23. mz.url.delQuery = function (url, key) {  
  24.         key = mz.string.escapeReg(key);  
  25.         var reg = new RegExp("((\\?)("+ key +"=[^&]*&)+(?!"+ key +  
  26.   "=))|(((\\?|&)"+ key +"=[^&]*)+$)|(&"+ key +"=[^&]*)", "g");  
  27.         return url.replace(reg, "\x241")  
  28. }  
  29.  
  30. // 应用实例  
  31. /// include mz.url.delQuery;  
  32. var str = "http://www.xxx.com/?pn=0";   // 删除指定字符 pn=0 
  33. mz.url.delQuery(str, "pn"); 

自成体系,有基础,也有理论高度。知道为什么这样设计,也知道什么样的设计最好。比如这个例子可以有这样的封装:


  1. // 库文件 /mz/url/delQuery.js  
  2. /// include mz.string.escapeReg;  
  3. /**  
  4.  * 删除URL字符串中指定的 Query  
  5.  * @author:meizz  
  6.  * @version:2010/12/16  
  7.  * @param               {String}        url     URL字符串  
  8.  * @param               {String}        key     被删除的Query名  
  9.  * @return              {String}                被删除指定 query 后的URL字符串  
  10. */  
  11. String.prototype.delQuery = function ( key) {  
  12.         key = mz.string.escapeReg(key);  
  13.         var reg = new RegExp("((\\?)("+ key +"=[^&]*&)+(?!"+ key +  
  14.   "=))|(((\\?|&)"+ key +"=[^&]*)+$)|(&"+ key +"=[^&]*)", "g");  
  15.         return this.replace(reg, "\x241")  
  16. }  
  17.  
  18. // 应用实例  
  19. /// include mz.url.delQuery;  
  20. var str = "http://www.xxx.com/?pn=0";   // 删除指定字符 pn=0 
  21. str.delQuery("pn"); 

而为什么不采用下面的那种封装呢?经过了《知微》和《化蝶》你就懂了。

【进阶出路】

道法自然,从根上去寻找突破的契机。你可以研读HTML解析引擎设计与实现,JS解析引擎设计与实现,其它语言的代码解析与编译实现等等。

或者出些书。低级别的人写的书要么是一大抄,空无一物;要么是害人。


广州网站建设,网站建设,广州网页设计,广州网站设计

飞机