Javascript nodejs modules.exports与ES6类
我只是从ES5函数中学习ES6 有些事情让我很困惑: 比如说出口,Javascript nodejs modules.exports与ES6类,javascript,node.js,ecmascript-6,Javascript,Node.js,Ecmascript 6,我只是从ES5函数中学习ES6 有些事情让我很困惑: 比如说出口, function B(){ // Some definition } exports.modules = B(); 如果我们使用基于类的语法,这是否意味着我们根本不需要导出?如果没有,我们怎么写?您实际上什么时候需要使用导出?与使用“new”关键字调用构造函数相反?。有什么区别 个人意见: ES6让我感觉像是在用javascript编写Java代码:-\n我喜欢函数式编程,但看起来ES6是一个不错的选择。我有一部分讨厌新语法
function B(){
// Some definition
}
exports.modules = B();
如果我们使用基于类的语法,这是否意味着我们根本不需要导出?如果没有,我们怎么写?您实际上什么时候需要使用导出?与使用“new”关键字调用构造函数相反?。有什么区别
个人意见:
ES6让我感觉像是在用javascript编写Java代码:-\n我喜欢函数式编程,但看起来ES6是一个不错的选择。我有一部分讨厌新语法,但另一半想尝试一下。。有人来过这里吗
请告诉我。ES6模块导出不可变绑定 与CommonJS模块不同,ES6模块将绑定、实时连接导出到值。以下代码演示了其工作原理:
//------ lib.js ------
export let mutableValue = 3;
export function incMutableValue() {
mutableValue++;
}
//------ main1.js ------
import { mutableValue, incMutableValue } from './lib';
// The imported value is live
console.log(mutableValue); // 3
incMutableValue();
console.log(mutableValue); // 4
// The imported value can’t be changed
mutableValue++; // TypeError
如果通过星号*导入模块对象,则会得到类似的结果:
//------ main2.js ------
import * as lib from './lib';
// The imported value is live
console.log(lib.mutableValue); // 3
lib.incMutableValue();
console.log(lib.mutableValue); // 4
// The imported value can’t be changed
lib.mutableValue++; // TypeError
看看:和
如果我们使用基于类的语法,这是否意味着我们根本不需要导出
不,那两个人完全没有关系
类语法是关于定义构造函数和原型方法的。
导出是关于使值可用于其他文件模块,特定于您正在使用的environment node.js,而不是语言。
因此,即使您从函数B切换到类B,这也不会改变模块系统的任何内容。如果您从common.js样式更改为ES6模块语法以导出您的B或新的B或其他任何东西,这不会改变B的声明
ES6让我感觉像是在用javascript编写Java代码:-\n我喜欢函数式编程,但看起来ES6是一个不错的选择
ES6类语法只是构造器和原型的糖,使读写更容易/更短。如果您对函数式编程感兴趣,并且以前没有使用构造函数,那么您也不会在ES6中使用它们。我们在ES5中有导出。不,我们没有。您确定exports.modules不应该是module.exports吗?我假设您目前正在使用CommonJS模块系统。您是否。。。尝试你仍然需要告诉模块要输出什么。我不明白为什么我因为提出问题或表达观点而被评为-4级。我认为这是一个我可以提问或表达想法的地方!天哪!你可以提问和表达你的想法,只是不要期望每个人都喜欢你的想法或他们表达的形式。我没有投反对票,但我也没有投反对票,因为你的问题不清楚我们如何写——写什么?,这是不正确的导出。模块不是导出的工作方式,它的一部分没有意义。最后的bullet和R是什么?看起来好像有什么未完成或格式错误。