- 【优化】小程序优化-代码篇
本文主要是从代码方面跟大家分享我自己在开发小程序的一些做法,希望能帮到一些同学。 前言 不知道大家有没有这种体会,刚到公司时,领导要你维护之前别人写的代码,你看着别人写的代码陷入了深深的思考:“这谁写的代码,这么残忍” [图片] 俗话说“不怕自己写代码,就怕改别人的代码”,一言不和就改到你吐血,所以为了别人好,也为了自己好,代码规范,从我做起。 项目目录结构 在开发之前,首先要明确你要做什么,不要一上来就是干,咱们先把项目结构搭好。一般来说,开发工具初始化的项目基本可以满足需求,如果你的项目比较复杂又有一定的结构的话就要考虑分好目录结构了,我的做法如下图: [图片] component文件夹是放自定义组件的 pages放页面 public放公共资源如样式表和公共图标 units放各种公共api文件和封装的一些js文件 config.js是配置文件 这么分已经足以满足我的需求,你可以根据自己的项目灵活拆分。 配置文件 我的项目中有个config.js,这个文件是用来配置项目中要用到的一些接口和其它私有字段,我们知道在开发时通常会有测试环境和正式环境,而测试环境跟正式环境的域名可能会不一样,如果不做好配置的话直接写死接口那等到上线的时候一个个改会非常麻烦,所以做好配置是必需的,文件大致如下: [图片] 首先是定义域名,然后在config对象里定义接口名称,getAPI(key)是获取接口方法,最后通过module暴露出去就可以了.引用的时候只要在页面引入 import domain from ‘…/…/config’;,然后wx.request的时候url的获取方式是domain.getAPI(’’) 代码健壮性、容错性 例子 代码的健壮性、容错性也是我们应该要考虑的一点,移动端的项目不像pc端的网络那么稳定,很多时候网络一不稳定就决定我们的项目是否能正常运行,而一个好的项目就一定要有良好的容错性,就是说在网络异常或其它因素导致我们的项目不能运行时程序要有一个友好的反馈,下面是一个网络请求的例子: [图片] 相信多数人请求的方式是这样,包括我以前刚接触小程序的时候也是这样写,这样写不是说不好,而是不太严谨,如果能够正常获取数据那还好,但是一旦请求出现错误那程序可以到此就没法运行下去了,有些比较好的会加上faill失败回调,但也只是请求失败时的判断,在请求成功到获取数据的这段流程内其实是还有一些需要我们判断的,一般我的做法是这样: [图片] 在请求成功后小程序会进行如下判断: 判断是否返回200,是则进行一下步操作,否则抛出错误 判断数据结构是否完整,是则进行一下步操作,否则抛出错误 然后就可以在页面根据情况进行相应的操作了。 定制错误提示码 可以看到上面的截图的错误打印后面会带一个gde0或gde1的英文代码,这个代码是干嘛用的呢,其实是用来报障的,当我们的小程序上线后可能会遇到一些用户发来的报障,一般是通过截图发给我们,之前没有做错误提示码的时候可能只是根据一句错误提示来定位错误,但是很多时候误提示语都是一样的,我们根本不知道是哪里错了,这样一来就不能很快的定位的错误,所以加上这样一个提示码,到时用户一发截图来,我们只要根据这个错误码就能很快的定位错误并解决了,错误提示码建议命名如下: 不宜过长,3个字母左右 唯一性 意义明确 像上面gde表示获取草稿失败,后面加上数字表示是哪一步出错。 模块化 我们组内的大神说过, 模块化的意义在义分治,不在于复用。 之前我以为模块化只是为了可以复用,其实不然,无论模块多么小也是可以模块化,哪怕只是一个简单的样式也一样,并是不为了复用,而是管理起来方便。 很多同学经常将一些公共的样式事js放在app.wxss和app.js里以便调用,这样做其实有一个坏处,就是维护性比较差,如果是比较小的项目还好,项目一大问题就来了。而且项目是会迭代的,不可能总是一个人开发,可能后面会交接给其他人开发,所以会造成的问题就是: app.wxss和app.js里的内容只会越来越多,因为别人不确定哪些是没用的也不敢删,只能往里加东西,造成文件臃肿,不利于维护。 app.wxss和app.js对于每个页面都有效,可读性方面比较差。 所以模块化的意义就出来了,将公共的部分进行模块化统一管理,也便于维护。 样式模块化 公共样式根据上面的目录结构我是放在public里的css里,每个文件命名好说明是哪个部分的模块化,比如下面这个就表示一个按钮的模块化 [图片] 前面说过模块化不在于大小,就算只是一个简单的样式也可以进行模块化,只要在用到的地方import一下就行了,就知道哪里有用到,哪里没有用到,清晰明了。 js模块化 js模块化这里分为两个部分的模块化,一部分是公共js的模块化,另一部分是页面js的模块化即业务与数据的拆分。 公共js模块化 比较常用的公共js有微信登录,弹窗,请求等,一般我是放在units文件夹里,这里经微信弹窗api为例: [图片] 如图是在小程序中经常会用到的弹窗提示,这里进行封装,定义变量,只要在页面中引入就能直接调用了,不用每次都写一大串。比如在请求的时候是这样用的 [图片] toast()就是封装的弹窗api,这样看起来是不是清爽多了! 业务与数据模块化 业务与数据模块化就是指业务和数据分开,互不影响,业务只负责业务,数据只负责数据,可以看到页面会比普通的页面多了一个api.js [图片] 这个文件主要就是用来获取数据的,而index.js主要用来处理数据,这样分工明确,相比以往获取数据和处理数据都在一个页面要好很多,而且我这里获取数据是返回一个promise对象的,也方便处理一些异步操作。 组件化 组件化相信大家都不陌生了,自从小程序支持自定义组件,可以说是大大地提高了开发效率,我们可以将一些公共的部分进行组件化,这部分就不详细介绍,大家可以去看文档。组件化对于我们的项目来说有很大的好处,而且组件化的可移植性强,从一个项目复用到另一个项目基本不需要做什么改动。 总结 这篇文章通过我自己的一些经验来给大家介绍如何优化自己的代码,主要有以下几点 分好项目目录结构 做好接口配置文件 代码健壮性、容错性的处理 定制错误提示码方便定位错误 样式模块化和js模块化 组件化 最后放上项目目录结构的代码片段,大家可以研究一下,有问题一起探讨:https://developers.weixin.qq.com/s/1uVHRDmT7j6l
2019-03-07 - Javaweb自学(一)学习路线规划
一、Java学习路线 第一阶段:Java基础,包括java语法,面向对象特征,常见API,集合框架; (基础) 第二阶段:java界面编程,包括AWT,事件机制,SWING,(不常用)这个部分也可以跳过,用的时候再看都能来及; 第三阶段:java API:输入输出,多线程,网络编程,反射注解等,java的精华部分(重点); 第四阶段:数据库SQL基础,包括增删改查操作以及多表查询; Oracle Mysql 第五阶段:JDBC编程:包括JDBC原理,JDBC连接库,JDBC API,虽然现在Hibernate比JDBC要方便许多,但是JDBC技术仍然在使用,JDBC思想尤为重要; 第六阶段:JDBC深入理解高级特性:包括数据库连接池,存储过程,触发器,CRM思想(高级)这个比较不好懂,有时间的可以学习; 第七阶段:HTML语言学习,包括HTML标签,表单标签以及CSS,这是Web应用开发的基础; 第八阶段:JavaScript脚本语言,包括javaScript语法和对象,Ajax基础 ;就这两个方面的内容; 第九阶段:Servlet开发,从此开始踏入javaWeb开发的重要一步,包括XML,Tomcat服务器的安装使用操作,HTTP协议简单理解,Servlet API等,java web开发的基础。 (重要) 第十阶段:JSP开发:JSP语法和标签,自定义标签,EL,JSTL库了解以及MVC三层架构的设计模式理念; 第十一阶段:AJAX开发:AJAX原理,请求响应处理,AJAX开发库,Jquery; 第十二阶段:三大框架-struts、spring、hibernate,javaWeb的精华部分(重要) 第十三阶段:其他框架学习-springMVC、mybatis,目前比较主流的框架 第十四阶段:当学习完这些知识后,你就可以深层次的学习一些企业框架,Maven、redis、log4j等等 第十五阶段:一般现在的公司企业用的系统服务器都是linux,所以有兴趣的可以学习一下,linux的各种命令 二、java学习要求 1:java 基础编程掌握程度:熟练。原因:不会 java 你能写 JSP? 开玩笑吧。还有你必须非常熟悉以下几个包: java.lang; java.util; java.io; java.sql; java.text; javax.sevrlet; javax.servlet.http; javax.mail; 等。 2:sql 掌握程度:熟练。原因:如果你不使用数据库的话你也许不需要掌握 sql 。同时你必须对以下几种数据库中的一种以上的 sql 比较熟悉。 Oracle,Mysql,DB2… 3:html 掌握程度:熟练。原因:不会 html 你可能写 JSP? 4:javascript/jscript: 掌握程度:熟悉。原因: client 端的数据校验、一些页面处理需要你使用脚本。 5:CSS 掌握程度:熟悉。原因:实现页面风格的统一通常会使用 css 去实现。 6:xml 掌握程度:了解原因: AppServer 的配置一般是使用 XML 来实现的。 7:ejb 掌握程度:了解原因:很多项目中商业逻辑是由 ejb 来实现的,所以呢…… 8: 以下几种 AppServer(engnier) 你需要了解一个以上。 a:)Tomcat b:)WebLogic c:)WebSphere d:)Jboss 三、成长之路 1:java 学习时间,天才也的三个月吧,慢慢学吧,如果要精通,不知道需要多少时间了。用来写jsp, 两个月应该够了。 2:sql 学习时间,只需要知道 insert ,delete ,update ,select,create/drop table 的话一天你应该知道了。如果设计到函数、视图、索引等等,大概一周吧,若是要学会存储过程那还得几天吧。 3:html学习时间,10天时间应该够用了。至少你能手写出一个页面来。 4:jacascript 学习时间,这个其实跟java基础一样,需要很强的语法能力,所以一个礼拜吧,能够写出基本的东西,但后续还需要继续学习。 5:css学习时间 ,一天的时间你应该知道如何使用css了,不要求你写,一般是美工来写 css ,然后你直接去使用就OK了 6:xml 学习时间,我不知道我还没有学会呢,这个学习时间可能会比较长,但是一般用的都是比较基础的东西,所以一天了解一下,以后慢慢学吧。 7:熟悉AppServer,Tomcat四天你可以掌握安装,配置并且把工程跑起来了。如果是 WebLogic也够了。 8:框架学习,至少也得一个月,你可以选择三大框架:Struts+Spring+Hibernate进行学习,其实我觉得也可以先学习现在比较主流的框架SpringMVC+Spring+Mybatis,看你觉得哪个比较顺眼,但是我觉得这两套框架最好都学会。 9:熟悉 Linux 基本命令 Struts2mvc模式tomcatstrutsservletServlet
2019-09-08