Tag: ecmascript 6

如何跳过使用“use strict”在Node.js 4.0+?

使用"use strict"允许在JavaScript代码中支持Node 4.0支持的ES6function。 但是,在每个后端代码文件的开始处都有这样的麻烦。 有没有一种方法来configuration节点只是假设"use strict"总是在应用程序中使用?

ES6模块连接

在JavaScript ES6中开发一个Web项目,我目前使用Traceur将我的模块从ES6编译成ES5,认为将来当浏览器支持ES6时,我可以跳过这个转换步骤。 最后,因为我不想在启动时下载几个js文件,所以我有一个单独的文件,包含所有转换成ES5的模块,这要感谢Traceur。 但是为了validation这个select,我想知道在ES6中保留源代码的时候是否还有可能。 如果我简单地连接它们,将会有无效的导入和名称冲突。 它看起来并不是为它devise的,它需要一个额外的处理步骤来正确地合并它们。 我们如何设想处理由多个模块定义的ES6单文件项目?

在扩展EventEmitter的ES6类定义中设置事件侦听器

我想要一些预定义的自定义侦听器,这些自定义侦听器已经定义了这个类的定义 (就像'newListner'事件中的构build一样)。 所以我不想在构造函数中绑定它们,因为它将在该类的每个新实例上执行。 这个怎么做? 修改原型? 有没有可能? 我到目前为止: class Cat extends EventEmitter { // just added for demonstration, I don't want this! constructor() { super(); // does fire this.on('wave', function() { console.log('constructor wave'); }); } } // compiles but does not fire Cat.prototype.on('wave', function() { console.log('prototype wave'); }); var cat = new Cat(); cat.emit('wave');

ES6类和module.exports

我现在看到了这个模式的nodeJS实现,在我们的模块中有以下代码: class Foo { bar() { console.log('bar'); } } module.exports = Foo; 然后,当我做一个需求,并最终说新的创build类的一个实例。 var Foo = require(./foo); var myFoo = new Foo(); myFoo.bar(); 根据我的这种模式,将会继续创buildFoo类的多个实例,每次调用时都会这样。 另一种模式可能是我习惯了在我的foo.js中的位置。 module.exports = { bar: function() { console.log('bar'); } }; 然后我只需要和打电话给酒吧。 var foo = require(./foo); foo.bar(); 问题是这两个行为是一样的吗? 第二种模式是否会在我需要的时候继续创build对象,并在对象上调用bar? 如果我们已经习惯了其他语言,在case 1中不是创buildsingleton模式的一个好主意,如果它已经被创build一次,我们继续服务于同一个实例吗?

如何浏览,编译ES6和缩小NodeJS应用程序

我正试图同时处理browserify和ES6。 我有以下基本的节点文件: main.js var foo = require('./foo.js'); var x = foo.math(200); console.log(x); foo.js exports.math = (n)=>{ return n * 111; }; 现在我想要做以下事情: 把它转换成一个文件bundle.js这样我就可以把它作为脚本包含在我的网站中 使用babel编译JS,使所有浏览器都可以读取ES6 最小化bundle.js以提高浏览器的加载时间 我有browserify安装在全球,我运行这个命令: browserify main.js > bundle.js 很好用。 但是我应该先运行babel吗? 我如何完成我的3个步骤的过程,并按照什么顺序(当然最后必须发生缩小)? 我应该这样做吗?

发电机function与蓝鸟和coexpression

我正在尝试使用节点0.12中的一些和声function,特别是尝试使用新的生成器function。 我正在用co(v4),bluebird和express(v4)这样做,就像这样: // … var fs = bluebird.promisifyAll(require('fs')); // … app.post('/test', co.wrap(function* (req, res, next) { var contents = yield fs.readFileAsync('/etc/hosts', 'utf8'); return res.send(contents); })); // … 根据它的文档,co.wrap返回一个正常的函数,它返回给定生成器函数的promise。 到目前为止,这是工作正常,但我不知道的是,如果a)我通过不等待返回的承诺的结果泄漏内存和b)如果我可能会失去一个exception抛出我的生成器函数,或一它使用的模块。 这是一个好方法吗? 你看到有什么不对吗?

扩展EventEmitter时如何解决这个问题没有定义?

以下代码失败: var EventEmitter = require('events'); class Foo extends EventEmitter{ constructor(){ this.name = 'foo'; } print(){ this.name = 'hello'; console.log('world'); } } var f = new Foo(); console.log(f.print()); 并打印错误 this.name = 'foo'; ^ ReferenceError: this is not defined 但是,当我不扩展EventEmitter它工作正常。 为什么会发生这种情况,我该如何解决? 运行nodejs 4.2.1

为什么在这种情况下调用ES6会产生一个保留字?

我正在使用节点4.1.1。 当我运行这个代码 "use strict"; function *generator() { let numbers = [1,2,3,4,5]; numbers.map(n => yield (n + 1)); } for (var n of generator()) { console.log(n); } 我得到这个错误 numbers.map(n => yield (n + 1)); ^^^^^ SyntaxError: Unexpected strict mode reserved word 如果我重新排列代码是这​​个 "use strict"; function *generator() { let numbers = [1,2,3,4,5]; let higherNumbers = numbers.map(n => […]

如何发布Vue.js组件库?

我正在研究一个包含Vuex模块和用户可以扩展的抽象组件的项目。 我很乐意在NPM上发布这个代码来清理我的代码库,并将其从我的项目中抽离出来,作为一个经过严格testing的模块。 我已经指定了package.json的主文件来加载一个索引,它导入我想要公开的所有东西: https://github.com/stephan-v/vue-search-filters/ 该指数目前包含这一点: import AbstractFilter from './src/components/filters/abstract/AbstractFilter.vue'; import Search from './src/store/modules/search'; module.exports = { AbstractFilter, Search }; 为了这个工作,我需要transpile,因为一个babel编译器通常不会transpile从node_modules导入文件(如果我在这里错了,纠正我)。 此外,我可能是一个好主意,这样做可以被不同的系统使用。 如何仅使用Webpack只传输我需要的文件? 我必须为此创build一个单独的configuration吗? 这样的configuration是什么样的? 我知道vue-cli有一个单一文件组件的build命令,但是这有些不同。 任何提示或build议如何transpile这样的东西是值得欢迎的。 编辑 这似乎也是一个好的开始: https://github.com/Akryum/vue-share-components Webpack用户要注意的最重要的事情是,您需要在UMD中传输您的文件,可以通过以下方式进行设置: libraryTarget: 'umd' 这将确保您正在进行Universal Module Definition ,这意味着您的代码可以在不同的环境中工作,如AMD,CommonJS,作为简单的脚本标记等。 除此之外,在webpack中提供外部属性是重要的: externals: {} 在这里,您可以定义哪些库是您的项目用户,但不应将其构build到您的dist文件中。 例如,您不希望将Vue库编译/转译到您的NPM软件包的源代码中。 我会研究一下,到目前为止,最好的select看起来像自己创build一个自定义项目如果我想灵活性和unit testing。 Webpack文档 这也是深入了解如何使用Webpack发布内容的一个有用的页面: https://webpack.js.org/guides/author-libraries/#add-librarytarget

在节点4.x中导出ES6类意外的保留字

我有一个Node脚本中的以下内容: "use strict"; class Whatever { constructor() { console.log("I'm in the constructor!"); } } export default Whatever; 我得到关于export Unexpected reserved word 。 我在这里错过了什么? 你如何在外部文件中指定一个类的定义,并包含/需要它?