webpack4的基本使用
首先创建项目的基本目录结构
代码都在src文件中,压缩后的代码放在dist中,创建完后执行 npm init -y 生成项目配置文件package.json,然后创建webpack的配置文件webpack.config.js文件,在里面指定打包的相关配置
webpack4有一些默认的设置,比如默认打包入口文件是src下的index.js,默认生成的打包文件叫main.js会放到dist目录下,也可以自己指定,如果采用默认设置,我们只需要指定打包的模式就可以进行打包了
然后执行webpack
会显示相关信息,表示打包成功,这时dist文件夹下面会多出一个main.js文件,就是src下的index.js文件打包后的js文件,打包生成的main.js引入index.html文件中,就可以正常使用了。
webpack4.x再往后的版本mode也可以不指定,默认production
webpack热更新:webpack-dev-server
在项目配置文件中配置webpack-dev-erver的执行命令
然后执行npm run dev 就相当于执行了定义的dev右面对应的操作
这时命令行中头两行会有下面两条消息
第一句表示项目现在运行在http://licalhost:8080/
第二局是webpack 输出文件服务于 / 也就是项目根路径
在没用webpack-dev-server时打包好的文件的出口是dist目录下的main.js,当用了webpack-dev-server后,打包好的文件会被托管在根目录下,不过是在内存中(内存可以更快的加载显示,性能更好),所以物理磁盘看不到,也就是说编辑器还是文件夹中看不到打包好后的main.js,不过它确实是存在的,并且这时对index.js中的操做保存后页面是没反应的,因为当前index.js文件打包好的地址不再是dist目录下,而是在项目根路径下,只是我们看不到,现在index.html文件中就要引入根路径下的main.js文件了。
这样我们对index.js文件中做的操作保存后页面会自动更新,省去了以前要查看一次效果就要webpack一次的步骤
webpack-dev-server还有其他的参数可以配置
比如:
以上表示执行webpack-dev-server操作时–open 自动打开默认浏览器,后面如果加上firefox表示自动打开firefox浏览器,–port表示打开地址端口,默认8080, --hot表示热更新,不写默认就有, --host 表示打开地址,默认localhost
这样我们的js文件就放到了项目根路径的内存中,不过目前来看打开的是整个项目,还需要我们手动点击src文件,才会显示我们的html文件,怎么让我们执行npm run dev就自动打开浏览器并进入index.html页面呢
插件:html-webpack-plugin:在内存中生成index.html文件,并引入内存中的main.js
首先引入
然后webpack使用该插件
然后执行npm run dev就会自动打开浏览器并显示index.html页面
这样html页面就不需要引js文件了index.html 和 main.js都放在项目根路径的内存中 html-webpack-plugin生成的html文件会自动引入main.js,路径也会自动配置好,不需要我们担心
至此一个基本的webpack配置就搭建好了
npm 后面的 -D -S:
-D 项目开发时期用到的工具 : webpack …
-S 项目开发和上线时都要用到的:vue react react-dom …
react基本使用
首先安装react和react-dom
然后就简单了,只是使用react的语法创建一个虚拟dom,将其渲染到页面上
index.html
Hello react
一直用React.createElement和ReactDom.render来创建虚拟DOM太过麻烦,所以有了JSX
jsx
在js文件中写html语法
本质还是通过React.createElement和ReactDom.render来创建虚拟DOM,不过我们只需要写html代码,而转换成React.createElement和ReactDom.render的格式则由第三方插件替我们完成
webpack默认只能打包js文件,无法处理.vue .png .less 等格式文件,处理它们由对应的loader,而这些loader的配置规则都写在webpack.config.js文件中的modle中
安装需要的包 babel8较之前版本有所更改。 下载:
modle中配置匹配规则
rules中规定了当是js或jsx时使用babel-loader,所以要配置下babel-loader
配置babel-loader:根目录下创建 .babelrc 文件
然后就可以使用jsx语法了
npm run dev
👌
各个包的作用