我想更好地理解webpack中如何实现promise之间的区别。通常情况下,由于我主要开发应用程序,幸灾乐祸的无知足以应付,但我对如何正确地开发一个插件/工具/库显然有点困惑。
js-使用babel-polyfill作为入口点
module.exports = {
entry: {
foo: [
'core-js/fn/promise', <-- here
'./js/index.js'
]
},
module: {
rules: [
{
test: /\.js$/,
loader: 'babel-loader'
}
]
}
}
问:在这种方法中,因为它是一种聚填料,所以它改变了全球前景?
使用提供插件的webpack配置填充
module.exports = {
entry: './js/index.js',
module: {
rules: [
{
test: /\.js$/,
loader: 'babel-loader'
}
]
},
plugins: [
new webpack.ProvidePlugin({
Promise: 'es6-promise' <-- here
})
]
};
问:这是否意味着Promise是一个只特定于webpack捆绑过程的模块?传输的ES5代码是否有本地副本或ES6-promise?它是否弥补了全球promise?
module.exports = {
entry: {
foo: [
'./js/start.js'
]
},
module: {
rules: [
{
test: /\.js$/,
loader: 'babel-loader'
}
]
}
}
{
"presets": [ "es2015" ],
"plugins": ["transform-runtime"] <--here
}
require('babel-runtime/core-js/promise').default = require('es6-promise'); <--here
require('plugin');
问:这将es6-promise别名为babel-runtime promise,并且不是全局的,只是工具的局部?
entry: ['core-js/fn/promise', './index.js']
这与您在入口点的顶部导入它具有相同的效果。
在这种方法中,由于它是一种聚合体,它改变了全球前景?
是的,此polyfill更改全局promise
。称它为polyfill通常意味着它修补了全局内置,尽管这一点并没有严格遵守。如果它们不改变现有的API,而只提供功能,它们有时被称为PonyFills。
new webpack.ProvidePlugin({
Promise: 'es6-promise'
})
var Promise = require('es6-promise');
传输的ES5代码是否有本地副本或ES6-promise?
与任何其他模块一样,它被webpack包含一次,所有导入都引用该模块。
它是否弥补了全球promise?
{
"plugins": ["transform-runtime"]
}
const Promise = require('core-js/library/fn/promise');
它不是全局的,因为它只是一个模块。Babel获取JavaScript并输出一些其他JavaScript,在这些JavaScript中将配置的特性传输到ES5。您将运行或捆绑得到的JavaScript,它实际上与您最初编写ES5的情况相同。
require('babel-runtime/core-js/promise').default = require('es6-promise');
然后修改导出,因此模块将使用es6-promise
。但是覆盖导出不是一个好主意,特别是因为ES模块的导入在规范中是不可变的。Babel目前在这方面不符合规范。有关更多细节,请参见使transpiled ES模块更符合规范。
这取决于你在做什么。除了它们是否改变全局的区别之外,你可以选择你喜欢的任何一个。例如,使用babel的transform runtime允许您将它与任何使用babel的工具一起使用,而不仅仅是WebPack。
插件是一个非常宽泛的术语,可以是介于库和应用之间的任何东西。例如,webpack插件或加载器应该按原样工作,而jQuery插件将是web应用程序的一部分,您应该将其视为库(它们可能应该被称为库而不是plugin)。通常,您希望与所扩展的任何内容的指导原则相匹配。看一看,看看他们的目标是什么。例如,webpack当前支持Node verions>=4.3.0,所以您的插件也应该支持。
Java7编译器是如何处理多捕获块的?一个简单的实现是生成字节码,就好像存在多个catch块一样。然而,我从多个来源得到的信息表明,情况并非如此--处理多个异常类型的catch块在编译期间不会产生重复的字节码。 那么,它是如何工作的呢?是否有一个新的字节码指令告诉JVM关于多捕获块?
还有很多关于Angular中脏检查的探索博客,Vue.js和虚拟DOM中使用的Object.DefineProperty等等... 但在UI5文档中,只有如何使用数据绑定。没有关于如何实现数据绑定的详细信息。 我读过关于SAP.ui.base.ManagedObject的文档和它的源代码,在SAP.ui.base.ManagedObject的构造函数中,它说这些对象与数据绑定相关,但我不知道是如何
我想将一个道具传递给React组件,以父组件状态中的布尔值为条件,该组件希望将作为
null 如果我们等待的时间足够长,就会出现超时,导致客户端上出现以下消息。 这就是我在使用长轮询时所面临的问题。它停止进程以防止服务器过载,不是吗?