# 开发前准备
工程准备,因为前端项目是之前搭建好的,所以没什么前期准备工作。但是遇到一个问题就是编译 Vue 项目会报错,清空 node-modules 目录,以及 package-lock.json 文件之后,重新进行 npm install 之后,再运行 npm run dev 启动项目就好了。
# 开发
基础的体验部分没什么好说的,基本上就是 Vue 相关内容。我觉得相比微信小程序的开发,Vue 的开发体验更好一些,主要体现在 XML、JS 和 CSS 是放在一个文件里的,而微信小程序是把这三个模块儿拆成三个文件的,所以在开发的时候会反复在三个文件里跳,挺影响开发体验。
# CSS
感觉前端发展到现在基本上还是靠 CSS 来进行样式设置和布局。
- align-items 的值里 flex-end 比 end 适配范围更广一些
- px rem 的转换详见我的这篇笔记 前端单位转换问题 | fanthus's blog (opens new window)
# Vue
- 开发配置,在路由列表中添加,新的路径和组件名称。 
- 区分 Vue 实例作用域和 Vue 实例的区别。在实例作用域里想要访问数据需要添加 this 指向,比如 data, methods 都是在实例作用域,在 methods 的方法里访问 data 里面的数据的话就需要使用 this.xxx,类似下面这种情况。 - let vm = new Vue({ data: { message: 'Hello' }, methods: { getMessage() { return this.message // `this` 指向 vm 实例 } } })- 但是在 Vue 的模板插值语法里,是不需要用 this 的,因为在模板中使用插值语法时,Vue 会自动将它对应到当前作用域下的属性,所以 data 中的数据以及计算属性都可以直接用,以及标签内的绑定值也可以直接用,比如下面这种 - ##html <p>{{ message }}</p> <p>{{ reversedMessage }}</p> <div v-if="shouldShow">ShouldShow</div> ##js data() { return { message: 'Hello!', shouldShow: false } }, computed: { reversedMessage() { return this.message.split("").reverse().join(""); } }
# 测试过程
两种主要的调试方式
- 在电脑上测试。开启 Chrome 浏览器,输入在测试的 Vue 组件的路径地址,比如 http://0.0.0.0:1024/demo.html#/test (opens new window) ,打开网页进行样式测试。但有的时候网页需要传入一些参数进行配置,比如有一些网页数据是需要登录后获取的,那需要在URL 后面拼接一些参数,比如 accessToken,那 url 就是 http://0.0.0.0:1024/order.html#/match-maker?accessToken=tokenx (opens new window),页面截取到 accessToken 后,再带着 accessToken 进行对应环境的服务端 API 请求。 - 项目中的环境配置使用 webpack 做的,通过配置不同的 webpack 的配置对象来定义不同的服务端代理环境,所以要改服务端的环境就直接运行不同的脚本命令,或者是改对应 webpack 配置对象中的服务端代理地址。 
- 在手机上测试。先保证电脑和手机处在同一个局域网下。VSCode 通过 - npm run dev运行起项目后,修改手机 App 端的 H5 地址为,电脑端的局域网地址,当然要记得加上端口。- 手机 App 里也有开发和生产环境的配置,要保证前端项目的服务端代理环境和手机 App 代理环境一致,因为不同环境的 accessToken 是不能互用的。 
对比两种调试方式
- 电脑和手机大部分情况下是一样的,电脑测试界面会更加方便,手机还需要运行 App。
- 当需要测试 JSBridge 的时候,只能用手机进行测试。
当调试完成之后,还需要测试,这时候可以给测试工程师用 Jenkins 打包,让测试同事直接在手机上切换环境,访问对应的 Jenkins 地址。