MUI:全局变量、常量、共享数据、跨webview传参的综述
2016-11-03 20:02
351 查看
很多编程语言都有全局变量,但js语言没有。
HTML5+虽然也可以扩展类似plus.globle,但权衡后我们发现,新增类似的方案,不会对便利性有很大的提升,但对App的性能有负面影响,所以我们还是没有提供全局变量,但在本文中详述其他共享数据的方法。
共享数据有几种方法。
localStorage
localStorage是HTML5标准,可跨webview使用。
是持久化存储的,App关闭后也存在,除非js手动删除。
如果考虑持久化,可以使用localStorage
共享js文件的全局常量
我们可以给每个HTML页面都引入一个相同的js文件,比如common.js,在里面定义一个变量,var g = 0;
这个每个页面的g都等于0。
但这种方式处理的变量是不能跨webview同步的,比如a.html引入common.js后,重新给g赋值为1,那么同样引入common.js的b.html里的g并不会同步更改为1。
所以说这种方式只适合于共享常量。
url传参
在web时代,页面间传参的主要方式是url后面加问号,挂参数。形如 b.html?g=0
然后在b页面里通过js解析title来获取值。
这种方式问题很多,App开发不推荐使用这种方式。
问题1是在某些Android手机上,应用的HTML资源必须从apk里解压出来放到sd卡里才能运行,否则就会报404找不到页面。
而解压资源又影响第一次启动的速度。(解压资源的设置在manifest里)
问题2是b页面在载入以后,a仍然要给b传递数据,此时就没法用了。
HTML5+的evalJS方法
plus.webview对象有evalJS方法,可以在一个webview里操作让另一个webview执行一段js,这个方法不仅可用于传递参数,还可用于随意的互相调用通信。
evalJS类似js标准的eval方法,把js代码变成字符串传递过去,变量也变成值跟随字符串一起传过去。
具体参考:
http://www.html5plus.org/doc/zh_cn/webview.html#plus.webview.WebviewObject.evalJS
mui的自定义事件
mui的自定义事件是对HTML5+的evalJS的一种简化封装。
当开发者使用mui框架时,可以更简单的跨页传递和获取参数。
具体参考:
http://ask.dcloud.net.cn/article/63
6.其他
方法其实还有很多,
比如session.storage,在单页时可用。
比如通过io共享数据,比如json文件或txt文件;
比如websql、indexedDB、plus.storage;
比如在服务器临时存。。。
from: http://ask.dcloud.net.cn/article/288
HTML5+虽然也可以扩展类似plus.globle,但权衡后我们发现,新增类似的方案,不会对便利性有很大的提升,但对App的性能有负面影响,所以我们还是没有提供全局变量,但在本文中详述其他共享数据的方法。
共享数据有几种方法。
localStorage
localStorage是HTML5标准,可跨webview使用。
是持久化存储的,App关闭后也存在,除非js手动删除。
如果考虑持久化,可以使用localStorage
共享js文件的全局常量
我们可以给每个HTML页面都引入一个相同的js文件,比如common.js,在里面定义一个变量,var g = 0;
这个每个页面的g都等于0。
但这种方式处理的变量是不能跨webview同步的,比如a.html引入common.js后,重新给g赋值为1,那么同样引入common.js的b.html里的g并不会同步更改为1。
所以说这种方式只适合于共享常量。
url传参
在web时代,页面间传参的主要方式是url后面加问号,挂参数。形如 b.html?g=0
然后在b页面里通过js解析title来获取值。
这种方式问题很多,App开发不推荐使用这种方式。
问题1是在某些Android手机上,应用的HTML资源必须从apk里解压出来放到sd卡里才能运行,否则就会报404找不到页面。
而解压资源又影响第一次启动的速度。(解压资源的设置在manifest里)
问题2是b页面在载入以后,a仍然要给b传递数据,此时就没法用了。
HTML5+的evalJS方法
plus.webview对象有evalJS方法,可以在一个webview里操作让另一个webview执行一段js,这个方法不仅可用于传递参数,还可用于随意的互相调用通信。
evalJS类似js标准的eval方法,把js代码变成字符串传递过去,变量也变成值跟随字符串一起传过去。
具体参考:
http://www.html5plus.org/doc/zh_cn/webview.html#plus.webview.WebviewObject.evalJS
mui的自定义事件
mui的自定义事件是对HTML5+的evalJS的一种简化封装。
当开发者使用mui框架时,可以更简单的跨页传递和获取参数。
具体参考:
http://ask.dcloud.net.cn/article/63
6.其他
方法其实还有很多,
比如session.storage,在单页时可用。
比如通过io共享数据,比如json文件或txt文件;
比如websql、indexedDB、plus.storage;
比如在服务器临时存。。。
from: http://ask.dcloud.net.cn/article/288
相关文章推荐
- MUI:全局变量、常量、共享数据、跨webview传参的综述
- 全局变量、常量、共享数据、跨webview传参的综述
- 关于android webview读取js全局变量或者函数返回值
- android 少用static全局变量共享数据
- 线程间无需特别的手段进行通信,因为线程间可以共享数据结构,也就是一个全局变量可以被两个线程同时使用,不过要注意的是线程间需要做好同步。
- Python 进程之间共享数据(全局变量)
- linux动态链接库全局变量共享问题&DLL共享数据段
- android中全局变量的表示 多个activity的数据共享
- android 少用static全局变量共享数据讨论
- Andorid WebView获取JS全局变量或者调用方法的返回值
- 关于android webview读取js全局变量或者函数返回值
- 在一个程序中需要用到全局变量(在多个class之间共享数据),请问如何定义具有这种功能的变量?或者是否有其他的方法解决多个class之间的数据共享(尽量简单实现)。 首先应该明确 Java中没有全局变
- Python 进程之间共享数据(全局变量)
- va web程序起动时从数据库读入数据保存至程序全局变量
- python unittest TestCase间共享数据(全局变量的使用)
- 数据内存存储(常量,局部变量,全局变量,程序代码)
- android 少用static全局变量共享数据讨论
- PHP 常量、PHP 变量全解析(超全局变量、变量的8种数据类型等)
- Java自学笔记之数据类型,常量与变量
- 使用共享变量实现主报表及子报表之间的数据共享