Tag: ecmascript 6

有没有一种方法来指定node.js中的对象字面量的ES6生成器方法?

我似乎无法创build一个生成器方法作为对象文字。 这是我的工作源代码: function *getRecords (data) { for (var i = 0; i < data.length; i++) { yield data[i]; } } var records = getRecords(data); for (var record of records) { // process my record } 但是当我在对象字面量中移动我的生成器方法时: var myobj = { *getRecords: function (data) {…} } 我得到SyntaxError: Unexpected token * 如果我添加引号 var myobj = { '*getRecords': […]

Node.js ES6如何从模块中导出类?

我试图从Node.js 6.2.0中的CommonJS模块中导出一个ES6类 class MyClass{ //class contents here } exports = MyClass; 然后将其导入另一个模块中: var MyClass = require('/path/to/module.js') var instance = new MyClass(); 但是,我收到以下exception: TypeError: MyClass is not a constructor 我该如何正确地做到这一点? 请注意,我没有使用Babel / Tranceur,它是纯粹的JS,在最新的Node 6.2.0中实现,根据Kangax,93%实现了ES6。 //编辑:这不是出口vs module.exports的问题。 单独使用导出时,我得到一些与__proto__设置的对象。

用mongoose抽象类

我正在开发一个我需要抽象的应用程序。 我的意思是说,我想“模拟”一个界面行为,比如在我的具体类中创build一个契约。 其实,处理用户,我有一个UserMongoRepository类与合同执行: getAll()通过promise返回用户的完整列表 getById(id)返回promise所关心的用户 保存(用户)保存用户的承诺 …等 我在UserMysqlRepository内部实现了相同的方法(当需要更改时允许我切换行为。 问题 我的问题是,我正在处理的Mongoose不像数据映射器,但更像是一个活跃的logging。 这意味着我的保存(用户)的实现将有点奇怪,如下所示: save(user){ let mongooseUser = this.convert(user); return user.save(); } convert方法允许我从标准模型切换到特定的Mongoose模型。 它允许我再次抽象一些,不必重写我的完整的应用程序数据访问。 我真正的问题是当我尝试unit testing我的全class时: import MongooseUser from '../../auth/mongooseModel/MongooseUser'; /** * UserMongoRepositoryclass */ export default class UserMongoRepository{ /** * Create an UserMongoRepository */ constructor(){ } /** * Convert a User to a MongooseUser */ convert(user){ return new […]

重复的词汇声明; 无法重新定义let或constvariables

我正在使用nodejstools工具来使用VS 2015社区的Node应用程序。 使用下面的代码,我在“错误列表”调色板中出现错误。 尽pipe如此,应用程序运行良好。 我想知道为什么这个错误发生在我的代码中,或者是VS IDE相关的错误。 'use strict'; const Q = require('q') const spawn = require('child_process').spawn; const exec = require('child_process').exec; const fs = require('fs'); const del = require('del'); const removeDirectories = require('remove-empty-directories'); 编辑: 此exception的源代码 。 错误报告

ES6方法得到一个空“这个”和类variables是无法访问的

我正在使用ES6类将一些function绑定在Node中。 这里(基本上)是这样的: class processDocs { constructor(id) { this.id = id; // console.log(this) returns { id: id } } getDocs(cb) { // console.log(this) returns null docs .query(qb => { qb.where('id', this.id); }) .fetch() .then(function(documents) { cb(null, documents); }) ; } alterDocs(documents, cb) { //some logic } reindexSearch(cb) { //some logic } process() { // console.log(this) returns […]

我如何使用事件和承诺来控制程序stream?

我有一个这样的class级: import net from 'net'; import {EventEmitter} from 'events'; import Promise from 'bluebird'; class MyClass extends EventEmitter { constructor(host = 'localhost', port = 10011) { super(EventEmitter); this.host = host; this.port = port; this.socket = null; this.connect(); } connect() { this.socket = net.connect(this.port, this.host); this.socket.on('connect', this.handle.bind(this)); } handle(data) { this.socket.on('data', data => { }); } send(data) […]

我可以在节点js文件中指定es6吗?

为了使用es6,我们通过命令行中的和声标志 node –harmony myscript.js 有没有办法从文件内部做到这一点,如use harmony ? #! /usr/bin/node use harmony class MyScript { constructor (options) { this.options = options; } get options () { return this.options } }

混淆es6导入 – >导出语句

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

在Express + NodeJS应用程序的控制器中使用ES6类或对象文字

有两件事我很困惑。 什么是使用任何ES6类或对象文字的优势。 我应该在哪里使用它们中的任何一个? 下面提到了一些我正在尝试的示例。 请让我知道什么时候使用特定的执行方式,什么时候不执行。 类例1: // auth.js class Auth { login(req, res) {…} signup(req, res) {…} } module.exports = new Auth(); // index.js const auth = require('auth'); 类例2: // auth.js class Auth { login(req, res) {…} signup(req, res) {…} } module.exports = Auth; // index.js const Auth = require('auth'); const auth = new Auth(); […]

JavaScript行之间保持什么状态?

我想知道在提交给babel-node两行JavaScript代码之间保留了哪些状态。 因为如果你写了两行代码,你就可以覆盖一个没有错误的variables定义。 例如,用babel-node –presets es2015 ,你可以这样做: > const a = 1; undefined > let a = 2; undefined 现在如果你把它写在一行中,你会得到一个错误: > const a = 1; let a = 2; TypeError: repl: Duplicate declaration "a" … 似乎在第一种情况下, a被定义为1 ( constvariables赋值)的状态丢失(直到第二个赋值),而在第二种情况下,它被保留。 是什么导致了这里的差异? 和哪些国家维持?