javascript – ES6模块导入和依赖管理

前端之家收集整理的这篇文章主要介绍了javascript – ES6模块导入和依赖管理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
通过使用转换器,已经可以使用ES6模块.最简单的方法之一是使用Browserify和Babelify.
我遇到的问题是如何处理依赖管理.

在过去,你只有一些Bower依赖项.构建将非CDN捆绑到vendor.js并将项目特定文件捆绑到foobar.js(或其他).
那么你就可以通过简单的bower install foobar –save在不同的项目中使用生成代码.
如果foobar和你的新项目都具有共同的依赖关系,那么很容易通过Bowers flat依赖来解决它.

现在进入ES6模块:
假设我有一个使用lodash的项目foo.目录结构如下:

SRC / JS / foo.js
SRC /供应商/ lodash / DIST / lodash.min.js

并且foo.js首先声明:

从’../../vendor/lodash/dist/lodash.min.js’导入* as _;

或者(因为Babify从Babelify转换为CommonJS)

从’./../../vendor/lodash/dist/lodash.min.js’导入* as _;

如果我现在整理并发布我的foo项目并启动一个使用foo的新项目栏,这将是我的目录结构.

SRC / JS / bar.js
SRC /供应商/富/ DIST / foo.js
SRC /供应商/ lodash / DIST / lodash.min.js

但是这不起作用,因为从foo到lodash的路径现在已经被破坏了(如果我正确理解了Browserify,那么’./blaat/file.js’中的点斜线相对于它被调用文件而言).

是否有某种方式导入而不进行任何文件路径假设?

是不是有某种方式来表明多个源根? (即在上面的例子中src / js和src / vendor ……好吧,理想情况下你只想将import *作为_来自’lodash’;)

我只在cli上使用了Browserify with Babelify.我应该使用其他一些转换器吗?

解决方法

我认为 jspm是您寻找的解决方案.在导入模块时,它将帮助您而不进行文件路径假设.它使用 SystemJS dynamic ES6 loader.观看在其网站上发布的视频,以便对其工作原理进行非常好的解释,Guy Bedford: Package Management for ES6 Modules [JSConf2014].

猜你在找的JavaScript相关文章