开始学习Webpack-应用TypeScript,配置热加载和Source Map(1)

本文介绍了如何使用Webpack和TypeScript进行开发,包括配置HotModuleReplacement以实现模块级热更新,以及启用sourcemaps以便于调试。作者还演示了如何在package.json中整合命令并配置webpack-dev-server以实现实时编译和自动打开浏览器。
摘要由CSDN通过智能技术生成
  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

class Pickle { constructor(private picker: Element, private background: HTMLElement) { picker.addEventListener('change', this.colorChange.bind(this), false); this.background = background; } colorChange(event: Event): void { // `<HTMLInputElement>` tells TypeScript what type `target` is so that it knows there is a `value` property available. let input = <HTMLInputElement>event.target; this.background.style.backgroundColor = input.value; } } let picker = document.querySelector('#color-picker'); // The if avoids TypeScript complaining that `picker` might be null. if (picker) { new Pickle(picker, document.body); }

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

然后运行:

$ npm run build ... $ npm run serve > http-server Starting up http-server, serving ./ Available on: http://127.0.0.1:8080 http://192.168.200.8:8080 Hit CTRL-C to stop the server

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

浏览器访问:http://127.0.0.1:8080

webpack热加载配置(修改代码,自动刷新代码)


我们的package.json的script长这样:

{ ... "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "webpack", "serve": "http-server", "watch": "webpack --watch" }, ... }

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

运行npm run watch后是这样:

$ npm run watch > pickle@1.0.0 watch /Users/abraham/dev/pickle > webpack --watch Webpack is watching the files… ts-loader: Using typescript@2.5.3 and /Users/abraham/dev/pickle/tsconfig.json Hash: 16fb35ccc9f9b3f14c5d Version: webpack 3.8.1 Time: 957ms Asset Size Chunks Chunk Names bundle.js 3.27 kB 0 [emitted] main [0] ./index.ts 775 bytes {0} [built]

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

当然我们可以直接合并命令:

{ ... "serve": "npm run watch & http-server" ... }

  • 1

  • 2

  • 3

  • 4

  • 5

然后直接运行npm run serve就行了。Webpack会自动监听和编译我们的代码。

进一步,我们希望支持Hot Module Replacement(支持模块级别的自动刷新,而不需要刷新浏览器),

需要安装如下两个东西:

$ npm install --save-dev webpack-dev-server + webpack-dev-server@2.9.2 added 165 packages in 10.49s $ npm install --save-dev html-webpack-plugin + html-webpack-plugin@2.30.1 added 38 packages and removed 11 packages in 4.662s

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

修改配置webpack.config.js:

module.exports = { ... devServer: { contentBase: path.resolve(__dirname, '.') , hot: true } ... };

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

依赖它们:

const webpack = require('webpack'); const HtmlWebpackPlugin = require('html-webpack-plugin'); ...

  • 1

  • 2

  • 3

添加插件:

module.exports = { ... plugins: [ new HtmlWebpackPlugin({ filename: 'index.html', template: 'index.html' }), new webpack.NamedModulesPlugin(), new webpack.HotModuleReplacementPlugin() ] ... };

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

HotModuleReplacementPlugin 插件是告诉我们用热加载

NamedModulesPlugin 是用来清空编译日志的,这样只会显示我们入口文件信息。

HtmlWebpackPlugin 会把根目录的template文件(index.html),输出到dist目录的filename指定的文件名。这样webpack可以自动在index.html里面添加script标签,所以我们的index.html里面不需要:

修改package.json:

{ ... "serve": "webpack-dev-server --open" ... }

  • 1

  • 2

  • 3

  • 4

  • 5

–open告诉webpack在浏览器打开我们的页面。

运行npm run serve就行了。大功告成。

webpack支持source maps


修改tsconfig.json:、

{ ... "sourceMap": true, ... }

  • 1

  • 2

  • 3

  • 4

  • 5

修改webpack.config.js:

module.exports = { ... devtool: 'eval-source-map' };

  • 1

  • 2

  • 3

  • 4

以上就是今天的内容,不知道你学会了webpack配置,TypeScript会用了吗?
原文链接:https://bendyworks.com/blog/getting-started-with-webpack-source-maps

文末

我一直觉得技术面试不是考试,考前背背题,发给你一张考卷,答完交卷等通知。

首先,技术面试是一个 认识自己 的过程,知道自己和外面世界的差距。

更重要的是,技术面试是一个双向了解的过程,要让对方发现你的闪光点,同时也要 试图去找到对方的闪光点,因为他以后可能就是你的同事或者领导,所以,面试官问你有什么问题的时候,不要说没有了,要去试图了解他的工作内容、了解这个团队的氛围。

前端面试题汇总

JavaScript

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

性能

linux

前端资料汇总

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值