Tag: ecmascript 6

在使用Webpack的vue.js项目中使用('@')loginES6导入path

我开始了一个新的vue.js项目,所以我使用vue-cli工具来构build一个新的webpack项目(即vue init webpack )。 当我走过生成的文件,我注意到在src/router/index.js文件中的以下导入: import Vue from 'vue' import Router from 'vue-router' import Hello from '@/components/Hello' // <- this one is what my qusestion is about Vue.use(Router) export default new Router({ routes: [ { path: '/', name: 'Hello', component: Hello } ] }) 我之前没有看到路标( @ )。 我怀疑它允许相对path(也许?),但我想确定我明白它真正的作用。 我试图在网上search,但无法find解释(因为search“在符号”或使用文字字符@没有帮助作为search条件)。 @在这条路上做什么(链接到文档将是太棒了),这是一个es6的东西? 一个webpack的东西? 一个vue加载器的东西? UPDATE 感谢Felix Kling将我指向另一个关于同一个问题的重复的stackoverflow问题/回答。 […]

检查函数是否是生成器

我在Nodejs v0.11.2中使用生成器,我想知道如何检查我的函数的参数是生成器函数。 我find了这样的方式typeof f === 'function' && Object.getPrototypeOf(f) !== Object.getPrototypeOf(Function)但我不知道这是否是好的(并在未来工作)的方式。 你对这个问题有什么看法?

使用jQuery $(this)和ES6箭头函数(lexical this binding)

使用ES6的箭头函数与词法this绑定是伟大的。 不过,我刚才遇到一个问题,使用它与一个典型的jQuery点击绑定: class Game { foo() { self = this; this._pads.on('click', function() { if (self.go) { $(this).addClass('active'); } }); } } 改为使用箭头function: class Game { foo() { this._pads.on('click', () => { if (this.go) { $(this).addClass('active'); } }); } } 然后$(this)被转换成ES5(self = this)types的闭包。 是否让Traceur忽略“$(this)”来进行词法绑定?

ES6:调用没有新关键字的类构造函数

给定一个简单的类 class Foo { constructor(x) { if (!(this instanceof Foo)) return new Foo(x); this.x = x; } hello() { return `hello ${this.x}`; } } 是否有可能没有new关键字调用类的构造函数? 应该允许使用 (new Foo("world")).hello(); // "hello world" 要么 Foo("world").hello(); // "hello world" 但后者失败了 Cannot call a class as a function

Node.js – SyntaxError:意外的令牌导入

我不明白什么是错的。 节点v5.6.0 NPM v3.10.6 我的代码: (function (exports, require, module, __filename, __dirname) { import express from 'express'; 错误: SyntaxError: Unexpected token import at exports.runInThisContext (vm.js:53:16) at Module._compile (module.js:387:25) at Object.Module._extensions..js (module.js:422:10) at Module.load (module.js:357:32) at Function.Module._load (module.js:314:12) at Function.Module.runMain (module.js:447:10) at startup (node.js:140:18) at node.js:1001:3

我如何在ES6类中创build“公共静态字段”?

我正在做一个Javascript类,我想有像Java一样的公共静态字段。 这是相关的代码: export default class Agent { CIRCLE: 1, SQUARE: 2, … 这是我得到的错误: line 2, col 11, Class properties must be methods. Expected '(' but instead saw ':'. 它看起来像ES6模块不允许这样做。 有没有办法获得所需的行为,或者我必须写一个getter?

为什么`obj.foo = function(){};`不给函数赋“foo”这个名字?

从ES2015(ES6)开始,函数具有正确的名称(包括正式name属性),除了明显的函数声明和已命名的函数expression式(如赋值给variables(函数名称设置为variables的名称),赋值给对象属性(函数名称设置为属性名称),甚至函数参数(函数名称设置为参数名称)的默认值。 但是,分配给现有对象的属性(例如,不在对象初始值设定项中)不会将该属性的名称分配给该函数。 为什么不? 当然,一定有一个特定的原因是不可取的。 它以前如何? 要明确:我不是问如何解决这个问题。 我问的是什么阻止了这个看似明显的情况下被处理的时候,还有很多其他的(包括默认参数值!)。 一定有一个很好的理由。 请不要推测或理论。 TC39有理由不包括在内。 我对这个原因感兴趣。 我已经通过TC39会议笔记,但还没有find它。 我迄今发现的最接近的是艾伦· 维尔夫斯 ·布洛克(Allen Wirfs-Brock) 回答贝吉(Bergi)说,由于“各种各样的反对意见”,没有就这种forms达成共识。但遗憾的是,他没有说出那些反对意见是什么。 细节: 以下所有将名称foo分配给兼容浏览器上的function: // Requires a compliant browser // Assigning to a variable or constant… // …whether in the initializer… { let foo = function() { }; console.log("1:", foo.name); // "foo" } { const foo = function() { }; […]

如何使用ES6模块模拟unit testing的依赖关系

我试图摆弄Ecmascript 6模块使用webpack + traceur transpile到ES5 CommonJS,但我有麻烦成功地unit testing他们。 我尝试使用Jest + traceur预处理器,但automocking和依赖项名称似乎变得棘手,加上我似乎无法得到sourceMaps与Jest和节点检查器debugging工作。 unit testingES6模块有更好的框架吗?

最简单的方法来合并ES6地图/集?

有没有简单的方法来合并ES6地图(如Object.assign )? 而我们在这里,ES6集(如Array.concat )呢?

如何运行启用ES6function的Node.js应用程序?

我使用BabelJS (以前称为6to5)的require hook来运行具有es6features的节点应用程序: // run.js require("babel/register"); require("./app.js6"); 我调用node run.js来运行我的app.js6 。 我需要安装BabelJS并为每个我想使用es6features的项目提供一个run.js。 我更喜欢像nodejs6 app.js6这样的调用。 我怎样才能独立实现这个系统(Unix和Windows)?