HTML5 Plus移动App(5+App)

工具:

开发工具HBuilder下载下载地址

开发工具HBuilderX下载下载地址(替代HBuilder)

框架:

uni-app :是一个使用 Vue.js 开发跨平台应用的前端框架,开发者编写一套代码,可编译到iOS、Android、H5、小程序等多个平台 (文档地址     培训视频)

MUI:前端UI框架 与bootstrap相似

HTML5+扩展了JavaScript对象plus以实现pc端没有的功能

HTML5+包含HTML5Plus规范与Native.js

Native.js可以直接调ios和android的原生API :5+ App开发Native.js入门指南

在5+App里,同时包含了HTML5Plus规范和Native.js的实现,开发者可以在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”。(HBuilderX里选择5+App)

在App项目下编写的HTML、js等文件,是会被打包到原生的安装包(Android是apk包、iOS是ipa包)里的。

此时本地的js和服务器通过ajax交互,由服务器按接口方式给出数据(一般是json),然后客户端的js文件解析json,并根据本地的业务逻辑来渲染页面和执行功能。

所以请不要在App项目中放置运行在服务器端的php等文件。

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

如果开发者想把一个做好的mobile web站,方便快速的打包成app,那么要使用DCloud的wap2app框架。

在HBuilder中新建项目时,选wap2app项目,把mobile web站的url输入进去,参考框架的教程来配置。

wap2app不同于普通的web打包技术,wap2app可真正做达到原生应用的功能和性能体验。

具体教程另见:文档中心-wap2app

wap2app属于5+app,它底层也是强大的HTML5Plus规范和Native.js在支撑。

wap2app项目下的所有文件,也都是打包在本机运行的。

注意:如果你想开发一次,全端覆盖,那么需要使用DCloud的另一个产品uni-app

提升HTML5的性能体验系列之一 避免切页白屏

plus is not defined
只有HBuilder真机运行、打包后、或流应用环境下才能运行plus api。
在普通浏览器里运行时plus api时控制台必然会输出plus is not defined错误提示

不要在plus和mui未完成初始化时调用相关API

        function plusReady(){
// 在这里调用plus api
}
if(window.plus){
//初始化完成执行plusReady()函数直接调用plus
plusReady();
}else{
//初始化为完成 监听初始化,完成后执行plusReady()函数
document.addEventListener('plusready',plusReady,false);
} 经过MUI封装后如下:
mui.plusReady(function(){
// 在这里调用plus api
});

mui is not defined:MUI需要加载mui.js 且使用时也需要初始化完成才能使用

它在dom前久结束了所以无需
mui.ready(function () { })

 UNI-APP:

1.目录及文件

一个uni-app工程,默认包含如下目录及文件:

├─ components ··················· uni-app组件目录
└──comp-a.vue ··················· 可复用的a组件
├── pages ······················· 业务页面文件存放目录
├─ index ······················ 使用到的字体文件
└── index.vue ····················· index页面
├─ list ······················· 使用到的图片文件
└── list.vue ····················· list页面
├─ static ··· 存放应用引用静态资源(如图片、视频等)的地方,注意:静态资源只能存放于此
├─ main.js ······················· Vue初始化入口文件
├─ App.vue ··· 应用配置,用来配置App全局样式以及监听
├─ manifest.json ················ 配置应用名称、appid、logo、版本等打包信息
└─ pages.json················· 配置页面路由、导航条、选项卡等页面类信息

2.应用生命周期

函数名 说明
onLaunch 当uni-app 初始化完成时触发(全局只触发一次)
onShow 当 uni-app 启动,或从后台进入前台显示
onHide 当 uni-app 从前台进入后台

应用生命周期仅可在App.vue中监听,在其它页面监听无效。

3.页面生命周期

函数名 说明 平台支持
onLoad 监听页面加载,其参数为上个页面传递的数据,参数类型为Object(用于页面传参
onShow 监听页面显示
onReady 监听页面初次渲染完成
onHide 监听页面隐藏
onUnload 监听页面卸载
onPullDownRefresh 监听用户下拉动作 ,一般用于下拉刷新
onReachBottom 页面上拉触底事件的处理函数
onPageScroll 监听页面滚动 ,参数为 Object
onTabItemTap 当前是 tab 页时,点击 tab 时触发。
onShareAppMessage 用户点击右上角分享 微信小程序

注意

  • 先触发 uni-app onReady ,后触发 vue 的 mounted
  • 建议使用uni-apponLoad 代替 vue的 created

生命周期官方链接

plusReady

5+App 基于HTML、JS、CSS编写的运行于手机端的App(DCloud开发)的更多相关文章

  1. 用JS写一个计算器(兼容手机端)

    先看成果:1.PC端2. 首先确立html,有哪些东西我们要知道.布局大概的样子在心里有个数 <!DOCTYPE html> <html> <head> <m ...

  2. 手机端调用app导航

    因为是在微信端中操作,所以只能使用腾讯地图才能调起手机的腾讯地图app <!doctype html> <html> <head> <meta charset ...

  3. 纯JS.CSS编写的可拖拽并左右分栏的插件(复制代码就能用)

    <!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equ ...

  4. js的let语句在安卓手机端的QQ浏览器出错的问题

    关于JavaScript里面的let,let 语句可以声明一个块级作用域的本地变量,并且可选的将其初始化为一个值. <ul id="list"> </ul> ...

  5. 用JS判断用户使用的是手机端还是pc端访问

    最近项目中用到一个应用,当访问同一个网站地址的时候,例如:www.xxx.com的时候,如果当前客户端是pc则跳转到专注于pc的部分,如果当前客户机是手机,则跳转到专注于手机的部分,秉承一贯的习惯,b ...

  6. fiddler学习总结--手机端(APP/微信小程序)抓包

    步骤一.手机和电脑要在同一个局域网中 步骤二.完成fiddler的基本配置,与web端抓包一样: TOOLS-->options-->connections-->1.设置端口:2.勾 ...

  7. Fiddler 抓包工具怎么使用?怎么在Android手机端的APP抓包

    https://blog.csdn.net/loner_fang/article/details/83309266 参考这个人的微博上有fiddler主要功能使用的步骤. 序章 Fiddler是一个蛮 ...

  8. win10下网狐荣耀手机端android app编译

    基于荣耀版(2017.5.21)12 款游戏..7z这款游戏,网上有下载的 1.解压后进入 cd shoujiduan 2.将client/base复制到client/ciphercode/下,也就是 ...

  9. JS判断是电脑浏览器还是手机端浏览器,并根据不同的终端跳转到不同的网址

    <!DOCTYPE html> <html> <script> function browserRedirect() { var sUserAgent = navi ...

随机推荐

  1. 【转】5G标准——独立组网(SA)和非独立组网(NSA)

    独立组网模式(SA):指的是新建5G网络,包括新基站.回程链路以及核心网.SA引入了全新网元与接口的同时,还将大规模采用网络虚拟化.软件定义网络等新技术,并与5GNR结合,同时其协议开发.网络规划部署 ...

  2. final、static、package、import,和内部类、代码块总结

    final: final是最终修饰符,可以修饰类.成员方法.变量 final修饰的类无法被继承 final修饰的方法无法被重写 final修饰的变量无法被再次赋值,变为了常量 final修饰的引用数据 ...

  3. springboot+springsecurity+thymeleaf

    来源:听秦疆老师的课笔记 springsecurity是一个权限管理框架,用来授权,认证,加密等等......类似的工具还有shiro 1.整合 我用的是springboot2.2.0版本,导入以下依 ...

  4. Spring AspectJ 切入点语法详解(7)

    1.Spring AOP支持的AspectJ切入点指示符 切入点指示符用来指示切入点表达式目的,,在Spring AOP中目前只有执行方法这一个连接点,Spring AOP支持的AspectJ切入点指 ...

  5. Spring 切面优先级(5)

    之前我们提过的应用场景,一个原始对象可能会需要插入多个切面,如果我们按前几篇博客文章介绍的方法完成切面及其通知的注解声明,那么它的执行顺序是怎么样的呢? 本文将介绍AspectJ的切面如何划分优先级 ...

  6. 面试系列 30 如何自己设计一个类似dubbo的rpc框架

    其实一般问到你这问题,你起码不能认怂,因为既然咱们这个课程是短期的面试突击训练课程,那我不可能给你深入讲解什么kafka源码剖析,dubbo源码剖析,何况我就算讲了,你要真的消化理解和吸收,起码个把月 ...

  7. MyBatis与Hibernate

    Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句.mybatis可以通过XML或注解方式灵活配置要运行的sql语句,并将java对象和s ...

  8. 《你不知道的javascript》上卷笔记整理(一)

    函数声明和变量声明都会被提升,但函数声明会被提升到普通变量前,而 var foo = function bar(){}; 赋值操作不会被提升. 闭包: 基于词法作用域(作用域是根据名称查找变量的一套规 ...

  9. C#可扩展编程之MEF(四):见证奇迹的时刻

      前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往 ...

  10. 操作系统命令工具Util

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.i ...