vue2 共用组件封装?
目前情况:
我想调用客户端接口,但客户端只提供了一个cordova.plugins.js;里面封装了很多全局的接口函数。
//页面html引用cordova.plugins.js
document.addEventListener && document.addEventListener("pluginready", function () {
UP.W.TOOL.getPosition(
function (data) {
if (data.latitude > 0 && data.longitude > 0) {
//新增时间戳
data.timestamp = (new Date()).getTime();
params.callback(data);
} else {
params.callback(data);
}
},
function (err) {
console.log(err);
// _this.errorCallback(params.callback, err, JSON.stringify(err));
}
);
});
问题是:
1、每次调用都要监听有点麻烦。
2、UP.W.TOOL[func]函数参数不定。
3、我目前通过vueJs开发。
下面是我的实现(不知道合理不):
/**
* Created by xiaogang on 2017/2/14.
*/
"use strict";
require('./cordova.plugins.js');
let _cordovaComplete = false;
/**
* cordova加载完成事件捕获
*/
if (document.addEventListener) {
document.addEventListener("pluginready", function () {
UP.W.Cordova.isInsideWalletApp && (_cordovaComplete = true);
alert('cordovaComplete => ' + _cordovaComplete);
});
}
/**
*
* @param fn 函数名称
* @param params 函数参数
* @private
*/
function _pluginReady(fn, params) {
if (_cordovaComplete) {
_plugins[fn](params);
} else {
document.addEventListener && document.addEventListener("pluginready", function () {
UP.W.Cordova.isInsideWalletApp && (_cordovaComplete = true);
_plugins[fn](params);
});
}
}
let _plugins = {
init(){
console.log('plugins init');
alert(_cordovaComplete);
},
/**
* 通过 省市名 获取对应的 code
* @param callback:function(data){}
*/
getPosition (params) {
UP.W.TOOL.getPosition(
function (data) {
if (data.latitude > 0 && data.longitude > 0) {
//新增时间戳
data.timestamp = (new Date()).getTime();
params.callback(data);
} else {
params.callback(data);
}
},
function (err) {
console.log(err);
// _this.errorCallback(params.callback, err, JSON.stringify(err));
}
);
}
}
export default function (fn, params) {
_pluginReady(fn, params);
}
然后具体的.vue文件 通过 import plugins from '../modules/plugins/plugins.js'; 导入
plugins('getPosition', {
callback: function (data) {
alert(JSON.stringify(data));
}
})
问题:
1、页面通过vue-router懒加载实现。导致每个页面chunk.js都会含有cordova.plugins.js和自行封装的plugins.js的代码。
求更好的思路和解决方案。谢谢!
(cordova.plugins.js应该可以单独打一个chunk文件)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
自己把 cordova.plugin.js 和 plugin.js 写成一个 npm 包,安装到 node_modules 目录下,用 webpack 打包时使用 CommonsChunkPlugin 把 node_modules 里的依赖打成一个包