Articles of es6 modules

返回的类实例的JSDoctypes

我使用Node.js有两个模块和一个依赖于它们的脚本: LIB / Bar.js module.exports = class Bar { // .. }; LIB / Foo.js const Bar = require('./Bar.js'); module.exports = class Foo { /** * @return {Bar} A Bar instance */ get someBar() { return new Bar(); } }; main.js const Foo = require('./lib/Foo.js'); checkFoo(new Foo()); /** * @param {Foo} foo A Foo instance […]

将ES模块(.mjs)发布到NPMJS,并向后兼容节点<8.5.0

直到Node v8.5.0,将一个用ES6编写的模块发布到NPMJS中是一个简单的过程:使用Babel这样的工具来转换ES6代码,然后将结果的lib目录发布到NPMJS,而你的GitHub仓库包含src文件。 在v8.5.0中,Node已经通过–experimental-modules标志发布了本地模块 ( export / import )的实验支持 。 现在可以将纯ES6模块发布到NPMJS上 ,只要涉及的文件具有.mjs扩展名,就可以在不进行任何转换的情况下使用它们 。 如何发布ES6模块( .mjs ),以便它也可以用于不支持ES本地模块的旧版本的Node?

使用–experimental-modules标志时,节点中__dirname的替代方法

为了使用ES6模块,我运行我的节点应用程序时使用了flag –experimental-modules modules。 但是当我使用这个标志时,元variables__dirname不可用。 有没有其他的方法来获取存储在__dirname与此模式兼容的相同的string?

我可以在Node.js 8中使用ES6模块吗?

从版本8开始,我可以使用ES6模块语法和Node.js吗? 本网站已经提出类似的问题,但答案已经过时。 我想知道情况是否改变了新版本的Node.js?

支持ES6模块语法和CommonJS

所以我有这个简单的模块: export default function(){} 如果我不使用export default ,那么TypeScript编译器会写一个警告,说我的“模块没有默认导出”,我想避免。 所以要使用这个模块,我们会这样做: import fn from 'my-module'; 这一切都很好,但如果我想使用CommonJS导入它呢? 那么我必须这样做: const fn = require('my-module').default; 这对用户来说很尴尬。 有没有办法解决?

混淆es6导入 – >导出语句

这是有效的JavaScript? 它没有错误,似乎工作。 export {default as Chooser} from "./chooser"; 我的解释是: 从"./chooser" import default 从#1 export结果as Chooser 这是怎么回事?

ES6(EcmaScript 2015)模块:导入index.js

在互联网上看,我与特殊的“index.js”模块文件混淆。 使用babelJS + nodeJS或Browserify / Webpack我可以import myLib from "./libs" (即省略/index或/index.js部分)使用import myLib from "./libs" “libs”目录中的“index.js”模块。 是ES6(EcmaScript 2015)模块官方标准支持的“index.js”模块分辨率(指定包含文件夹)? 还是只是“自定义”的NodeJS / CommonJS转储行为? 是否可以省略/index | /index.js所有浏览器中的导入部分(当所有浏览器都支持模块时)?