-
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
前端资料汇总