ES6模块导入和依赖项管理

记住

通过使用编译器,已经可以使用ES6模块。最简单的方法之一是使用Browserify和Babelify。我遇到的问题是如何处理依赖关系管理。

在过去,您只会有一些Bower依赖项。该构建会将非CDN捆绑到vendor.js,并将特定于项目的文件捆绑foob​​ar.js(或其他)。这样,您就可以通过简单地在另一个项目中使用结果代码bower install foobar --save如果foob​​ar和您的新项目都具有相同的依赖关系,则可以使用Bowers flat依赖关系轻松解决。

现在出现ES6模块:说我有一个使用lodash的项目foo目录结构如下:

src/js/foo.js src/vendor/lodash/dist/lodash.min.js

foo.js通过声明开始:

import * as _ from '../../vendor/lodash/dist/lodash.min.js';

或(自Babelify移植到CommonJS以来,Browserify希望如此):

import * as _ from './../../vendor/lodash/dist/lodash.min.js';

如果现在我汇总并发布我的foo项目并启动一个使用foo的新项目,则这将是我的目录结构。

src/js/bar.js src/vendor/foo/dist/foo.js src/vendor/lodash/dist/lodash.min.js

但这是行不通的,因为从foolodash的路径现在已断开(如果我正确理解Browserify的话,“ ./ blaat / file.js”中的点斜杠相对于要从其调用的文件)。

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

有没有办法指出多个源根?(即在上述情况下src / js和src / vendor ...好吧,理想情况下,您只想声明import * as _ from 'lodash';

我只在cli上使用了Browserify和Babelify。我应该使用其他编译器吗?

尼克酮林

我认为jspm是您寻找的解决方案。导入模块时,无需进行文件路径假设即可为您提供帮助。它使用SystemJS动态ES6加载程序观看他们网站上发布的视频,以很好地解释它们的工作原理,Guy Bedford:ES6模块的软件包管理[JSConf2014]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ES6解构和模块导入

来自分类Dev

如何使用CommonJS模块将Webpack和ES6与依赖项一起使用?

来自分类Dev

使用ES6语法和动态路径导入模块

来自分类Dev

ES6导入重复项?

来自分类Dev

ES6:从URL导入模块

来自分类Dev

ES6模块与HTML导入

来自分类Dev

ES6模块与HTML导入

来自分类Dev

通过导入ES6模块来加载和使用旧版JS模块(例如IIFE)

来自分类Dev

使用ES6语法和绝对路径导入外部模块

来自分类Dev

ES6模块的“导入”正式与CommonJS和AMD兼容吗?

来自分类Dev

将调解器模式与webpack和ES6模块一起使用导入导出

来自分类Dev

Systemjs和es6导入

来自分类Dev

在ES5模块中支持ES6导入

来自分类Dev

ES6模块和继承

来自分类Dev

由于ES6的扩展语法,Webpack和Babel不会在node_modules内部转换依赖项,该依赖项会破坏IE 11和Edge

来自分类Dev

使用JavaScript ES6模块导入现有库

来自分类Dev

使用ES6语法动态导入JavaScript模块?

来自分类Dev

导入可能不存在的es6模块

来自分类Dev

在深层目录中导入ES6模块

来自分类Dev

ES6无法在Webpack中导入JSX模块

来自分类Dev

使用ES6模块导出/导入单类方法?

来自分类Dev

如何测试使用jsdom导入jQuery的ES6模块

来自分类Dev

将ES6模块导入全球范围

来自分类Dev

如何导入香草JS ES6模块打字稿?

来自分类Dev

Node.js无法导入ES6模块

来自分类Dev

在ES6模块中导入同名功能的最佳方法

来自分类Dev

从Typescript中的http url导入ES6模块

来自分类Dev

ES6模块,什么算作首次导入?

来自分类Dev

导入es6模块的最佳方法是什么?