<![CDATA[湖南长沙前端开发与培训-通途工作室 - 开发心得]]> http://www.contactu.cn/ zh-cn PBlog2 v2.4 <![CDATA[湖南长沙前端开发与培训-通途工作室 - 开发心得]]> http://www.contactu.cn/images/logos.gif http://www.contactu.cn/ 湖南长沙前端开发与培训-通途工作室 http://www.contactu.cn/article.asp?id=256 <![CDATA[湖南长沙前端开发与培训-通途工作室 - 开发心得]]> dudu@258754.cn(admin) Mon,19 Feb 2018 14:15:16 +0800 http://www.contactu.cn/default.asp?id=256 经历:

今年主要做的都是移动端项目,仅有的三个PC端项目中,也都包含了移动端部分。
有两个项目做得苦,一个是项目不由自主,自己的事做完了,但是同伴没有时间推动,我做为主导人又不能辜负客户,这种情绪很折磨人。还有一个IRH项目,是一团乱麻,前后端沟通成本太高,虽努力推动,但始终无法着力,最终不得不放弃。放弃之后,如释重负。
也碰到了几个解决起来很吃力的技术问题,当然最终还是解决了。越过大山之后再回望,刚经历的也不过就是个小山包。真正的难题,是那些未知的迷雾,不声不响的让自己绕圈。
 
技术:
2017年所有移动端项目都使用了vue2.0,到下半年组件化程度更深。年底的最后一个项目中,甚至在非SPA架构中,直接使用了.vue的单文件组件。组件化的积累已经很多,明年肯定会过渡到webpack方式进行开发。
 
另外扫平了协作体系中一系列问题。比如mock测试、与后端的合作。这不光体现有技术上,很大程度也体现在与真正的后端人员、后端团队的协作与沟通。今年的IRH项目中,我思考不足,接下这种需要升级,需要兼容老接口的项目,又没有对后端提出明确的限制条件,结果导致前后端磨合出现大问题。开始的几天,光是跨域、列表格式、出错形式,都花了几个整工作日磨合。接下来,要去猜解他的技术文档,要一层层的去剥离页面逻辑。事实证明,这种类似行业ERP的项目,逻辑复杂,时间紧迫,因此最好是在一起工作,而不宜采用外包形式。
当然,IRH项目,催生了我对于组件化的认识,尽可能的组件化。感谢老白,提供了ajax过程中的promise思路。在我后几个项目中,利用axios主导的ajax体系,利用单例定义、拦截器、promise,对ajax请求进行了较完整的封装,彻底解决了请求方向的问题。在原型阶段引入easy mock,可以在后端未就位的情况下,模拟较复杂的接口情况,让前端提前进入角色。
 
另外一个项目,远在甘肃的嘉优购电商项目,则与之有不同的走向。这个项目,从原型开始,就由我在主导需求与接口。后端程序员按照我的要求在写接口。当然,此项目总体逻辑比IRH要简单。通过这个项目,我把一些知识点,提升到了实战程度。比如APIcloud打包、高德地图的各种应用、postman的测试技巧。apicloud将嘉优购商家端打包成APP这个过程中,让我接触到一个新的知识领域。实战中理解了从JS到APP,到底发生了哪些事情。对apicloud stodio工具和打包过程、原生API、驱动硬件,有了一定理解。也让自己成长为一个“产品开发者”,而不仅是一个前端程序员。毕竟,只有能够完全打通“需求-原型-设计-前端-后端-打包”的全过程,才算走完一个完整的产品历程。这一天,对我来说,来得太迟。在大分工的前提下,个人英雄出现的机率更低了。在后端这一块,我仍然是外行,只是通过前后端分离的模式,我可以对后端提出要求,也算是“打通了后端”。
 
对于地图应用这一块。从年初的云端湖项目的行车路线,到嘉优购项目的高德地图定位、云图、地图控件,把要用到的知识点,都经历了一下。
 
API接口规范方面,在年终的金圣达项目中,仍由我来设计接口。这时我终于可以收拾起前两个项目的血汗经验,进行比较规范的接口定义,与后端的合作也比较友好。
 
对于很多人关心的VUE第三方UI框架这块儿。今年我还是以使用YDUI和element-ui为主,年后打算在电商项目中引入一个“有赞vant”组件库。VUE的生态已经足够丰富,该有的都有了。---在组件方面,我已经脱离了心理依赖。
 
学习方面,入手了两个VUE相关的慕课网课程,争取早日看完。
 
2018愿景:
VUE提升到webpack开发方式。
继续实战APP开发。可尝试小程序。
做1-2个自己的小产品。
]]>
http://www.contactu.cn/article.asp?id=254 <![CDATA[湖南长沙前端开发与培训-通途工作室 - 开发心得]]> dudu@258754.cn(admin) Thu,01 Feb 2018 08:49:42 +0800 http://www.contactu.cn/default.asp?id=254 1、对于要带权限访问的页面,首先调用全局接口/login获取返回的token和过期时间expire(单位:秒),token请自行保存客户端,过期时间expire默认30天过期,请提前比如10分钟进行过期,以免过期导致业务异常。
2、步骤1获取的token,每次请求调用鉴权页面时,都需要把token附带在头部Header中(由于token会存在特殊字符,不在url中传递)如:token:"步骤1获取的token串"
3、post格式前后端约定:前端请求头部参数格式需要设置Content-Type:application/json,后端post:$json_info = $HTTP_RAW_DATA
4、一般的查询request格式: /aaa?type=1&age=16  分页请求:/bbb?page=3
5、response总原则:1)body 直接就是数据,不要做多余的层次包装。2)错误/正确是两种不同的结构,出错时的返回数据式统一为
{
 "code":401,
 "msg":"相应的出错信息,方便前端提示"
}
 
code具体对应说明详见全局返回码说明。
 
6、正确时的“列表”返回结构:
{
   "total": 9,    //总条数
   "page":***,    //当前页码,第1页序号为1,不为0
   "pagesize":5,    //每页条数
   "items": [
      {  "pid": 82, "tit": "医学知识", "dDate": "2016-09-02 23:04:34"},
      {  "pid": 83, "tit": "医学知识", "dDate": "2016-09-02 23:04:34"},
        .............
    ]
}
7、“详情页”返回结构:
{
   "tit": "标题",
   "sub_tit":"副标题",
   "article":"正文正文正文正文正文正文",
        .............
    ]
}
8、时间格式:凡与时间(控件)相关的值,请使用以下三种之一,能保证控件直接兼容。
date--(yyyy-MM-dd)
time-(HH:mm)
datetime-(yyyy-MM-dd HH:mm)
 
------------------------------------
9、附返回码取值,仅供参考:
 
200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
201 CreateD - [POST/PUT/PATCH]:用户新建或修改数据成功。
202 Accepted - []:表示一个请求已经进入后台排队(异步任务)
204 NO CONTENT - [Delete]:用户删除数据成功。
400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。
401 Unauthorized - []:表示用户没有权限(令牌、用户名、密码错误)。
403 Forbidden - [] 表示用户得到授权(与401错误相对),但是访问是被禁止的。
404 NOT FOUND - []:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。
500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。
]]>
http://www.contactu.cn/article.asp?id=253 <![CDATA[湖南长沙前端开发与培训-通途工作室 - 开发心得]]> dudu@258754.cn(admin) Fri,19 Jan 2018 16:42:01 +0800 http://www.contactu.cn/default.asp?id=253 问题标题:addEventListener捕获物理键,本地真机调试成功,云编译后无效

问题描述:apicloud中,本地wifi真机调试,按这两个物理键,都能成功弹窗,但是云编译后就不行了,似乎根本就没捕获到按键一样。
 
答案:
因为我在整个调用体系中,调用了两次apiready,后者(在index.html中)定义自然覆盖了前者(其它页面中)。因此就出现,在单页中测试没问题,跟index.html一起打包,就失效的问题。-------怪自己对于打包的架构不熟悉,使用了apicloud新建时推荐的index.html+Frame页结构,其实没有任何必要使用frame。
 
其实下面的答主告诉我要注意frame结构,我也轻率的回答了没有使用frame,可是没想到,我最顶层的结构就是一个Frame---这真是太讽刺了。我还以为那是apicloud钦定的顶层结构,根本就没敢去怀疑它!其实根本就不需要用Frame!
 
收获:
找问题的过程中,也逼着自己学会了调试技巧。比如真机测试、代码上传、云编译,昨天还系统的读了一下所有的API事件、属性、方法等。试着发了下短信,调用了一下电话薄、相册、相机。感觉对手机硬件和各种顶层资源的操作,都有了一个新的认识。另外对于发布中的版本号、云修复等概念,也都有了实战经验。----我可以写出更强功能的手机APP。
]]>
http://www.contactu.cn/article.asp?id=229 <![CDATA[湖南长沙前端开发与培训-通途工作室 - 开发心得]]> dudu@258754.cn(admin) Thu,26 Jan 2017 20:19:46 +0800 http://www.contactu.cn/default.asp?id=229  经历:

1、2016年,网站业务量减少,最大型的企业网站项目为云龙集团网站项目。
2、以顾问方式,为两家大型软件公司提供界面服务。
3、以顾问方式参与了WK及美一点移动端APP项目。更深刻的了解了创业型项目的甘苦。
4、使用d3.js技术框架,黄花机场触摸屏项目 。
 
技术:
2015年主要是把前端新概念进行了蜻蜓点水式的了解。2016年则是以VUE为突破口,完整的了解了MVVM体系的方方面面。过年前这个月,利用VUE1.0体系,重写了一个袖珍的SPA网站。然后购买了慕课网的【Vue.js高仿饿了么外卖App】的收费课程。两个项目互相印证。之前一直对VUE的组件、路由体系不太了解,此次无法回避,把这些知识点翻来覆去的看了个遍。也在segmentfault.com上提了不少问题,上面的网友很热情。
 
另外熟练了git命令行方式,熟练使用github.com。
通过优特项目,更加熟悉前后端配合/mock测试方式。
 
工具:
使用了更多基于nodejs的工具软件。对于Webpack这个大坑有了更多了解(不懂的也仍然很多)。
 
合作与分享:
继续以顾问方式参与项目。也带了几个前端学生。在知乎上回答了一定数量的问题,得到了一些关注。
 
生活:
搬家到河西,重新构建自己的工作圈。花了很多精力在孩子的学业上。
坚持跑步,完成了第二届长马(半马)完赛。与儿子一起踢足球、打乒乓。
 
2017愿景:
使用VUE构建具体的组件化项目。
学习小程序或是react native,打通APP开发通路。
]]>
http://www.contactu.cn/article.asp?id=212 <![CDATA[湖南长沙前端开发与培训-通途工作室 - 开发心得]]> dudu@258754.cn(admin) Wed,13 Jul 2016 08:47:06 +0800 http://www.contactu.cn/default.asp?id=212  几个朋友提到的移动端框架,都不约而同的推荐了微信开源的WEUI,我自己最近也在试用Jquery+WEUI的一套框架:http://lihongxun945.github.io/jquery-weui/。作者在原WEUI的基础上,扩张了不少组件,比如日期选择框啥的,强!

试用觉得还行,就是用的都是PX单位,我慢慢的改为REM单位。

]]>
http://www.contactu.cn/article.asp?id=191 <![CDATA[湖南长沙前端开发与培训-通途工作室 - 开发心得]]> dudu@258754.cn(admin) Thu,04 Feb 2016 11:19:54 +0800 http://www.contactu.cn/default.asp?id=191 昨天,我所在的电商项目组已经放了假,今天正式开始休息。 我放年假后第一要事,是写总结。 如果对一年的成绩还算满意,此事则令人喜悦--保有初心,不在于走了多远,而要时刻明白自己身在何方。

经历:

1、2015年仍然做了不少大企业网站(PC端),值得一提的是博深集团、株洲轨道交通

2、跟共成团队合作了“云峰湖”、“拾得大地”两个较复杂的单页应用站(PC/移动端/响应式)

3、长沙银行新版改造

4、在YC电商团队短期工作,电商前端初探。

5、以顾问方式,参与ERP/XYG两个软件项目的界面改造(bootstrap/jquery)。

6、年末时,加入WK电商团队,电商前端再战 。

 

技术:

7、学习MVC/MVVM前端模式,项目中使用过avalon及vue.js

8、具体使用:mui框架,json解析,underscore,localstorage读写,前端的HTTP与缓存体系,iconfont(@font-face)

9、了解:gulp,webpack,requirejs,node.js

10、bootstrap+jquery插件

 

工具:

11、熟练sublime txt3+emmet

12、nodejs快速搭建本地环境

13、熟练chrome调试器

 

合作与分享:

14、实践了以顾问方式参与外包项目,Beplay计算工作量/取酬

15、与很多新老朋友,巩固联系、开始合作:老董、老高、草帽团队兄弟们、军亮、慧琼等

16、持续更新博客,分享进展,帮助同行

 

运动:

17、坚持跑步,完成了2个在线半程马拉松,10月长马(半马)完赛并创个人最好成绩。

18、参加HBD篮球队每周定期比赛。

 

2016愿景:

19、明年争取进入知乎/github,更多分享

20、完善整个电商前端技术线,以高效开发方式,做出1款较成熟产品

21、想在长沙组织一个持续前端交流的小圈子

22、官网改版

23、搬家到河西,离产业圈更近,运动环境更好。

写完。

]]>
http://www.contactu.cn/article.asp?id=189 <![CDATA[湖南长沙前端开发与培训-通途工作室 - 开发心得]]> dudu@258754.cn(admin) Sun,24 Jan 2016 08:32:08 +0800 http://www.contactu.cn/default.asp?id=189  著作权归作者所有。

商业转载请联系作者获得授权,非商业转载请注明出处。
作者:匿名用户
链接:https://www.zhihu.com/question/39659771/answer/82457812
来源:知乎
 
我还要提醒大家别过分解读node,java语言为什么没有一个对应的名词呢?而Javascript有一个呢。所以别拿node跟人家装逼,本质就是Javascript语言,不过是插了翅膀。说白了,你用node那玩意,就好像一个穷逼(做的是事件驱动、异步编程、非阻塞IO小买卖赚的钱)进入了上层社会,那个装逼的过程。而当了好多年上层人士的java和C++,python等觉得你是个后进入圈子的暴发户。你们前端走的路,包括es6(国外有些大神对es6也有反对态度)、包管理器、加载器、打包工具、测试框架、QA 工具、MVC 框架和库、基于 Node 的 CMS 框架、模板引擎等。都是人家十几年前玩剩下的。而前端最值得装逼的本钱,那种java、C++等望而却步,就是你觉得很土逼的css、html,那个你觉得毫无高大上感觉的结构层和表现层,还有操作DOM、BOM的能力。后台开发永远会觉得你很牛逼,看看他们那无比崇拜你的小眼神,尤其看到你分析页面渲染过程,使用PS过程,切出页面效果,还有兼容问题处理。而当你跟人家谈论管理包、打包工具、测试工具、MVC,人家只能呵呵。看看前端MVC多么的挫,本来仅仅是整个网站架构的view层,自己居然分化出了所谓的MVC。你以为只有node下用gulp和grunt能开发出牛逼的自动化工具?人家java等是二货?只不过前端熟悉Javascript,自己的工具用自己的环境造罢了。我这么说不是要灭自己威风,助他人气势。我只不过要提醒大家我们的核心价值所在。
]]>
http://www.contactu.cn/article.asp?id=186 <![CDATA[湖南长沙前端开发与培训-通途工作室 - 开发心得]]> dudu@258754.cn(admin) Sat,09 Jan 2016 12:44:33 +0800 http://www.contactu.cn/default.asp?id=186  先摘一段“射雕”原文做开篇:

XML/HTML代码
  1. 梅超风...忽地心念一动,朗声道:“马道长,‘铅汞谨收藏’,何解?”马钰顺口答道:“铅体沉坠,以比肾水:汞性流动,而拟心火。‘铅汞谨收藏’就是说当固肾水,息心火,修息静功方得有成。”梅超风又道:“‘姹女婴儿’何解?”马钰猛地省悟她是在求教内功秘诀,大声喝道:“邪魔外道,妄想得我真传。快走快走!”  

有时候自我学习就象是外道练内功,不得其法而入,如果有个“高手”点拨一二,则融会贯通,大道可期。我每次见老高,就会找他问一些“大道”类问题。做为一个资深的后端程序员和总架构师,老高可能对于一些具体的语法或是工具,没有实际用过,但他对于整个前后端关联和概念性问题,却能提纲挈领。

这次跟他讨教,帮我具体解释了以下疑问:


1、为什么,目前的购物车的体系,多采用分页面方式,比如“商品大类--商品列表--商品详细页---购物车管理页”,采购信息在浏览器端存储,用cookie或是localStorage跨页面传递/或是直接存后端数据库,为什么比较少运用单页面应用(SPA)?

--老高的解释是:移动端内存小,单页面方式可以有效的释放内存,SPA很难做到精准调度内存及其它资源(高手除外)。PC端因为内存大,反而无所牵挂。

2、当项目的逻辑关系比较复杂时,如果用科学的方法分析UML数据模型、画示意图、变量定名,这些工作一般由谁来做?

--老高解释是:UML有必要做,一般由总架构师来做,但是比较简单的项目,往往可以忽略,由前端人员也可以实施。

3、关于MVVM架构(angularjs/avalon/vue)的一些疑问,其实学习理论时,也大体了解“前后端解耦”的原理,但是跟后端人员真正沟通一下,才明白这样做的意义所在。老高的解释是,MVVM确实是可以让前后端人员分工,通过制订统一的类似json这样的数据接口,来进行前后端连接。

4、他提供信息:很多常用功能,比如“翻页功能”,成熟的MVVM体系,应该都有组件可用,不用自己从底层写起。

5、跟我讲解了一下“Http头”存储信息的原理,我回来以后,具体查询了一下头协议的概念。

6、探讨了一下“懒加载”及css3的calc()用法。

 

 

这些问题,最近也跟中亮、黄S、曾YH等前后端高手有交流,谢谢他们的指点。

]]>
http://www.contactu.cn/article.asp?id=182 <![CDATA[湖南长沙前端开发与培训-通途工作室 - 开发心得]]> dudu@258754.cn(admin) Mon,14 Dec 2015 09:50:57 +0800 http://www.contactu.cn/default.asp?id=182
  • 详细学习了avalon,兼顾读了下vue.js,此两类均为MVVM方式框架。目前avalon已经基本熟悉了双向绑定、路由体系。avalon跟jquery没有任何冲突,可以同时使用。
  • 把css的display:flex布局方式熟练使用,以后此类多列布局,都不再使用旧方式。-----为了更好的兼容微信浏览器(X5内核),将Flexbox内容加进emmet,以方便自己快速使用,如下:
  • "df":"display: -webkit-flex;\ndisplay: -moz-flex;\ndisplay: -ms-flex; \ndisplay: -o-flex;\ndisplay: flex;\n\ndisplay: -webkit-box;\ndisplay: -moz-box;\ndisplay: -ms-box;\ndisplay: -o-bsox;\ndisplay: box; ",

     

    "fbx":"-webkit-flex:1;\n-moz-flex:1;\n-ms-flex:1;\n-o-flex:1;\nflex:1; \n\n-webkit-box-flex:1;\n-moz-box-flex:1;\n-ms-box-flex:1;\n-o-box-flex:1;\nbox-flex:1;\n",


  • 学习gulp------把实际工作中有用的gulp插件整理一下。说白了,gulp就是一个自动批处理工具,命令行模式。
  • 熟练了使用cmd的命令行方式,这样可以方便使用node.js和gulp之类的工具。昨晚开始阅读node.js入门读物,争取以后可以把font-spider(字蛛)等必用的工具,加入到我的命令行中。
  • 通过requirejs入门学习,理解了JS有条件的模块化概念,比如在有需要时,才引入某JS/JQ插件。写requirejs 范例,按需载入要用的库,如:
  •  

    require(['tweenMax'], function(j,t) {$('h1').text("tween载入!");});

    也可以只载入,不回调:require(['tweenMax']);

     

  • requirejs还有文字图片插件
  • requirejs调试过程中,外部载入的js,都能在chrome的Network中看到时间线
  • ]]>
    http://www.contactu.cn/article.asp?id=177 <![CDATA[湖南长沙前端开发与培训-通途工作室 - 开发心得]]> dudu@258754.cn(admin) Mon,01 Jun 2015 17:44:29 +0800 http://www.contactu.cn/default.asp?id=177 原来要在手机上测试刚做好的页面,都是丢到服务器上去,然后用网址访问。改一次就要传一次,效率低下。

     今天跟牛人学了一小手,直接把本地电脑定义为服务器,使用node.js。总之结果就是,操作很傻瓜(几分钟搞定),要访问的网页想定在哪个目录都可以。具体操作方法见下文:http://www.cnblogs.com/wangfupeng1988/p/4143996.html

    Node.js下载地址:https://nodejs.org/#download

    -------------------------------------------

    然后手机接入局域网wifi,用浏览器,用IP地址访问电脑IP地址即可,比如:http://172.16.6.218:8081/demo.html

    ]]>