离开时原来公司项目里剩下很多问题没有办理,现在自己还在做vue和动画的项目,现在或许之前的问题已经办理了,但我还是把思路写下来,也算对的起自己悄悄离职的事情了,看到你们得到精良团队奖的照片了,很棒,祝福你们。
自动支配
这边用的是gitLab做git做事器,可以配置commit的钩子函数,实现自动支配和线上发布,就相称做事器监听你的提交,在你commit之后,做事器自动实行了一下 npm run build,放到对应的测试做事器目录,配置文件在根目录下有 .gitlab-ci.yml文件,起浸染的是下边一段代码, script是linux脚本,拷贝文件到指定的静态资源CDN目录和web做事器目录,这块知识点是 gitlab-ci持续集成,可以关注一下,svn该当也有类似的配置,让运维帮忙给配一下吧。
npm-build-test: image: cdn路径 stage: build cache: untracked: true paths: - node_modules/ before_script: - export BI_ENV=\公众test\"大众 script: - \"大众npm install --registry=http://代理地址 --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/\"大众 - \"大众npm run build\公众 - \"大众rsync -auvz dist/index.html ip::做事器开拓分支目录/trunk/resources/views/index/\"大众 - \"大众rsync -auvz dist/ 静态资源cdn目录/trunk/bi/\"大众 only: - master 分支名称
版本管理
以前咱们常常涌现这种情形, v0.1的需求已经上线,v0.2的需求已经提测了,v0.3的需求在开拓中,现在要修复一下v1.0的线上bug,用svn的话可能便是把修复后的文件更新到三个分支上连续开拓,更新来更新去就 lock了。
如果用git做版本管理,就方便很多,按照分支规范,常用4个分支, Develop持续开拓分支, Release版本分支, Hotfix牢牢热修复分支, Master上线版本主分支, 可以看看 GitFlow事情流方面的资料,真的比svn的分支好用太多了。
脚手架升级与优化
我们目前在用webpack 4.0 和 vue-cli3.0,编译很快,建议升级,记得之前项目用vue-cli2.0编译和打包韶光很长。
Ajax全局设置
原来项目里用的是 jQuery.ajax方法,实在也可以实在也可以全局设置拦截,我们用的是 axios,在 main.js中引用,设置根路径、状态码、token、超时时间等全局设置,代码如下:
// 引入axiosimport axios from 'axios'// axios配置Vue.prototype.$http = axios// 配置默认axios参数axios.defaults.baseURL = '/'axios.defaults.timeout = 1000000axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'// 添加要求拦截器axios.interceptors.request.use(function (config) { let token = localStorage.getItem('token') if(token== null && router.currentRoute.path == '/login'){// 本地无token,不为登录 跳转至登录页面 router.push('/login') }else{ if(config.data==undefined){ config.data = { \"大众token\"大众:token } }else{ Object.assign(config.data,{\"大众token\"大众:token}) } } return config}, function (error) { iView.Message.error('要求失落败') return Promise.reject(error)})// 返回结果拦截axios.interceptors.response.use(function (response) { if(response.hasOwnProperty(\公众data\"大众) && typeof response.data == \"大众object\"大众){ if(response.data.code === 998){// 登录超时 跳转至登录页面 iView.Message.error(response.data.msg) router.push('/login') return Promise.reject(response) }else if (response.data.code === 1000) {// 成功 return Promise.resolve(response) } } else { return Promise.resolve(response) }}, function (error) { // 要求取消 不弹出 if(error.message != '0000'){ iView.Message.error('要求失落败') } // 要求缺点时做些事 return Promise.reject(error)})
异步操作与数据遍历
原来的项目是保险项目,大家没有前后端分离的业务系统履历,都是最根本的接口,一个一个接口都是从数据字典中取出,业务逻辑往前端移,导致前端有很多的串行、并行的异步操作,要求各种接口,然后遍历合并各种数据,串行并行我们用 promise写,异步操作的问题就办理了,数据的操作我们用 lodash.js,效率比手写快,这两块可以加深一下。
initializationTab(obj){ let This = this return new Promise((resolve, reject) => { This.$http .post('/api/show/ograde-header',obj) .then(function(response) { return resolve(response.data.datas) }) .catch(function(error) { //数据丢失的状态 This.isContent=false //是否展示加载后内容 This.isLoading=false //是否展示loading This.isContentError=true This.isReady = false //是否展示数据准备中状态 reject(error) }); })}
登录
原来项目登录是跳转到jsp登录页面,然后再跳回静态页面, sessionID就存到 cookie里了,建立会话,也可以 Form提交做登录, 正常走接口,也会在 cookie里存上 sessionID建立会话。
当然前后端分离最好用 JWT方案,把天生的 token放在 redis里,建立 事务, token过期后自动删除,如有提前退出,则给改 token打上标识,不通过该 token通过即可,续签也好办理,在如果 token在到期5分钟前访问,则天生新 token返回给前端,给即将过期的 token打上标识,到期后自动删除。
H5动画
我们H5动画做了很多考试测验,民生银行的蓝精灵主题、租房分期、招聘3D、消消乐等,在适配、韶光轴、精灵图、动画性能等方面有了一定积累,条记短命在我的MWeb编辑器里,如果后边有韶光再更新出来吧。
之前蓝精灵动画需求用的 TweenMax.js和 gka天生的css帧动画做了那么繁芜的一个效果,性能不是特殊好,毕竟操作的是DOM,如果动画需求还多,就多熟习熟习 PIXI.js+TweenMax.js两个工具吧,我刚用它们做了一个需求, PIXI.js有加载器、精灵图、滤镜、物理引擎、音视频等好多赞助工具,基本可以实现大部分我们在朋友圈看到的H5效果, PIXI.js支持 canvas和 webGL两种渲染。
通读API
最新的项目是自己搭建的vue架子,功能和场景也逐步繁芜起来,还是要多看api和文档,多理解事理,才能游刃有余的利用这些工具,高效的完成开拓任务,比如vue的组件递归、缓存、逼迫刷新、混入、过滤器,Axios的默认配置、CancelToken等等,最近的项目条记总结还没有写完,先把目录贴出来,期望进步吧。
如果你们还在从事前端,相忘于江湖吧。