博主是做iOS的,所以定义全局方法的是很了解了,有很多种方法吧可以来做,比如,扩展,单例,pch等,但是关于weex怎么来做一个全局的方法来方便引入呢?下面就来进行说明:
1.建立你的weex项目,这个不用多说了吧,实在不会的,去weex官网看吧;
2.新建一个js文件:
我们叫function.js吧,然后在里面写入你的方法:
export function getUrl(bundleUrl,fileName,dir,host){ var nativeBase; var isAndroidAssets = bundleUrl.indexOf('file://assets/') >= 0; var isiOSAssets = bundleUrl.indexOf('file:///') >= 0 && bundleUrl.indexOf('WeexDemo.app') > 0; if (isAndroidAssets) { nativeBase = 'file://assets/'; } else if (isiOSAssets) { nativeBase = bundleUrl.substring(0, bundleUrl.lastIndexOf('/') + 1); } else { host = host||'localhost:8081'; var matches = /\/\/([^\/]+?)\//.exec(bundleUrl); if (matches && matches.length >= 2) { host = matches[1]; } nativeBase = 'http://' + host + '/' + dir + '/'; } var h5Base = './index.html?page=./' + dir + '/'; // in Native var base = nativeBase; if (typeof window === 'object') { base = h5Base; } return base+fileName; }
如果你需要多个方法怎么办?没关系,继续往里面添加,按照上面的格式:
export function 方法名1(参数){ } export function 方法名2(参数){ } export function 方法名3(参数){ }
是不是很简单呢?
3.使用,方法写好了,怎么来用呢:
在你用的地方,js里面,像引入文件一样直接引入方法名:
<script> import {getUrl} from "./function"; //这里的路径不同的位置可能存在差异,你懂的哦 </script>
然后在使用的时候,比如我要做一个本地的跳转:
bigAction(index){ console.log('will jump') navigator.push({ url: getUrl(weex.config.bundleUrl,'homeBig.js'), animated: "true" }, event => { modal.toast({ message: 'callback: ' + event }) }) },
直接用名字即可,缺点是每次用的时候都要引入,要想类似iOS中pch的效果博主还没有找到,如果知道了会再更新,欢迎知道的小伙伴留言。