zoukankan      html  css  js  c++  java
  • Dcloud开发webApp踩过的坑

    Dcloud开发webApp踩过的坑

    一、总结

    一句话总结:HTML5+扩展了JavaScript对象plus,使得js可以调用各种浏览器无法实现或实现不佳的系统能力,设备能力如摄像头、陀螺仪、文件系统等,业务能力如上传下载、二维码、地图、支付、语音输入、消息推送等。其实我只要把js拿到手,就可以很方便用在手机开发的网站上面了。

    1、Dcloud可以做mobile web项目么?

    可以,而且感觉会比浏览器多调用点api

    但这就是一个普通的web项目,b/s方式,不可脱线运行,不能调用HTML5Plus的增加api。

    其实感觉能够把dcloud里面访问原生应用的js代码拿到手,那么web项目同样具有了这样的功能。

    二、Dcloud开发webApp踩过的坑

    使用dcloud开发webApp有一段时间了,其中也踩了不少坑,现在总结一些(mui.js版本号,V2.9.0)。

    1,app启动后选择进入那个页面。

    可以在manifest.json中设置页面入口,通常设置为index.html.但有时需要根据业务需要进入其他页面。应用场景:根据用户登录状态来选择进入不同的页面,如果用户已经登录,则进入index.html页面。如果用户没有登录,则进入登录页面。

    mui.plusReady(function(){

    var  CurrentWebview=plus.webview.currentWebview();

    if(!logined){

     CurrentWebview.loadURL("login.html");

    }

    });   最开始尝试这样写,但是效果并不好。后改成 if(!loggined){

          window.location.href="login.html"; 

          }.达到了预期效果。为了更加明显,可以在启动设置里面,设置延时1秒启动。

    2,在使用mui弹窗时,如果想自定义样式,需要使用div模式,即使用h5模式的对话框,可以对mui.css进行样式覆盖。

    mui.confirm(str_audit,title, btnArray, function(e) {},“div”);

    3,使用mui弹窗时,在弹窗上面滑动,弹窗下面的内容也跟着滚动。

    解决办法,


    function setStopContentScroll(){
    $("body,html").css({"overflow":"hidden"});
    }
    function setContentScroll(){
    $("body,html").css({
    "overflow-y":"scroll",
    "overflow-x":"hidden"
    });
    }

    当弹窗出现时,setStopContentScroll().弹窗关闭时,setContentScroll().

    4,弹窗出现时,禁用手机返回键。

     mui.back=function(){

        return false;

     }

    当弹窗关闭时,重新设置mui.back为

         mui.back=function(){

                 var currentWebviwe=plus.webview.currentWebview();

                 plus.webview.close(currentWebviwe);

            }

    5,使用miui.closePopup()可以关闭当前打开的弹窗。使用mui.closePopups()可以关闭多有对话框。

    6,mui页面默认侧滑返回。可以禁止此功能。

    var cv=plus.webview.currentWebview();

    cv.setStyle({'popGesture':'none'})

    三、dcloud从入门到入坑

    dcloud从入门到入坑

    一、简介

    dcloud是一个webapp云打包平台,你可以通过他扩展你的网页功能
    官方叫他们的产品名字为

    HTML5 Plus移动App,简称5+App,是一种基于HTML、JS、CSS编写的运行于手机端的App,这种App可以通过扩展的JS API任意调用手机的原生能力,实现与原生App同样强大的功能和性能

    嗯,是一种基于HTML、JS、CSS编写的运行于手机端的App,那么具体是怎么做的呢?
    继续看文档

    HTML5+扩展了JavaScript对象plus,使得js可以调用各种浏览器无法实现或实现不佳的系统能力,设备能力如摄像头、陀螺仪、文件系统等,业务能力如上传下载、二维码、地图、支付、语音输入、消息推送等。

    扩展了一个plus对象啊,就是说可以通过dcloud实现的plus对象来调用原生api
    但是dcloud并不是把所有的原生api都封装到时plus对象中。
    dcloud把api分为两部分

    1.HTML5Plus规范

    常用的扩展能力,比如二维码、语音输入,都封装到了规范中,同时实现了Android和iOS的解析引擎,使得开发者的代码编写一次,可跨平台运行。只要调用plus.对象(html5plus规范的对象,详细请看文档)
    html5plus是常见的原生api,并不是所有的原生api,原生的api太多了。但是dcloud也可以调用其他api,就是第二部分

    2.natave.js

    Native.js把几十万原生API映射成了js对象,通过js可以直接调ios和android的原生API。这部分就不再跨平台,写法分别是plus.ios和plus.android,比如调ios game center,或在android手机桌面创建快捷方式,这些都是平台专有的api。Native.js把几十万原生API映射成了js对象,通过js可以直接调ios和android的原生API。这部分就不再跨平台,写法分别是plus.ios和plus.android,比如调ios game center,或在android手机桌面创建快捷方式,这些都是平台专有的api。

    二、5+ App概念解析

    首先开发者需要清楚你要做什么,是一个mobile web项目,运行里浏览器里?还是要做一个app,安装和运行在手机上?或者要把一个mobile web项目打包成app?

    1. 做一个mobile web项目

    在这个模式下,开发者用不到HTML5Plus,使用标准的HTML5语法,运行在浏览器里。这不算5+ App。 此时开发者仍然可以使用HBuilder这个开发工具,新建项目时选择web项目。 开发者也仍然可以使用DCloud提供的mui开源框架,来简化ui的开发。 但这就是一个普通的web项目,b/s方式,不可脱线运行,不能调用HTML5Plus的增加api。

    2. 做一个正统的app

    传统意义上的app,是c/s方式的,它的程序要安装和运行在手机上,不通过浏览器在线下载。 此时开发者在HBuilder里新建项目时,选择“移动App”。 在移动App项目下编写的HTML、js等文件,是会被打包到原生的安装包(Android是apk包、iOS是ipa包)里的。 此时本地的js和服务器通过ajax交互,由服务器按接口方式给出数据(一般是json),然后客户端的js文件解析json,并根据本地的业务逻辑来渲染页面和执行功能。 所以请不要新建一个移动App项目,然后把本来运行在服务器端的php等文件也都丢到这个项目下。 web项目始终是web项目,哪怕要在app项目里某个界面里,在线加载一个远程的网页,也要把这个远程网页的代码,放到web项目下。 移动App项目下,只有能有html、js、css、json以及一些图片或数据文件,不能包括php、jsp、py等服务器页面。

    3. 使用wap2app打包mobile web项目为app

    如果开发者想把一个做好的mobile web站,方便快速的打包成app,那么要使用DCloud的wap2app框架。 在HBuilder中新建项目时,选wap2app项目,把mobile web站的url输入进去,参考框架的教程来配置。 wap2app不同于普通的web打包技术,wap2app可真正做达到原生应用的功能和性能体验。 具体教程另见:文档中心-wap2app,http://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/1244 wap2app属于5+app,它底层也是强大的HTML5Plus规范和Native.js在支撑。 wap2app项目下的所有文件,也都是打包在本机运行的。 4. 如果你想开发一次,全端覆盖,那么需要使用mui框架 具体参考:http://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/591

    官方入门
    我拿dcloud都是用来把vue打包后的文件,放到dcloud进行打包,做一些原生api处理,如返回按纽啥的。代码都写在index.html里

     
  • 相关阅读:
    JAVA web数据库登录界面
    JAVA web之相关名词大调查
    继承与多态课后
    第六周课后作业 02
    凯撒密文问题
    定义一个类,使用静态和构造随时知道定义了几个变量(第五周课后01)
    NAIPC2018
    [学习笔记]网络流
    Rikka with Prefix Sum
    Traffic Network in Numazu
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9322753.html
Copyright © 2011-2022 走看看