每次调用esri-loader的包都需要去引入,就很麻烦
偶然发现的新颖写法
import { loadModules } from "esri-loader";
// 配置arcgis中各个包与相对应的路径
const __arcgisUrl = {
MapView: "esri/views/MapView",
Map: "esri/Map",
};
// 不暴漏在外的存储对象
const __arcgis = {};
// 定义暴露的arcgis变量
const arcgisPackage = new Proxy(
{},
{
// 拦截取值
async get(target, key) {
// console.log(key, receiver);
// console.log(config);
let val = {};
if (typeof __arcgis[key] === "undefined") {
[val] = await loadModules([__arcgisUrl[key]], {
url: "http://***.***.***.***:8686/415/init.js",
dojoConfig: {
baseUrl: "http://***.***.***.***:8686/415/dojo",
},
});
__arcgis[key] = val;
} else {
val = __arcgis[key];
}
return val;
},
set() {
console.warn("arcgisPackage对象属性不能赋值");
},
}
);
export default arcgisPackage;
原作者👇👇👇
https://segmentfault.com/u/yo...
vue组件调用
import arcgisPackage from "@/config/arcgisTools";
methods:{
test(){
let MapView = await arcgisPackage.MapView;
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。