Name Last Update
..
code-norm Loading commit data...
fake-data/h5 Loading commit data...
README.md Loading commit data...

blk-wap项目中的一些注意点

1.框架结构

首先,我们先说一下blk-wap项目的架构,这样便于后面的人能够快速上手

  1. 服务端:node的express框架

  2. ui端:vue + gulp + webpack

2.目录结构

apps: node服务端业务代码

config: 配置信息

doraemon:express中全局的一些中间件,以及views目录下的一些模版文件

public: 前段ui代码(css,js,vue等)以及打包工具(gulp,webpack)

utils:辅助工具方法

app.js: node服务入口文件

dispatch.js :路由分发文件

3.vue

关于vue部分,如果不熟悉的话,大家可以查看一下官方文档 http://cn.vuejs.org/guide/

这里面主要是组件方面知识,用的比较多。

4.与app端的交互

混合模式下,比较麻烦的地方是与app原生端的交互。因为有些业务处理需要app端配合处理。

  • 涉及到与app端跳转相关的逻辑可参看:public/js/common/intercept-click.js文件 具体规则可参看:http://git.yoho.cn/mobile/AppJSBridge/tree/master

  • 监听app端事件参看:public/js/common/vue-bus.js文件,是通过一个全局的vue实例的on及emit来处理的。

5.页面刷新

目前页面跳转时。有些场合下需要刷新页面,由于刷新的逻辑在每个页面都不同,所以app端很难来处理。没办法,只能由h5这边来做了。

那h5这边是怎么拿到前一个页面的状态,来判定本页面是否需要刷新呢? 我们目前的做法是通过localstroage来处理的,也就是yoho.js中的 store属性。

如果,你有更好的想法,欢迎提出来。

6.开发中碰到的一些坑

前端开发,最大的一个坑莫过于适配不同的手机浏览器。混合模式下,这个问题稍微有些好转,因为我们会指定webview的版本号。

不过对于ios及android的区别,适配的工作量仍然很大。

我先列出我碰到的一些适配问题,欢迎补充

  • 元素在ios和android的效果是完全不一样的(比如在ios中会显示年月日,在android中则是/)。而这个元素的可设置的属性也很有限。 于是只能用曲线救国的办法了, 在input元素下面方一个span,然后把input给背景透明,这样我们就可以通过改动span来显示我们想要的了(欢迎更好的解决方法)

  • 元素 在ios和android也是完全不一样,在ios中默认值如果未改变的话,是不会触发change事件的。所以目前的做法是在ios的选择项中多加一个默认值。 而android则不需要。目前的做法是会根据ua来判断是否是ios,来进行不同的处理

  • 目前blk-wap项目中的字体全部用的css,不要手动去写unicode码

目前想到的就是这么多,后面会持续更新。。。