2017-10-08 49 views
0

我最近改变了我的库代码使用的WebPack,通天ES6,而这一切的家庭。创建虚拟/假冒的URL文件内容

所以我的生产到底是单个文件..比较之前我有很多,目前正在由需求动态载入的文件。

我的问题是,我使用的加载一些班级的动态另一个库,并以定制他们,我需要提供URL到我的自定义对象/类。 这是不是第一次一个问题,因为我有很多的文件,但现在我的代码是捆绑到一个文件中。

有没有办法JS/ES6/...给一些内容/串并创建一个假的网址,所以其他图书馆将“负荷”呢?

例如:

我的类

文件../myLib/CustomLayer2D.js

Class CustomLayer2D { 
... 
} 

文件../myLib/CustomLayer3D.js

Class CustomLayer3D { 
... 
} 

文件../myLib/CustomLayer.js 这是使用其他库的

Accessor.createSubClass([layer], { 

    viewModulePaths:{ 
     "2d": "need to provide here a url to 2d layer file", 
     "3d": "need to provide here a url to 3d layer file" 
    } 
}); 

文件../myLib/CustomLayer.js

Class CustomLayer2D { 
... 
} 

Class CustomLayer3D { 
... 
} 

Accessor.createSubClass([], { 

    viewModulePaths:{ 
     "2d": "need to provide here a path to 2d layer", 
     "3d": "need to provide here a path to 3d layer" 
    } 
}); 

我更喜欢找到一种方式,而不是从捆绑中排除我的自定义类(我的最后一招)。

+1

不知道是否回答你的问题,因为在所有我不知道什么的WebPack的,所以会留在评论,但是,是的,你可以创建一个URL指向从一个带有API的字符串到内存中的文本文件:'URL.createObjectURL(new Blob(['your text goes here'],{type:'text/plain'}));'。 – Kaiido

+0

这是我搜索的!我知道这种方法,但不知何故,它滑出我的脑海里..无论如何,我用它,它的工作..所以谢谢@凯爱。我会发布一个完整的答案与webpack –

回答

0

感谢@Kaiido评论和一些更多的研究我已经到了一个完整的解决方案。

在我们的webpack.config.js中,我们正在添加我们的文件以运行raw-loader - 因此,不是捆绑真实代码,而是将文件捆绑为原样文本文件。

在我们的代码,我们简单地导入我们的文件/秒,并把它在<<The Code>>

URL.createObjectURL(new Blob([<<The Code>>], {type: 'text/plain'}));

它看起来像这样

webpack.config.js rules财产

{ 
    test: /myLib\\CustomLayer2D.js|myLib\\CustomLayer3D.js/, 
    loader: 'raw-loader', 
} 

文件MYLIB/CustomLayer.js

import layer2DCode from './myLib/CustomLayer2D.js' 
import layer3DCode from './myLib/CustomLayer3D.js' 

Accessor.createSubClass([], { 

    viewModulePaths:{ 
     "2d": URL.createObjectURL(new Blob([layer2DCode], {type: 'text/plain'})), 
     "3d": URL.createObjectURL(new Blob([layer3DCode], {type: 'text/plain'})) 
    } 
}); 
0

Webpack可以将所有资源捆绑在一个js文件中,但仍然可以将单独的js文件与Webpack或Webpack-dev-server一起使用。

您可以使用webpack-dev-server's config或者只是把你../myLib/CustomLayer3D.js的的WebPack捆绑文件的旁边,动态加载2D或3D.js文件在你原来的方式,而不是需要/在CustomLayer.js导入。

除了你的另一个图书馆?也许它有一些其他方式来动态加载类。

+0

是的..我知道,(从捆绑排除),但我希望提供单个文件,现在我需要提供3 ..我正在使用的库是esri 4(gis引擎) ..他们还没有提供定制的方式,但我的图书馆已经。他们正在使用Dojo工具包。无论如何,我不认为我会找到解决方案,但从捆绑中排除它。 –