gpt4 book ai didi

javascript - 为 Object.values() react Babel polyfill

转载 作者:行者123 更新时间:2023-11-30 11:11:02 24 4
gpt4 key购买 nike

在我们的项目中,我们经常使用 Object.keys()Object.values()!由于它是基于 Magento (1) 的,我们已经用 Prototype.js 对其进行了 polyfill(不知道它来自于它)。

然而,我们发现了一些似乎与 Prototype.js 直接相关的性能问题,因此我们希望将其删除。

我不想更改它们使用的每个位置。相反,我想要一个好的 polyfill,它只为默认不支持它的浏览器加载。我希望 polyfill 也托管在我们的服务器上,以避免在 cdn 关闭时出现任何奇怪的错误(我们有自己的 cdn 解决方案)。

Babel 的一切都让我感到困惑。 Webpack 对我来说也是半新的,有时会让人感到困惑。webpack.config 的语法似乎发生了变化,因为我们使用的是一些较旧的规范。尝试遵循文档和谷歌搜索答案更加令人困惑。我想我们应该更新到新规范。很快。

我们今天有这个,相关部分,

webpack.config.js:

const path = require('path');
const webpack = require('webpack');

const BUILD_DIR = path.resolve(__dirname, 'build/');
const APP_DIR = path.resolve(__dirname, 'src/');

module.exports = function config(env, argv = {}) {
return {
entry: ['core-js', 'formdata-polyfill', 'whatwg-fetch', `${APP_DIR}/index.js`],
output: {
path: BUILD_DIR,
filename: 'react-frontend.js',
},
resolve: {
extensions: ['.js', '.jsx'],
modules: [
path.resolve(__dirname, 'src/'),
'node_modules',
],
alias: {
companyName: path.resolve(__dirname, './src/companyName.js'),
},
},
module: {
loaders: [
{
test: /\.jsx?$/,
include: APP_DIR,
loader: ['babel-loader', 'eslint-loader'],
},

packages.json

{
"dependencies": {
"babel-core": "^6.26.0",
"babel-loader": "^7.1.4",
"babel-plugin-transform-object-assign": "^6.22.0",
"babel-plugin-transform-proto-to-assign": "^6.26.0",
"babel-plugin-transform-runtime": "^6.23.0",
"babel-preset-env": "^1.6.1",
"babel-preset-es2015": "^6.24.1",
"babel-preset-es2017-node7": "^0.5.2",
"babel-preset-react": "^6.24.1",
"babel-preset-stage-0": "^6.24.1",
"babel-runtime": "^6.26.0",
"core-js-bundle": "^3.0.0-alpha.1",
"formdata-polyfill": "^3.0.12",
"react": "^16.3.0",
"webpack": "^3.11.0",
"whatwg-fetch": "^2.0.4"

我害怕只添加 https://babeljs.io/docs/en/babel-polyfill/如果它为我们已经有 polyfill 的东西添加 polyfills..

除了 Object.values(),我们似乎已经为我们需要的所有其他东西提供了有效的 polyfill,支持最常用的浏览器最新的 2 个版本 + IE11。

或者我们应该只添加:https://www.npmjs.com/package/es7-object-polyfill

编辑:更新问题,我看到 Object.keys() 已经在工作,但不是 Object.values()

最佳答案

我现在注意到 Object.keys() 已经工作正常,但不是 Object.values(),这似乎与 Object 略有不同.entries()

所以我像这样为它添加了一个简单的 polyfill。

index.js

import './polyfills';

polyfills.js

const objectToValuesPolyfill = (object) => {
return Object.keys(object).map(key => object[key]);
};
Object.values = Object.values || objectToValuesPolyfill;

关于javascript - 为 Object.values() react Babel polyfill,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53693274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com