web移动端开发总结

偶尔善良 提交于 2020-03-01 08:23:51

XXX微信企业号是接触的第一个移动端项目,下面对遭遇的问题和解决方法做以总结:

项目背景:借助微信企业号平台,使用第三方提供的数据接口,实现数据定制化展示。和普通的web开发类似,只是放到移动端,嵌入微信罢了。

项目规模:小

  1. 移动端开发注意要点:

    1,结构精简,交互方便。因为移动端的内容展示空间有限,内容的呈现方式,一些交互效果的设计方面,需要提前考虑。

    2,界面美观,兼容性能。移动端应用爆炸式增长,如何提升本应用的竞争力,业务固然重要,作为前端人员,界面和性能的优化也能为应用的用户粘度增色不少。

    3,面向对象,拥抱变化。开发通用原则。

    4,欢迎补充。。


2,框架依赖。

    初始时,业务不够清晰,原型太粗糙,为了将关注点更多放到业务实现上,选取了jqueryMobile框架,使用起来并不算难,官网的文档,demo还算齐全,对于实现原型是足够了,但是对于实际开发时,组件的固有特性和固有样式,导致其不够灵活,面对客户的定制化效果,越来越多的变化。随时可能面临页面大规模重构的风险。

对于小型项目,建议不引入该框架,只在需要时,使用其部分组件。

3,交互设计。

    设计交互时,要摒弃pc端的设计方式,按钮的大小,是否方便点击,状态变换是否明显,都需要注意

比如说,移动端一般不使用checkbox ,radio的原生样式,通常都是flipswitch的样式。

4,一些问题:

① 移动端的click事件有300ms延迟,可以使用tap事件

②ghost click(与重复绑定区分开),可能因为触摸屏的缘故,有时,对当前页面的点击,会响应到下一个页面,造成莫名其妙的跳转

    此类问题,在写事件绑定时,加上 prevetDefault,stopPropagation的调用。

③移动端对html5的支持并不是很好,使用html5特性时,要考虑兼容性。而且设备的性能很难匹配pc端,所以动画之类高cpu消耗的交互尽量少用。

④ 代码调试有点麻烦,chrome的模拟器很好用,实体机测试时alert成了神器。


在设计和开发中,要充分考虑到移动端的特性和一些局限性,才能制作出更加贴近用户的产品。

似我辈开发人员,更多使用的是后端渲染,也许使用前端渲染,使用一些前端框架,比如angular,backbone之类,也许会更加便捷,当然这对于开发人员的要求很高,前端还有很长的路要走。


都是些零碎,以后再慢慢补充。

更新:2015-11-26 

1,因为jquery mobile本身对于页面生命周期的管理自有一套事件,通常我们绑定元素事件时或者初始化一些第三方组件时,需要根据实际的使用情况,在不同的页面事件中绑定元素事件,比如,我们使用swiper插件(一个滑动插件),通常需要在pageshow事件里面进行初始化,因为它需要在知道容器的维度。而对于分页,我们通常需要在pageinit中初始化,如果放在pageshow中就会导致每次导航到当前页面都会初始化一次分页,造成不必要的资源消耗。

2,事件绑定了一次,但是会触发多次,这很可能是我们绑定事件的时机有问题,此时参考页面的声明周期去找问题把。通常解决此类问题,可以采取的方案:每次绑定事件前先解绑一次,示例:

  $("#dlist").off("tap", ".js-addOrder").on("tap", ".js-addOrder", function (e) {
            e.preventDefault();
            e.stopPropagation();
            var kSelected = $("#k_selected").val();
            var dSelected = $(this).parents("li").data("did");
            $("#d_selected").val(dSelected);
            $.mobile.navigate('@Url.Action("CustomizeComplete", "Customize", new { area = "Customize" })' + "?style=" + kSelected + "&dId=" + dSelected);
        });

3,动态加载的内容中部分控件没有被框架加强:在将动态内容append到dom中之前,先调用enhanceWithin();例如:

$(options.containerId).append(content).enhanceWithin().listview("refresh");


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!