5+App 基于HTML、JS、CSS编写的运行于手机端的App(DCloud开发)
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-apponReady,后触发vue的mounted - 建议使用
uni-app的onLoad代替vue的created
plusReady
5+App 基于HTML、JS、CSS编写的运行于手机端的App(DCloud开发)的更多相关文章
- 用JS写一个计算器(兼容手机端)
先看成果:1.PC端2. 首先确立html,有哪些东西我们要知道.布局大概的样子在心里有个数 <!DOCTYPE html> <html> <head> <m ...
- 手机端调用app导航
因为是在微信端中操作,所以只能使用腾讯地图才能调起手机的腾讯地图app <!doctype html> <html> <head> <meta charset ...
- 纯JS.CSS编写的可拖拽并左右分栏的插件(复制代码就能用)
<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equ ...
- js的let语句在安卓手机端的QQ浏览器出错的问题
关于JavaScript里面的let,let 语句可以声明一个块级作用域的本地变量,并且可选的将其初始化为一个值. <ul id="list"> </ul> ...
- 用JS判断用户使用的是手机端还是pc端访问
最近项目中用到一个应用,当访问同一个网站地址的时候,例如:www.xxx.com的时候,如果当前客户端是pc则跳转到专注于pc的部分,如果当前客户机是手机,则跳转到专注于手机的部分,秉承一贯的习惯,b ...
- fiddler学习总结--手机端(APP/微信小程序)抓包
步骤一.手机和电脑要在同一个局域网中 步骤二.完成fiddler的基本配置,与web端抓包一样: TOOLS-->options-->connections-->1.设置端口:2.勾 ...
- Fiddler 抓包工具怎么使用?怎么在Android手机端的APP抓包
https://blog.csdn.net/loner_fang/article/details/83309266 参考这个人的微博上有fiddler主要功能使用的步骤. 序章 Fiddler是一个蛮 ...
- win10下网狐荣耀手机端android app编译
基于荣耀版(2017.5.21)12 款游戏..7z这款游戏,网上有下载的 1.解压后进入 cd shoujiduan 2.将client/base复制到client/ciphercode/下,也就是 ...
- JS判断是电脑浏览器还是手机端浏览器,并根据不同的终端跳转到不同的网址
<!DOCTYPE html> <html> <script> function browserRedirect() { var sUserAgent = navi ...
随机推荐
- <每日一题>算法题:小球的下落距离
题目:小东和三个朋友一起在楼上抛小球,他们站在楼房的不同层,假设小东站的楼层距离地面N米,球从他手里自由落下,每次落地后反跳回上次下落高度的一半,并以此类推知道全部落到地面不跳,求4个小球一共经过了多 ...
- wangEditor 菜单栏随页面滚动位置改变(吸顶)问题解决
参考:https://www.kancloud.cn/wangfupeng/wangeditor2/113980 当页面向下滚动到隐藏了菜单栏时,编辑器默认会fixed菜单栏,即让菜单栏保持『吸顶』状 ...
- leetcode-142-环形链表②
题目描述: 方法一:O(n) O(n) # Definition for singly-linked list. # class ListNode(object): # def __init__(se ...
- Apache添加多端口及实现单ip多端口映射的方法
这篇文章主要介绍了Apache添加多端口及实现单ip多端口映射的方法的相关资料,需要的朋友可以参考下(http://www.0831jl.com) 先给大家说下apache添加多端口的方法,具体步骤如 ...
- thinkphp 模板赋值
如果要在模板中输出变量,必须在在控制器中把变量传递给模板,系统提供了assign方法对模板变量赋值,无论何种变量类型都统一使用assign赋值. 大理石平台检定规程 $this->assign( ...
- java.util.concurrent中的几种同步工具类
java.util.concurrent并发包中提供了一系列的的同步工具类,这些基础类不管是否能在项目中使用到,了解一下使用方法和原理对java程序员来说都是有必要的.博主在看<java并发编程 ...
- React报错:Laravel React-Router browserHistory 刷新子页面报错404
举例:myblog.com/ 刷新没问题 myblog.com/add 刷新404 browserHistory报404,hashHistory却正常 原因是少路由.web.php添加路由 Route ...
- 19-11-05-Night
我就是不行. ZJ: 好像是因为郁闷了才咕掉的…… 33 Miemeng 30 00:01:34 40 00:01:46 0 00:01:22 70 00:01:46 不记得当时怎么想的 T1只会暴力 ...
- Android HttpClient 用法以及乱码解决
一.Post提交 并可以实现多文件上传 // 创建DefaultHttpClient对象 HttpClient httpclient = new DefaultHttpClient(); // 创建一 ...
- 菜鸟nginx源码剖析数据结构篇(八) 缓冲区链表ngx_chain_t[转]
菜鸟nginx源码剖析数据结构篇(八) 缓冲区链表 ngx_chain_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.c ...