source-map讲解

什么是source-map

构建了处理前的代码和处理后的代码之间的桥梁。主要是方便开发人员的错误定位。处理是指
压缩,减小体积将多个文件合并成同一个文件,其他语言编译成javascript,比如TypeScript和CoffeeScript等

设置dev-tool

const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const CleanWebpackPlugin = require('clean-webpack-plugin')
module.exports = {
    mode: "development",
    entry: {
        bundle: './src/index.js',
    },
    // 设置为none
    devtool: "none",
    module: {
        rules: [{
            test: /\.(jpg|png|gif)$/,
            use: {
                loader: "url-loader",
                options: {
                    name: '[name]_[hash].[ext]',
                    outputPath: 'images/',
                    limit: 2048
                }
            }
        },{
            test: /\.scss$/,
            use: [
                'style-loader',
                {
                    loader: "css-loader",
                    options: {
                        importLoaders: 2 ,
                        modules: true
                    }
                },
                'sass-loader',
                'postcss-loader'
            ]
        }]
    },
    plugins: [
        new HtmlWebpackPlugin({
        template: 'src/index.html'
        }),
        new CleanWebpackPlugin()
    ],
    output: {
        path: path.resolve(__dirname, 'build'),
        filename: '[name].js'
    }
}

关闭source-map后打包,打包后生成bundle.js

打开source-map

devtool: "source-map"

打包后的模块在模块后面会对应引用一个.map文件,同时在打包好的目录下会针对每一个模块生成相应的.map文件
多出.map文件,方便在调试时定位错误

inline-source-map
devtool: "inline-source-map"

不会生成.map文件,source-map以base64形式放到js文件里

cheap
devtool: "cheap"

cheap报错提示信息只精确到行,不用精确到列,性能更好

module
devtool: "module"

module模式会对三方库、loader等的也负责

eval
devtool: "eval"

eval会将每一个module模块,执行eval,执行后不会生成sourcemap文件,仅仅是在每一个模块后,增加sourceURL来关联模块处理前后的对应关系
eval通过eval来执行,性能最快,但是复杂的代码可能显示不全

总结

模式特性
eval使用eval包裹模块代码
source-map产生.map文件
cheap不包含列信息,也不包含loader的sourcemap
module包含loader、三方库的sourcemap
inline将.map作为DataURI嵌入,不单独生成.map文件

在实际应用中根据需求来组合使用

在dev环境中我们使用:cheap-module-eval-source-map
在prd环境中我们使用:cheap-module-source-map

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Apache Kafka Connect 中,`SourceRecord` 是一个用于表示源系统中的单个记录的类。它包含了 Kafka 主题、分区、偏移量,以及记录的键和值等所有重要的元数据信息。下面是一些关于 `SourceRecord` 类的详细讲解: ### 构造函数 `SourceRecord` 类有多个构造函数,其中最常用的一个包含以下参数: ```java public SourceRecord( Map<String, ?> sourcePartition, Map<String, ?> sourceOffset, String topic, Integer partition, Schema keySchema, Object key, Schema valueSchema, Object value ) ``` - `sourcePartition`:一个 `Map` 对象,表示包含记录的源系统的分区信息。通常包括分区 ID 等信息。 - `sourceOffset`:一个 `Map` 对象,表示包含记录的源系统的偏移量信息。通常包括偏移量值等信息。 - `topic`:一个 `String` 对象,表示记录所属的 Kafka 主题。 - `partition`:一个 `Integer` 对象,表示记录所属的 Kafka 分区。 - `keySchema`:一个 `Schema` 对象,表示记录的键的模式。可以为 `null`。 - `key`:一个 `Object` 对象,表示记录的键的值。可以为 `null`。 - `valueSchema`:一个 `Schema` 对象,表示记录的值的模式。可以为 `null`。 - `value`:一个 `Object` 对象,表示记录的值的值。可以为 `null`。 ### 方法 `SourceRecord` 类包含了以下几个重要的方法: - `sourcePartition()`:返回包含记录的源系统的分区信息的 `Map` 对象。 - `sourceOffset()`:返回包含记录的源系统的偏移量信息的 `Map` 对象。 - `topic()`:返回记录所属的 Kafka 主题。 - `partition()`:返回记录所属的 Kafka 分区。 - `keySchema()`:返回记录的键的模式。可能为 `null`。 - `key()`:返回记录的键的值。可能为 `null`。 - `valueSchema()`:返回记录的值的模式。可能为 `null`。 - `value()`:返回记录的值的值。可能为 `null`。 除此之外,`SourceRecord` 类还包含了一些其他的方法,例如 `toString()` 等。 ### 使用示例 下面是一个使用 `SourceRecord` 类的示例: ```java SourceRecord record = new SourceRecord( Collections.singletonMap("partition", "0"), Collections.singletonMap("offset", 12345), "my-topic", 0, Schema.STRING_SCHEMA, "my-key", Schema.STRING_SCHEMA, "my-value" ); ``` 在这个示例中,我们创建了一个名为 `record` 的 `SourceRecord` 对象,它表示了一个名为 `my-topic` 的 Kafka 主题中的一个记录,分区 ID 为 0,偏移量为 12345。记录的键为 "my-key",值为 "my-value"。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值