看过一遍webpack/es6/react的基础之后,感觉还算不上真正入门react的实战开发,于是乎想边学边搞一个小项目、把这三webpack/es6/react结合起来用一遍,从实际小项目中反过来学习基础要点。
(react的基础学习在 前面的学习。)
全部亲手一行行敲完后,终于有了这个稍微成型的入门小实例:
完整代码github:react-todo
演示链接demo:react-todo
实践中收货良多,过后便稍微总结一下系列的笔记。
react-todo 目录
webpack.config.js最终版
webpack的配置初接触还是坑满满的,先上一个最终版的:
|
|
接下来再拆分说明一下
模块引入
三种方式:
|
|
注意
:相对路径是相对当前目录,绝对路径是相对入口文件(这里是Todo.js
)。
配置简介
exports的两种写法
|
|
配置参数entry
:打包的入口文件,每有一个键值对,就有一个入口文件;output
:打包结果,path定义输出文件夹,filename定义打包结果文件的名称;devtool
: 调试错误定位,一般学习dev下设置为’eval-source-map’;module
:定义对模块的处理,对正则匹配的模块采用相应引入的loader进行处理。
loaders
webpack本身只能处理JS模块,要处理其它类型文件(scss/css/图片等)就需要引入相应的loader
进行转换。
loader的一般参数:
|
|
自动刷新
方式一iframe
编辑package.json
文件的script
,设置webpack-dev-server
指向的目录:
|
|
然后直接访问localhost:8080/webpack-dev-server/index.html
即可。
方式二inline
新增一个 --inline
:
|
|
然后访问localhost:8080/index.html
即可。
热加载
新增一个 --hot
:
|
|
坑:我当初用的是webstorm/phpstorm
IDE,这个东西强大得太智能了,当修改了文件后按ctrl+s
保存后,hot热加载并没有生效啊!
当时折腾了好久才猛然发现,是IDE的自动保存缓存之类搞的鬼;
解决:设置webstorm/phpstorm
:在 system settings中 取消 use “safe write”….,并设置修改过的文件用 * 标记。
(话说有个React-transform热替换
更好,往后再试试)
遇到的坑
node_modules惹的祸webstorm/phpstorm
完全被卡住,最后直接挂掉;github
客户端也同步不了……
原因都是因为node_modules
!
解决:webstorm/phpstorm
:先建好node_modules
文件夹;然后设置将其忽略、不检索该目录的依赖;再npm install安装loaders。github
客户端:在 .gitignore
文件下加入 node_modules/
,将其忽略不必提交到git。
loaders安装
在公司电脑安装好全部loaders,然后拿着package.json回到宿舍再 npm install 、各种报错;什么鬼版本号、缺少模块,全部卸载重新安装、补充安装、增加设置……
反正坑啊,踩一坑就谷歌一下,步履维艰前行,最后瞎折腾着就解决了…..