Articles of ecmascript 6

将cookie的值设置为模板文字?

我正在创build一个模板文字,如下所示: const someVar = 'hello' const str = ` Some random multiline string with string interpolation: ${someVar} ` 然后在我的Koa应用程序中,我正在做: this.cookies.set('str', str) 显然它不喜欢多行string,因为它给出了这个错误: TypeError:参数值无效 有没有办法解决? 保持空白格式对我来说是非常必要的。

我必须在Node.js中使用Babel吗?

我知道Node.js现在完全支持ES6(使用nodejs 7.2.1)。 有人告诉我,Node.js的ES6实现不是生产准备好的,我必须有Babel才能生产ES6。 我读了babeljs.io,它是一个不支持ES6的老浏览器的JavaScript编译器。 我有点困惑。 Node.js是否需要Babel编译成ES5? 或者我可以使用ES6与Node.js? 生产准备好了吗? 我真的需要Babel和Node.js吗?

es6导出/导入多个类 – instanceof返回false

test1.js export class ValidationError extends Error { constructor (msg) { super(msg) } } export class ServerError extends Error { constructor (msg) { super(msg) } } test2.js import * as errors from './test1' const inst = new errors.ValidationError('msg') console.log(inst instanceof errors.ValidationError) 当我运行test2输出是false ( true预期)。

在es6 javascript类的非静态成员函数中调用静态getter

我如何从ES 6类中的普通成员函数调用静态函数? 这里是一个例子: class Animal { constructor(text) { this.speech = text; } static get name() { return "Animal"; } speak() { console.log( this.name + ":"+ this.speech) } } class Tiger extends Animal { static get name() { return "Tiger" } } var animal = new Animal("hey there"); animal.speak(); var tiger = new Tiger("hello"); tiger.speak(); // […]

ES6dynamic导入和实例化类

我想弄清楚如何执行在ES6一个服务器端(与巴贝尔node.js)类的dynamic导入。 我想要有一些类似于Javareflection的function。 这个想法是导入一个特定的文件夹中的所有类,并dynamic地实例化它们。 所以举例来说,我可以在一个文件夹中声明多个类,如下所示: export default class MyClass { constructor(somevar) { this._somevar = somevar } //… //some more instance level functions here } 然后在我的应用程序的代码中的其他地方,我可以有一个函数,找出特定文件夹中的所有类,并试图instanciate他们: //somewhere else in my app instanciationFunction(){ //find all the classes in a specific folder var classFiles = glob.sync(p + '/path_to_classes/**/*.js', { nodir: true }); _.each(classFiles, async function (file) { console.log(file); var […]

查找类方法返回空对象而不是用户数据

所以,我创build了不同的帮助器来减less我的控制器上的一些代码。 所以我创build了一个名为Lookup的类来帮助我search数据库中的用户,并创build了一个searchAccountKey(key,callback)。 所以,每当我使用这个方法,它似乎工作,但用户对象返回,而不是用户。 我怀疑这是由于收益率,但是当我使用收益率时,它给了我一个错误。 LookupHelper.js 'use strict'; const User = use('App/Model/User'); class LookupHelper { // Grab the user information by the account key static searchAccountKey(key, callback) { const user = User.findBy('key', key) if (!user) { return callback(null) } return callback(user); } } module.exports = LookupHelper; UsersController(第44行) Lookup.searchAccountKey(account.account, function(user) { return console.log(user); }); 编辑:每当我把产量infront的User.findBy() The keyword […]

在运行heroku本地网时,babel-node无法识别

我尝试在Heroku上部署Node.js API,但显示应用程序错误。 因此,使用“ heroku本地networking ”命令来testing任何错误..并得到一个错误,说'babel节点'不被识别为内部或外部命令,可操作的程序或batch file。 另一方面,当我运行命令'npm start'时,我没有得到任何错误,服务器开始运行。 的package.json { "name": "apollo-starter-kit", "version": "0.1.0", "description": "Minimal set of code to write a GraphQL server with Apollo graphql-tools", "scripts": { "start": "nodemon ./server.js –exec babel-node", "test": "echo \"Error: no test specified\" && exit 1", "lint": "eslint ." }, "repository": { "type": "git", "url": "git+https://github.com/apollostack/apollo-starter-kit.git" }, "keywords": […]

在编写ES6模块并转换为CommonJS时,实际上不会导出指定的导出

我有一个ES6模块,我试图导出几个函数。 最终目标是导入到purescript中,但是现在我所谓的导出函数甚至不会出现在Node中,我不明白为什么。 这里是模块: "use strict"; const point = (x, y) => new Point(x, y) const pointToString = (point) => point.toString() class Point { constructor(x, y) { this.x = x; this.y = y; } toString () { return `(${this.x}, ${this.y})`; } } export { point, pointToString } 我像这样进行传译: browserify src/page.js -t [ babelify –presets [es2015] ] […]

如何在JavaScript中parsing后立即处理asynchronous结果?

我有一个asynchronous函数需要相当多的时间来callback,需要运行一个input数组,并将结果传递给后续操作。 我最初的方法是基于Promise的: Promise.all(entries.map((entry) => { return new Promise((resolve, reject) => { processEntry(entry, resolve); }); })).then((outputs) => { outputs.forEach((output) => { return console.log(output); }); callback(); }); 与此有关的问题是,输出只在得到解决之后得到处理(或在这种情况下logging)。 为了让他们尽快解决问题,我尝试了这种更老式的方法: var i = 0; entries.forEach((entry) => { processEntry(entry, (output) => { console.log(output); if (++i >= entries.length) callback(); }); }); 这适用于我特殊的情况,但似乎不是一个正确的通用解决scheme,因为不再保证输出顺序。 为了达到预期的效果,至今我可以想到的最好的方法是在entries填入输出为原始索引的数组,并且每当新的输出出现时,就用数组的起始处理输出单独的滑动索引,当它达到一个undefined时候停止。 有没有更好的方法来实现这一目标?

如何阅读节点中的本地Markdown文件?

我正在使用名为react-markdown的库。 如果你知道React,它的实现非常简单。 import React from 'react'; import ReactDOM from 'react-dom'; import ReactMarkdown from 'react-markdown'; var content = '# This is a header\n\nAnd this is a paragraph'; ReactDOM.render( <ReactMarkdown source={content} />, document.getElementById('root') ); 库的演示只讨论创buildMarkdownstring作为variables,而不是本地文件。 我明白的做法是在Node中使用fs 。 所以我写了以下内容: import React from 'react'; import ReactDOM from 'react-dom'; import ReactMarkdown from 'react-markdown'; import * as fs from 'fs'; import […]