articles icon indicating copy to clipboard operation
articles copied to clipboard

蟹老板的小经验

Results 37 articles issues
Sort by recently updated
recently updated
newest added

## 流程不规范 不知从什么时候,流程规范变成了一个贬义词,流程规范=死板和低效。 ## 频繁的“沟通” ## 无意义的会议 ## 缺少自动化

进行单元测试时,我们希望得到的数据是稳定可控的,例如应用涉及调用网络接口数据,可以通过mock的方法控制数据的返回。 下面为获取电影列表数据的业务代码 页面在onLoad时执行getComingFilm方法,getComingFilm方法获取网络数据。 ``` const filmServer = require('../../server/film.js'); Page({ data: { comingFilms: [], }, onLoad() { this.getComingFilm(); }, // 获取即将上映电影列表 getComingFilm() { return filmServer.getComingSoon(1, 5).then((data) => { data.films.forEach((film) => {...

小程序的测试和web应用测试区别不大,可以利用jest进行测试,但是由于jest只提供了nodejs和浏览器执行环境,因此小程序的api我们需要mock,下面讲解小程序测试的一些mock技巧。 ## mock小程序API 我们测试小程序时,经常会调用微信api,例如wx.showLoading方法,但是因为我们的执行环境未定义该方法,会出现调用错误。 我们可以通过jest提供的global设置全局变量,可以在测试文件中单独编写,或者在package.json的jest块设置setupFiles属性,让jest自动加载。 ``` "jest": { "setupFiles": ["./__tests__/wx.js"] }, ``` ./__tests__/wx.js文件内容如下,表示将小程序的api方法定义为mock方法。 ``` global.wx = { showLoading: jest.fn(), hideLoading: jest.fn(), showModal: jest.fn(), request: jest.fn(), getStorageSync: jest.fn(), showShareMenu: jest.fn(), };...

## jest简介 jest为facebook推出的开源单元测试框架,提供了完善的工具链,包含mock,断言,覆盖率报告。 如果你以前有接触过单元测试,应该也有听过karam、chai、mocha等等框架,以前我们通常组合多个框架来实现单元测试功能,因为繁杂的集成和配置,让上手单元测试变得困难。 现在我们可以利用jest快速配置单元测试环境,下面介绍jest如何配置和编写一个简单的单元测试。 ## step 1、安装依赖 **安装jest** ``` yarn add --dev jest ``` ## step2、配置babel(如果不需要支持es6语法,可以忽略) 添加babel依赖,并执行yarn install 安装依赖 ``` "devDependencies": { "babel-core": "^6.26.3", "babel-jest": "^23.4.2", "babel-preset-es2015": "^6.24.1" }...

## 前言 面对持续集成两套方案github + travis ci + sonar和自建gitlab ci + sonar两套解决方案,我们到底如何选择呢。他们两者各自有什么优势呢。 我们从成本、应用场景、上手难度三个维度做对比 ## 成本对比 **我们假设一个小型开发团队5名前端开发,5名后端开发** **方案一:使用github + travis ci + sonarcloud** github私有仓库:¥420 / 月 travis CI:¥774 / 月 sonarcloud 按250K行代码计算:¥450...

## gitlab安装 安装比较简单,跟着官网的教程,复制粘贴命令 参考地址:https://about.gitlab.com/installation/#ubuntu 安装完毕后浏览器输入服务器地址,gitlab默认使用80端口,如果正常打开,输入密码,默认账户为root。 ## gitlab-runner安装 因为gitlab CI需要依赖gitlab-runner执行任务,我们也还是按官方教程安装。 参考地址:https://docs.gitlab.com/runner/install/linux-repository.html ## docker安装 gitlab-runner需要依赖docker作为构建环境,当然这不是非必要,你可以选择其他依赖,不过个人建议还是用docker比较方便。 docker安装参考地址:https://docs.docker.com/install/linux/docker-ce/ubuntu/ ## 配置runner gitlab-runner需要和gitlab做绑定,因此需要执行register操作。 1、执行以下命令 ``` sudo gitlab-runner register ``` 2、输入gitlab实例地址 ``` Please enter the gitlab-ci coordinator...

## 前言 如果是个人项目或者是开源项目,可以利用travis ci部署持续集成,同时travis ci的配置比gitlab CI简单,也不需要自己维护服务器,是个不错的选择。 下面讲解如何进行集成。 ### step 1、travis ci绑定github项目 登陆travis ci网站,并使用github账户授权登陆,添加需要集成的项目,如下图。 ### step 2、配置构建任务 在项目根目录创建.travis.yml文件。 配置执行环境和执行命令,配置如下。 ``` language: node_js node_js: - '8' install: - npm i npminstall &&...

## 什么是持续集成 持续集成(英语:Continuous integration,缩写CI)是一种软件**工程流程**,是将所有软件工程师对于软件的工作副本持续集成到共用主线(mainline)的一种举措。——维基百科 请注意,持续集成只是一种工作流程,它的宗旨是避免集成问题,无论你是手动还是通过工具,只要你开发的软件每天不断的集成,就可以认为是持续集成。 ## 持续集成解决的问题 探究持续集成解决的问题前,我们先想一下,如果不使用持续集成,会有什么问题。 #### 1、集成风险 如果你开发的软件存在多个团队开发不同模块,在上线前夕进行集成往往都存在较大风险,有可能你调用其他模块的接口已经被修改,或者合并代码时存在较大量的冲突在解决冲突时无意引入的bug。 问题越早修改成本越低,因此我们可以使用持续集成每次进行小批量的集成,让问题更早的暴露出来,降低集成与上线的风险。 #### 2、处理异常问题成本 我们通常把系统遗留问题和不规范的代码比作债务,债务会随着时间不断累积,最终导致无法偿还。 因此,问题在产生的初期去解决是最好的时机,通过持续集成保证系统随时可运行,遇到问题随时解决。 #### 3、软件质量 自动化持续集成一般会包含自动化测试,自动测试可以帮助我们提高代码质量,开发者也可以大胆的重构或者添加新功能而不需要担心破坏原有系统。 #### 4、自动构建/部署 我们需要部署web项目到生产环境,一般需要本地进行构建,拷贝到服务器,重启服务器。 这一系列手动的操作,难免会存在一定风险,例如一些复杂的项目,需要修改配置文件,万一构建时忘记修改,会引起线上异常。 如果要避免这些风险,可以利用自动构建,让机器帮我们做这些繁琐的事情。 ## 自动化持续集成方案 目前自动化持续集成方案已经比较成熟了,下面介绍三款较常用到的解决方案。 #### 1、jenkins jenkins是一个较早出现的基于java编写的开源解决方案。...

RAIL 是一种以用户为中心的性能模型。每个网络应用均具有与其生命周期有关的四个不同方面,且这些方面以不同的方式影响着性能: ![image.png](http://upload-images.jianshu.io/upload_images/6276836-bf89cfa7c0657f17.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ### TL;DR * 以用户为中心;最终目标不是让您的网站在任何特定设备上都能运行很快,而是使用户满意。 * 立即响应用户;在 100 毫秒以内确认用户输入。 * 设置动画或滚动时,在 10 毫秒以内生成帧。 * 最大程度增加主线程的空闲时间。 * 持续吸引用户;在 1000 毫秒以内呈现交互内容。 ## 以用户为中心 让用户成为您的性能工作的中心。用户花在网站上的大多数时间不是等待加载,而是在使用时等待响应。了解用户如何评价性能延迟: ![屏幕快照 2018-01-17 15.01.35.png](http://upload-images.jianshu.io/upload_images/6276836-c8289ca33d4b13ed.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ## 响应:在 100...