webpack4.0

webpack 是具有打包,转化以及优化的工具,而 webpack4.x 相比较 webpack3.x 有了较大的改变,故在此写下一篇文章用于记录与学习。

1. webpack安装

webpack 是基于 node 使用的所以请先安装 node(npm 也会随node一并下载下来),下载完毕之后使用下图指令

webpack4.0_第1张图片
[图片上传中...(webpack.PNG-5cfd88-1543608997803-0)]

确认是否下载完成。

webpack 官网https://webpack.js.org

node 官网https://nodejs.org/zh-cn/

webpack 4.0 安装命令如下图(npm,cnpm都可以)

webpack.PNG

该方法为全局安装,用一下命令查看是否安装成功

success.PNG

若未成功请使用局部安装如下

再次使用上面的命令验证是否安装成功

2. 简单配置

在项目中先生成项目文件如下

npm init.PNG

再在项目中生成 webpack.config.js (webpack的配置文件),建立 src 文件夹(未打包之前的文件夹),dist 文件夹是打包之后生成的文件夹,node_modules 是存放各种插件即中间件,package.json 写清所下的依赖,基本目录如下

webpack4.0_第2张图片
目录.PNG

下面是 webpack.config.js 中的基本配置,如下图

webpack4.0_第3张图片
配置.PNG

webpack4.0,中的零配置时,默认入口文件为 src/index.js,默认出口文件为 dist/main.js

entry 入口文件

output 出口文件

loader 转化器

plugins 插件

devServer 开发服务器

mode 模式

webpack.config.js 文件配置好后,只需在 cmd 中输入 webpack 便可打包,默认打包的文件是压缩过后的,这便是 mode 模式

mode 分为两种模式,分别是 development(开发模式) 和 production(上线模式),可在 cmd 中如下所写(开发模式)

cmd.PNG

也可在 package.json 中事先配置好,如下

webpack4.0_第4张图片
cmd-one.PNG

运行时 cmd 中输入如下

build.PNG

出口与入口的设置

webpack4.0_第5张图片
1-1-3.PNG



1.entry 入口

      可以同时配置多个入口,路径使用相对路径

2.output 出口

      path 路径使用绝对路径,可以使用 resolve 或者 join 进行合成,__dirname 为当前文件夹的路径,

      filename 打包过后的 js 文件名

打包过后生成的文件夹如下

webpack4.0_第6张图片
1-1-3.PNG



html-webpack-plugin

打包时的一些操作

1. 安装

npm install html-webpack-plugin -D

2.依赖 webpack 运行

      需要本地安装 webpack,因为 webpack4.0 中将一些功能放入了 webpack-cli 中,所以也需要本地安装 webpack-cli

      npm install webpack webpack-cli -D

3.配置

4.使用

      引入 new html({})

webpack.config.js 中配置如下

webpack4.0_第7张图片
1-1-1.PNG

chunks 打包文件的名称,是一个数组,即可以同时将多个 js 文件打包在同一个 html 文件中

hash 是否对引入的静态资源进行编译进行,如下

1-1-2.PNG

title 一般用于网页的标签中</h3> <h3>filename 打包之后生成的 html 文件的名称</h3> <h3>template 打包文件的 html 模板</h3> <h3>更多配置请到 npm 官网查看</h3> <p><br><br></p> <h1>clean-webpack-plugin</h1> <h3>清除之前生成的包</h3> <h3>1.安装</h3> <h3>      npm install clean-webpack-plugin -D</h3> <h3>2.使用</h3> <h3>      引入 new clean([])</h3> <p></p> <div class="image-package"> <div class="image-container" style="max-width: 558px; max-height: 75px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/12246951bc324ea7bc1b63fad2e56df7.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/12246951bc324ea7bc1b63fad2e56df7.jpg" width="558" height="75"></a> </div> </div> <div class="image-caption"> 1-1-4.PNG </div> </div> <br> <br> <br> <p></p> <h1>webpack-dev-server</h1> <h3>启用服务器</h3> <h3>1. 安装</h3> <h3>      npm install webpack-dev-plugin -D</h3> <h3>2. 使用</h3> <h3>      无需用变量引入</h3> <h3>配置如下</h3> <div class="image-package"> <div class="image-container" style="max-width: 616px; max-height: 404px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/96c33cdb69704a12a246e126e8deca7b.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/96c33cdb69704a12a246e126e8deca7b.jpg" width="616" height="404" alt="webpack4.0_第8张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"> 1-1-5.PNG </div> </div> <h3>open 是在 cmd 中运行打包之后页面立即打开</h3> <h3>hot 是在文件保存即在页面更新</h3> <h3>打包过后的项目目录如下</h3> <p></p> <div class="image-package"> <div class="image-container" style="max-width: 292px; max-height: 392px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/6b4587fbc8ce4eaf88dd3d7e9a9483bd.png" target="_blank"><img src="http://img.e-com-net.com/image/info10/6b4587fbc8ce4eaf88dd3d7e9a9483bd.png" width="292" height="392" alt="webpack4.0_第9张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"> 1-1-6.PNG </div> </div> <br> <br> <br> <p></p> <h3>less/scss 等是浏览器不支持的,所以需要用 loaders(转化器,加载器) 进行转化</h3> <p><br><br></p> <h1>style-loader ,css-loader</h1> <h3>1. 安装</h3> <h3>      npm install style-loader css-loader -D</h3> <h3>2. 使用</h3> <h3>      在 webpack.config.js 中对 module 进行配置,不用用变量引入</h3> <p></p> <div class="image-package"> <div class="image-container" style="max-width: 685px; max-height: 482px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/8091e80d2f4f4d0d8984393b0a69960d.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/8091e80d2f4f4d0d8984393b0a69960d.jpg" width="650" height="457" alt="webpack4.0_第10张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"> 1-1-7.PNG </div> </div> <br> <br> <br> <p></p> <h1>mode production(上线环境即对打包文件进行压缩)</h1> <h3>1. 在 webpack4.0 之后</h3> <h3>      可以在 webpack.config.js 中设置,也可以在 package.json 中设置,或者在 cmd 中输入命令时加上</h3> <h3>2. 在 webpack4.0 之前</h3> <h3>      使用 uglify 插件</h3> <h3>      1. 安装</h3> <h3>      npm install uglifyjs-webpack-plugin -D</h3> <h3>      2. 使用</h3> <div class="image-package"> <div class="image-container" style="max-width: 631px; max-height: 136px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/1845b98209914f7a8c950605daf288aa.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/1845b98209914f7a8c950605daf288aa.jpg" width="631" height="136" alt="webpack4.0_第11张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"> 1-1-8.PNG </div> </div> <p><br><br></p> <h1>url-loader,file-loader</h1> <h3>1. 安装</h3> <h3>      npm install url-loader file-loader -D</h3> <h3>2. 使用</h3> <h3>      无需在 webpack.config.js 中用变量引入,在 webpack.config.js 中的配置如下</h3> <p></p> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 369px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/8ad40ce0868e413699e54c27dd381ccd.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/8ad40ce0868e413699e54c27dd381ccd.jpg" width="650" height="221" alt="webpack4.0_第12张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"> 1-1-9.PNG </div> </div> <br> <br> <br> <p></p> <h1>less,less-loader</h1> <h3>1. 安装</h3> <h3>      npm install less less-loader -D</h3> <h3>2. 使用,在 webpack.config.js 中的配置</h3> <h3>      1. 在 module 中进行配置</h3> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 209px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/a81405c41cb949e9b41189b3ff9afede.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/a81405c41cb949e9b41189b3ff9afede.jpg" width="650" height="111" alt="webpack4.0_第13张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"> 1-1-10.PNG </div> </div> <h3>      2. 在 js 文件中通过 import from 将 less 文件引入</h3> <p><br><br></p> <h1>node-sass,sass-loader</h1> <h3>1. 安装</h3> <h3>      npm install node-sass sass-loader -D</h3> <h3>2. 使用,在 webpack.config.js 中的配置如下</h3> <h3>      1. 在 module 中进行配置</h3> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 161px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/af3d129a2ee042efaaf978e73639d736.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/af3d129a2ee042efaaf978e73639d736.jpg" width="650" height="88"></a> </div> </div> <div class="image-caption"> 1-1-11.PNG </div> </div> <h3>      2. 在 js 文件中通过 import from 将 sass 文件引入</h3> <p><br><br></p> <h1>css,less,sass 文件的分离</h1> <h1>extract-text-webpack-plugin</h1> <h3>1. 安装</h3> <h3>      npm install extract-text-webpack-plugin -D</h3> <h3>2. 使用,在 webpack.config.js 中的配置如下</h3> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 464px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/0eb7bc5bcc15456e93dc85f8804593ef.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/0eb7bc5bcc15456e93dc85f8804593ef.jpg" width="650" height="431" alt="webpack4.0_第14张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"> 1-1-12.PNG </div> </div> <h3>3. 问题</h3> <h3>      1. 图片路径的问题</h3> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 156px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/50ebecf379204aa996a4ee41513f5caf.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/50ebecf379204aa996a4ee41513f5caf.jpg" width="650" height="101" alt="webpack4.0_第15张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"> 1-1-13.PNG </div> </div> <h3>      2. extract-text-webpack-plugin 版本问题</h3> <p></p> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 137px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/e374588d23124f6fbb8ef0c5be30a950.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/e374588d23124f6fbb8ef0c5be30a950.jpg" width="650" height="99"></a> </div> </div> <div class="image-caption"> 1-1-14.PNG </div> </div> <br> <br> <br> <p></p> <h1>postcss-loader,autoprefixer</h1> <h3>处理 css 文件因为浏览器的不同而产生的前缀(webkit,moz,ms,o),自动添加前缀</h3> <h3>1. 安装</h3> <h3>      npm install postcss-loader autoprefixer -D</h3> <h3>2. 使用</h3> <h3>      1. 在项目目录中首先生成一个 postcss.config.js 配置文件,配置如下</h3> <div class="image-package"> <div class="image-container" style="max-width: 374px; max-height: 181px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/33b676da83e34c0498fbb4f4113dea4b.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/33b676da83e34c0498fbb4f4113dea4b.jpg" width="374" height="181" alt="webpack4.0_第16张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"> 1-1-15.PNG </div> </div> <h3>      2. 在 webpack.config.js 文件中 module 下面的 rules 中的配置如下</h3> <p></p> <div class="image-package"> <div class="image-container" style="max-width: 530px; max-height: 234px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/3b7df861f2724398ad802bcdffb7a050.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/3b7df861f2724398ad802bcdffb7a050.jpg" width="530" height="234" alt="webpack4.0_第17张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"> 1-1-16.PNG </div> </div> <br> <br> <br> <p></p> <h1>purify-css,purifycss-webpack</h1> <h3>消除冗余的 css 文件</h3> <h3>1. 安装</h3> <h3>      npm install purify-css purifycss-webpack -D</h3> <h3>2. 使用,在 webpack.config.js 文件中 plugins 中配置如下</h3> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 149px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/03e8924bc15949a08b512276ed2b8e11.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/03e8924bc15949a08b512276ed2b8e11.jpg" width="650" height="95"></a> </div> </div> <div class="image-caption"> 1-1-17.PNG </div> </div> <h3>3. 需要引入 glob 扫描模块</h3> <h3>      npm install glob -D</h3> <p><br><br></p> <h1>babel</h1> <h3>babel 用来编译 js,jsx,ESnext(浏览器无法转化的 js 代码)</h3> <h3>1. 安装(babel-loader,babel-core,babel-preset-env)</h3> <h3>      npm install babel-loader babel-core babel-preset-env -D</h3> <h3>2. 使用</h3> <h3>      1. 在 webpack.config.js 中 modules 中的 rules 的配置如下</h3> <h3>            第一种方式,这种方式需要配置 .babelrc 文件</h3> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 218px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/9123b4bb4a804790baba4e1fc7a8e4ea.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/9123b4bb4a804790baba4e1fc7a8e4ea.jpg" width="650" height="184" alt="webpack4.0_第18张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"></div> </div> <h3>            </h3> <p>新建 .babelrc 配置文件,配置如下</p> <br> <div class="image-package"> <div class="image-container" style="max-width: 227px; max-height: 176px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/7b0b5775f5024609855b1bcd33b3bda7.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/7b0b5775f5024609855b1bcd33b3bda7.jpg" width="227" height="176" alt="webpack4.0_第19张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"> 1-1-20.PNG </div> </div> <h3>            第二种方式,这种方式不需要配置 .babelrc 文件</h3> <p></p> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 380px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/5a7f7bf887c64b4d8ec9849fc0a3ffb9.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/5a7f7bf887c64b4d8ec9849fc0a3ffb9.jpg" width="650" height="321" alt="webpack4.0_第20张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"> 1-1-19.PNG </div> </div> <br> <br> <br> <p></p> <h1>babel-preset-react,react,react-dom</h1> <h3>将 jsx 语法转化为浏览器支持的语法</h3> <h3>1. 安装</h3> <h3>      npm install babel-preset-react react react-dom -D</h3> <h3>2. 使用</h3> <h3>      1. 因为之前配置 js 时已加上 jsx 所以 webpack.config.js 无需再配置</h3> <h3>      2. 在 .babelrc 中加上 react 如下</h3> <div class="image-package"> <div class="image-container" style="max-width: 327px; max-height: 200px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/3e201ae2d47445f497bdde35e563c77f.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/3e201ae2d47445f497bdde35e563c77f.jpg" width="327" height="200" alt="webpack4.0_第21张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"> 1-1-21.PNG </div> </div> <h3>      3. 在写了 jsx 的 js 文件中引入 react</h3> <h3>            通过 import React from 'react' 引入</h3> <p><br><br></p> <h1>copy-webpack-plugin</h1> <h3>静态资源输出,将 src 中的说明,图片等不需要打包的文件直接 copy 到 dist 文件夹中</h3> <h3>1. 安装</h3> <h3>      npm install copy-webpack-plugin -D</h3> <h3>2. 使用,在 webpack.config.js 中配置如下</h3> <p></p> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 319px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/da9f965b233648da83445dae234155b2.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/da9f965b233648da83445dae234155b2.jpg" width="650" height="285" alt="webpack4.0_第22张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"> 1-1-22.PNG </div> </div> <br> <br> <br> <p></p> <h1>引入第三方库</h1> <h3>1. 直接使用 npm 下载库(bootstrap,jquery等)</h3> <h3>      不建议使用,因为会直接会将整个库引入打包文件中,不管是否使用了</h3> <h3>2. ProvidePlugin</h3> <h3>      使用到库时才会打包</h3> <h3>            是 webpack 中的一个包,只要安装了 webpack 就可以使用</h3> <h3>            在 webpack.config.js 文件中的 plugins 中的配置如下</h3> <p></p> <div class="image-package"> <div class="image-container" style="max-width: 541px; max-height: 151px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/e7c64931c9764d708e3407735fc9897c.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/e7c64931c9764d708e3407735fc9897c.jpg" width="541" height="151" alt="webpack4.0_第23张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"> 1-1-23.PNG </div> </div> <br> <br> <br> <p></p> <h1>optimzation</h1> <h3>将库分开打包并以不同的 srcipt 标签写入 html 文件中</h3> <h3>使用,是 webpack 中的一个包不需要 npm 安装,在 webpack.config.js 文件中的配置如下</h3> <p></p> <div class="image-package"> <div class="image-container" style="max-width: 399px; max-height: 418px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/b2028dde8da04b5abaecd813cb5af598.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/b2028dde8da04b5abaecd813cb5af598.jpg" width="399" height="418" alt="webpack4.0_第24张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"> 1-1-24.PNG </div> </div> <br> <br> <br> <p></p> <h3>下载的包都在 package.json 中有记录如下</h3> <div class="image-package"> <div class="image-container" style="max-width: 611px; max-height: 1033px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/abc269aead5042aa90d81e75cbd4c22d.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/abc269aead5042aa90d81e75cbd4c22d.jpg" width="611" height="902" alt="webpack4.0_第25张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"> 1-1-25.PNG </div> </div> <h3>项目文件夹中也会有 node_modules 本地安装的包都在改文件夹下</h3> <p><br><br></p> <h3>生成的被打包文件夹 src 目录如下</h3> <p></p> <div class="image-package"> <div class="image-container" style="max-width: 269px; max-height: 453px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/b44328c17f2b458090df6e101845c9a3.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/b44328c17f2b458090df6e101845c9a3.jpg" width="269" height="453" alt="webpack4.0_第26张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"> 1-1-26.PNG </div> </div> <br> <br> <br> <p></p> <h3>生成的配置文件目录如下</h3> <p></p> <div class="image-package"> <div class="image-container" style="max-width: 235px; max-height: 185px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/ba5711ffbb944b1f83f2af6b039f5fbd.png" target="_blank"><img src="http://img.e-com-net.com/image/info10/ba5711ffbb944b1f83f2af6b039f5fbd.png" width="235" height="185" alt="webpack4.0_第27张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"> 1-1-27.PNG </div> </div> <br> <br> <br> <p></p> <h3>打包过后的 dist 文件夹目录如下</h3> <p></p> <div class="image-package"> <div class="image-container" style="max-width: 304px; max-height: 314px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/da4b6e149bb24c088dc6ac4496b49e5f.png" target="_blank"><img src="http://img.e-com-net.com/image/info10/da4b6e149bb24c088dc6ac4496b49e5f.png" width="304" height="314" alt="webpack4.0_第28张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"> 1-1-28.PNG </div> </div> <br> <br> <br> <p></p> <h1>webpack.config.js 配置文件</h1> <pre><code>const path = require("path"); const html = require("html-webpack-plugin"); const webpack = require("webpack"); const clean = require("clean-webpack-plugin"); const eXtract = require("extract-text-webpack-plugin"); const purify = require("purifycss-webpack") const glob = require("glob"); const rules = require("./webpack.rules.js"); const jsonConfig = require("./webpack.config.json"); const copyWebpackPlugin = require("copy-webpack-plugin"); // 打印路径 console.log('***************', path.join(__dirname, 'src/index.html')); console.log('---------------', path.resolve(__dirname, 'src/index.html')); console.log(jsonConfig); module.exports = { entry: { index: './src/index.js', jquery: 'jquery' }, output: { path: path.resolve(__dirname, 'dist'), filename: '[name].bundle.js' }, devServer: { contentBase: path.resolve(__dirname, 'dist'), host: jsonConfig.host, port: jsonConfig.port, open: true, hot: true }, plugins: [ new webpack.HotModuleReplacementPlugin(), new html({ title: '牧师', template: './src/index.html', hash: true }), // css 文件打包出去的文件路径,即将在 dist 文件夹下生成一个 css 文件夹,文件夹中存入 index.css 文件 new eXtract('css/index.css'), new purify({ // 扫描同步下的 html 文件,purifycss 会根据 html 文件中的 css 将冗余的 css 文件删除 // sync 同步配置 paths: glob.sync(path.join(__dirname, 'src/*.html')) }), // 静态资源输出 new copyWebpackPlugin([{ // 要 copy 的文件在哪里 from: path.resolve(__dirname, 'src/asserts'), // copy 到哪里去 to: './public' }]), new webpack.ProvidePlugin({ // 文件中使用了 jquery 库时,会打包该库 $: 'jquery' }) ], // 将 module 中的配置放入 webpack.rules.js 文件中,引入 webpack.config.js 中,即写成模块 // module: rules module: { rules: [ { // 正则匹配 test: /\.css$/, // use: [ // // 引入 style-loader 和 css-loader 中间件 // {loader: 'style-loader'}, // {loader: 'css-loader'} // ] // use: eXtract.extract({ fallback: 'style-loader', use: ['css-loader', 'postcss-loader'], // 配置背景图的路径 publicPath: '../' }) }, { test: /\.(js|jsx)$/, use: ['babel-loader'], // 不包含 node_modules 目录中的 js/jsx 文件 exclude: /node_modules/ }, { test: /\.less$/, // // loader 加载从右到左,先经过 less-loader文件,再经过 css-loader 文件,最后经过 style-loader 文件 // // 这种配置下 less 样式存在 html 页面中 style 标签中,dist 文件夹中的 html 也不会显示 // use: ['style-loader', 'css-loader', 'less-loader'] use: eXtract.extract({ // 将 less 生成的 css 文件分离出来,加在 css 文件中 fallback: 'style-loader', use: ['css-loader', 'less-loader'] }) }, { test: /\.(sass|scss)$/, // use: ['style-loader', 'css-loader', 'sass-lo'] use: eXtract.extract({ fallback: 'style-loader', use: ['css-loader', 'sass-loader'] }) }, { test: /\.(png|jpg|gif)$/, use: [{ // 引入 url-loader 中间件 loader: 'url-loader', // 当图片大于 50 字节即 50 兆,便会在前端页面显示相对路径,反之,则转换为 base64 的图片 options: { // 50 字节 limit: 50, // 图片打包出去的目录 outputPath: 'img' } }] } ] }, // 将不同的库分开打包,分别进入 html 文件中,vender 名字可变 optimization: { splitChunks: { cacheGroups: { vender: { chunks: 'initial', // 对应 entry 中的名称 name: 'jquery', enforce: true } } } } }; </code></pre> <p><br><br></p> <h3>该学习笔记对各包介绍并未完整,如果想对各个包了解更加全面请进入 npm 官网https://www.npmjs.com </h3> </article> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1276039029443280896"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(webpack4.0)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1834925082288418816.htm" title="四、webpack4.0 - tapable" target="_blank">四、webpack4.0 - tapable</a> <span class="text-muted">Razas</span> <a class="tag" taget="_blank" href="/search/WEBPACK4/1.htm">WEBPACK4</a><a class="tag" taget="_blank" href="/search/webpack4.0/1.htm">webpack4.0</a> <div>一、tapable介绍webpack中插件的时候,需要用到tapable。新建一个项目WEBPACK-Tapable。初始化package.json:npminit-y安装:npminstalltapable--savetapable是一个包。二、tapable三、AsyncParralleHook四、AsyncSeriesHook五、AsyncSeriesWaterfall</div> </li> <li><a href="/article/1756496021547925504.htm" title="【01】webpack4.0教程_基础_1" target="_blank">【01】webpack4.0教程_基础_1</a> <span class="text-muted">Peter_Tingle</span> <div>学习webpack4.0的笔记,循序渐进,后续会再做系统总结[toc]webpack安装总结安装本地的webpackwebpackwebpack-cli-D加一个-D表示开发依赖上线的时候不需要这两个包流程:初始化项目生成package.json记录依赖yarninit-y或者npminit-y安装webpack和webpack-cli(webpack4.0需要安装webpack和webpack-</div> </li> <li><a href="/article/1753401112406278144.htm" title="关于webpack4.0及以上版本差别" target="_blank">关于webpack4.0及以上版本差别</a> <span class="text-muted">等不到戈多了</span> <div>关于webpack版本如果没有限定版本,4.0以上会有些许差别,请注意:1,npminfowebpack2,webpack-v查看版本号如果没有出现,npminstall--globalwebpack-cli,因为注意:webpack4x以上,webpack将命令相关的内容都放到了webpack-cli,所以还需要安装webpack-cli;之后再webpack-v例如:webpack5.50.0</div> </li> <li><a href="/article/1739504753550835712.htm" title="Webpack4.0配置过程以及调试" target="_blank">Webpack4.0配置过程以及调试</a> <span class="text-muted">忧忧自恼</span> <div>1.前提确保本地环境支持node.js。2.配置https://webpack.js.org/guides/getting-started/https://segmentfault.com/a/1190000006178770</div> </li> <li><a href="/article/1731440600076595200.htm" title="webpack打包html修改变量,webpack4.0打包优化策略(二)" target="_blank">webpack打包html修改变量,webpack4.0打包优化策略(二)</a> <span class="text-muted">weixin_39817391</span> <div>打包优化策略区分开发和生产环境通常我们在开发网页时需要区分构建环境开发环境(development)开发过程中方便开发调试的环境生产环境(production)发布到线上使用的运行环境通过npm命令区分通过cross-env模块设置环境变量cross-env跨平台地设置及使用环境变量,而不必担心为平台正确设置或使用环境变量。npmicross-env-D复制代码Usagenpmscripts中:{</div> </li> <li><a href="/article/1719595594386845696.htm" title="webpack4.0安装教程与基本命令" target="_blank">webpack4.0安装教程与基本命令</a> <span class="text-muted">暖男Gatsby</span> <div>1首先确认nodejs的版本号在8.9.4以上,不然无法支持webpack4.0。根目录下输入cmd命令npmiwebpack-cli-g(安装全局的webpack)。2单个文件的打包压缩:安装成功后,在src文件夹中写入入口文件index.js及其依赖js文件,这时执行webpack--modedevelopment命令之后将会默认src下面的index.js文件为入口文件,并在dist文件夹下</div> </li> <li><a href="/article/1714818773388701696.htm" title="webpack看这一篇就够了,webpack4.0配置详解。" target="_blank">webpack看这一篇就够了,webpack4.0配置详解。</a> <span class="text-muted">老王brave</span> <div>webpack看这一篇就够了,webpack4.0配置详解。什么是webpack,webpack给我们解决了哪些实际问题?什么是webpack?webpack它是基于Node.js开发出来的是前端的一个项目构建工具。webpack给我们解决了哪些实际的问题?你是否和我一样整天被这种包与包之间的依赖关系搞得头皮发麻。比如你需要用到easyUI那么你就得引入jQuery,并且jQuery必须在easy</div> </li> <li><a href="/article/1711382121890787328.htm" title="mini-css-extract-plugin插件快速入门" target="_blank">mini-css-extract-plugin插件快速入门</a> <span class="text-muted">mn_front</span> <a class="tag" taget="_blank" href="/search/webpack/1.htm">webpack</a> <div>前言webpack4.0以前,我们通过extract-text-webpack-plugin插件,把css样式从js文件中提取到单独的css文件中。extract-text-webpack-plugin插件的优缺点:更多介绍请看移步:webpack.docschina.org/plugins/ext…webpack4.0以后,官方推荐使用mini-css-extract-plugin插件来打包cs</div> </li> <li><a href="/article/1708938579893366784.htm" title="前端每周清单第 52 期: Webpack 4.0,GraphQL 安全加固,去中心化的 Web" target="_blank">前端每周清单第 52 期: Webpack 4.0,GraphQL 安全加固,去中心化的 Web</a> <span class="text-muted">weixin_34228387</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/webpack/1.htm">webpack</a><a class="tag" taget="_blank" href="/search/%E5%8C%BA%E5%9D%97%E9%93%BE/1.htm">区块链</a><a class="tag" taget="_blank" href="/search/ViewUI/1.htm">ViewUI</a> <div>前端每周清单第52期:Webpack4.0,GraphQL安全加固,去中心化的Web作者:王下邀月熊编辑:徐川前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点;分为新闻热点、开发教程、工程实践、深度阅读、开源项目、巅峰人生等栏目。欢迎关注【前端之巅】微信公众号(ID:frontshow),及时获取前端每周清单。新闻热点国内国外,前端最新动态Webpack4.0.0发</div> </li> <li><a href="/article/1705319844045467648.htm" title="2018-12-13 ,使用webpack基础" target="_blank">2018-12-13 ,使用webpack基础</a> <span class="text-muted">ChaliceLee92</span> <div>1.全局安装webpack,终端执行命令:npmiwebpackwebpack-cli-g创建文件夹,新建一个entry.js入口文件,书写内容运行命令webpackentry.js-obundle.js--mode=development这句命令就是打包这个entry.js文件,会生成一个bundle.js文件,webpack4.0需要--mode--mode后面的命令是开发环境或者生成环境pr</div> </li> <li><a href="/article/1696578780493066240.htm" title="前端必备知识" target="_blank">前端必备知识</a> <span class="text-muted">海伦•</span> <div>1.JQuery,网络,CSS3,H5,2.ES6,webpack4.0,git,小程序设计模式,3.VUE,VUEX,VUE源码,React,Node.js,MongoDB数据库等等</div> </li> <li><a href="/article/1692439262240256000.htm" title="webpack4.0 进阶" target="_blank">webpack4.0 进阶</a> <span class="text-muted">alipy_258</span> <div>上一篇,总结了webpack4.0基础,其中包括:核心的entry、output、mode、loaders、plugins;解析图片、字体;解析Css、Less、Sass文件指纹策略:hash、contenthash、chunkhash代码压缩接下来,我总了一些进阶方案,记录分享下~px自动转remW3C对rem的定义:font-sizeoftherootelementrem对px的对比:rem是</div> </li> <li><a href="/article/1686328594160234496.htm" title="webpack4.0入门实践" target="_blank">webpack4.0入门实践</a> <span class="text-muted">seepDown</span> <div>npminit-y创建package.json文件npminstall-Dwebpackwebpack-cli命令行打包:node_modules/.bin/webpack需要打包的文件地址--output目标文件地址eq:node_modules/.bin/webpackindex.js--outputdist/bundle.js文件配置:eq:一个手动创建的.js文件依赖jquery.js进行</div> </li> <li><a href="/article/1685712643014340608.htm" title="webpack4.0使用时提示npm install webpack-cli -D的问题" target="_blank">webpack4.0使用时提示npm install webpack-cli -D的问题</a> <span class="text-muted">Jerry379</span> <div>最近在看关于vue的书,在使用webpack构建项目时,遇到如下问题:>webstormproject@1.0.0dev/Users/********/WebstormProjects/webstormProject>webpack-dev-server--open--configwebpack.config.jsTheCLImovedintoaseparatepackage:webpack-cl</div> </li> <li><a href="/article/1681669372055203840.htm" title="Vue2/3 config里配置publicPath/base之后proxy的配置修改" target="_blank">Vue2/3 config里配置publicPath/base之后proxy的配置修改</a> <span class="text-muted">GIS小虫</span> <a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>记录一下module.exports={publicPath:'/myProject',devServer:{disableHostCheck:true,//webpack4.0开启热更新proxy:{'/localApi':{target:'http://ip:port/api/',changeOrigin:true,pathRewrite:{'/myProject/localApi':''},</div> </li> <li><a href="/article/1647499283672371200.htm" title="webpack编译优化" target="_blank">webpack编译优化</a> <span class="text-muted">roger1253</span> <div>升级webpack版本至4.x使用happypack进行多线程编译webpack4.0发布后happypack已经不维护,使用webpack自带的thread-loader可以达到同样效果配置DllPlugin,减少稳定依赖包的编译时间配置BundleAnalyzerPlugin,分析打包体积,将体积较大的依赖包换成cdn载入的方式代码分块,组件按需加载</div> </li> <li><a href="/article/1644117409763745792.htm" title="webpack4.0 基础" target="_blank">webpack4.0 基础</a> <span class="text-muted">alipy_258</span> <div>前端构建工具对比作用:把源代码转换成发布到线上的可执行JSCSSHTML代码;代码转换、文件优化、代码分割、模块合并、自动刷新、自动发布、代码校验对比:Grunt、Gulp:集成度不高,没法开箱即用Fis3:官方团队不再维护;也不支持最新的nodeRollup:生态链、功能都不够完善;不支持CodeSplitingWebpack:采用模块化开发的项目;社区活跃、配置灵活、插件化扩展、官方更新迭代快</div> </li> <li><a href="/article/1643183808570253312.htm" title="webpack 打包出错相关问题(WARNING in Configuration)" target="_blank">webpack 打包出错相关问题(WARNING in Configuration)</a> <span class="text-muted">thekings</span> <div>前言:有许多人webpack安装成功,webpack出现打包失败的问题。一、问题一:4.0以上版本的webpack的问题webpack4.0以上版本的webpack的脚手架webpack-cli已经被被分离出来了,需要另外安装。安装命令:npminstallwebpack--gnpminstallwebpack-cli--g安装成功后如果像上篇文章中那样输入打包命令:webpacka.jspack</div> </li> <li><a href="/article/1642729489102331904.htm" title="webpack 4.0 完全讲解及源码解读(1)" target="_blank">webpack 4.0 完全讲解及源码解读(1)</a> <span class="text-muted">公羊无衣</span> <div>webpack4.0完全讲解及源码解读就目前前端环境而言,使用cli自动构建工具可以快速的构建项目完成项目搭建,快速完成功能,业务开发,这样水到渠成的模式深得人心,也深得科技公司信赖,因为简单,易用且方便,但是对于使用webpack构建一个0-1的项目,可能很多人只能摊手,不得不说webpack是前端工程化之中占有相当重要地位的成员,本篇文章就来说一下webpack的使用教你从0到1构建一个企业级</div> </li> <li><a href="/article/1637089744833798144.htm" title="4. webpack4.0 热跟新`webpack-dev-server`的使用" target="_blank">4. webpack4.0 热跟新`webpack-dev-server`的使用</a> <span class="text-muted">小白菜的白菜</span> <div>devserver简介--webpack-dev-server解决的问题-提供http服务-监听文件变化、实时刷新-支持SourceMap方便调试上代码1.安装webpack-dev-servernpmi-Dwebpack-dev-server运行webpack-dev-server命令node_modules/.bin/webpack-dev-server网上给的webpack-dev-serv</div> </li> <li><a href="/article/1636549339654447104.htm" title="webpack4.0 优化" target="_blank">webpack4.0 优化</a> <span class="text-muted">alipy_258</span> <div>上一篇,总结了webpack4.0进阶,其中包括:px自动转remTreeShaking的使用和原理分析ScopeHositing使用和原理分析优化构建命令行的显示日志这篇,我们从两速度和体积来分析代码,进行优化。速度分析插件:speed-measure-webpack-plugin作用:分析整个打包总耗时每个loader和插件的耗时情况代码如下:image.png体积分析插件:webpack-b</div> </li> <li><a href="/article/1634110837645959168.htm" title="第1讲 使用vue-cli3.0创建项目" target="_blank">第1讲 使用vue-cli3.0创建项目</a> <span class="text-muted">喔喔牛在路上</span> <div>vue-cli3.0是基于webpack4.0之上构建的vue脚手架工具,得益于webpack4.0的零配置特性,使得在使用vue-cli3.0时,零配置就可以开发和打包vue项目vue-cli3.0及更高版本为了区别vue-cli1.0和vue-cli2.0,名字更改成了@vue/cli,如果你的电脑已经安装了比如vue-cli2.0,需要卸载它,然后安装@vue/cli,不用担心安装了更高版本</div> </li> <li><a href="/article/1620502694378635264.htm" title="webpack 5 background-image 图片引入问题" target="_blank">webpack 5 background-image 图片引入问题</a> <span class="text-muted">躺希腊额阿毛</span> <div>最初的时候因为没仔细阅读文档,所以沿用的4.0的写法。然后发现scss里的background能引入不报错,但是展示不出来,但是tsx文件能正常引入。最初以为是scss的问题,尝试了resolve-url-loader,并没用,后来老大查文档才发现重点,在此记录下。image.png'javascript/auto'有尝试过,并没有成功,也不知道是不是写法问题webpack4.0的写法rules:</div> </li> <li><a href="/article/1494939822891008000.htm" title="从基础到实战 手把手带你掌握新版Webpack4.0(学习笔记)" target="_blank">从基础到实战 手把手带你掌握新版Webpack4.0(学习笔记)</a> <span class="text-muted">li_shifeng</span> <div>01webpack初探-导学传统编程的弊端以前使用面向对象编程,页面需要引入多个js,造成多个请求,影响加载,需要注意引用的顺序,使用时无法直接从js里看出文件的层级关系,一旦出错调试很麻烦///index.html///header.jsfunctionHeader(){varroot=document.getElementById('root')varheader=document.creat</div> </li> <li><a href="/article/1493694966147342336.htm" title="webpack实例教程(四)webpack4.0出来了" target="_blank">webpack实例教程(四)webpack4.0出来了</a> <span class="text-muted">youfrweb</span> <div>webpack实例教程(一)安装和查看webpack实例教程(二)hotUglifywebpack实例教程(三)loaderwebpack实例教程(四)webpack4.0出来了这次还准备按照以前的方法使用webpack,but各种报错,都是原来你没见过的,还好提示的很明显,webpack-cli从webpack包里面分离出来了,所以需要自己安装啦!具体报错是这样的:$npxwebpacksrc/</div> </li> <li><a href="/article/1492015927389085696.htm" title="webpack4.0 基础准备" target="_blank">webpack4.0 基础准备</a> <span class="text-muted">Echonessy</span> <div>webpack官方文档地址链接,本文主要介绍开始webpack前的准备工作。前言为什么要引入webpack  随着前端工程越来越复杂,单独创建htmljscss的方式已经无法保证项目的可维护性,所以我们就需要考虑把不同的业务逻辑拆分成模块,然后分开引入这些模块,每个模块做自己的事情,这样就可以保证项目的可维护性和可扩展性了。假如我们一个复杂的工程需要几千个js文件,我们不可能引入几千个js文件,所</div> </li> <li><a href="/article/1491498437206630400.htm" title="webpack4.0从零到一搭建vue项目框架 vue + vue-router + vuex + hot + 换肤 + moke..." target="_blank">webpack4.0从零到一搭建vue项目框架 vue + vue-router + vuex + hot + 换肤 + moke...</a> <span class="text-muted">夜雨渐停丶我独行</span> <div>主要内容一.初始化工程项目二.添加热部署三.添加vue套餐四.添加换肤功能五.添加项目端口提示六.添加axios并二次封装七.添加moke.js模拟后端数据八.设置环境变量一.初始化工程项目生成基础项目npminit-y创建src、dist目录,src/main.js、index.html、webpack.config.js文件目录如下project├──dist├──src│└──main.js</div> </li> <li><a href="/article/1403836979841388544.htm" title="webpack4.0 入门篇 - 构建前端开发的基本环境" target="_blank">webpack4.0 入门篇 - 构建前端开发的基本环境</a> <span class="text-muted">不吃早餐a</span> <div>image什么是webpackwebpack可以看做是模块打包机:他做的事情是,分析你的项目结构,找到JavaScript模块以及其他的一些浏览器不能直接运行的扩展语言(Scss、TypeScript等),将其打包为合适的格式以供浏览器使用构建就是把源代码转换成发布到线上可执行的JavaScript、CSS、HTML代码,包括以下内容:代码转换:TypeScript编译成JavaScript、SC</div> </li> <li><a href="/article/1403772429955813376.htm" title="webpack、grunt、gulp" target="_blank">webpack、grunt、gulp</a> <span class="text-muted">jie_zhao</span> <div>webpack-概念:是一个现代js应用程序的静态模块打包器。webpack4和3的区别如下:1、从webpack4.0开始,可以不用引入一个配置文件。(当然你也可以配置一些东西)2、不仅要安装webpack,还要安装webpack-cli3、增加mode配置(development|production)。对不同的环境启用不同的配置4、去掉了CommonsChunkPlugin(改成optimi</div> </li> <li><a href="/article/1403550736435957760.htm" title="webpack4.0手动配置vue+ts" target="_blank">webpack4.0手动配置vue+ts</a> <span class="text-muted">浅浅婷</span> <div>撸起袖子直接干就完事了第一版:项目结构首先安装node环境,不概述了。然后安装一下webpack的依赖:npmiwebpackwebpackwebpack-cli-D然后配置webpack.config.js。由于开发环境和生产环境的配置有公用的部分。所以把公共部分提取出来。webpack.base.conf.js:首先:npmihtml-webpack-plugin-D(这个plugin的作用是</div> </li> <li><a href="/article/83.htm" title="java线程的无限循环和退出" target="_blank">java线程的无限循环和退出</a> <span class="text-muted">3213213333332132</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>最近想写一个游戏,然后碰到有关线程的问题,网上查了好多资料都没满足。 突然想起了前段时间看的有关线程的视频,于是信手拈来写了一个线程的代码片段。 希望帮助刚学java线程的童鞋 package thread; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date</div> </li> <li><a href="/article/210.htm" title="tomcat 容器" target="_blank">tomcat 容器</a> <span class="text-muted">BlueSkator</span> <a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/servlet/1.htm">servlet</a> <div>Tomcat的组成部分 1、server A Server element represents the entire Catalina servlet container. (Singleton) 2、service service包括多个connector以及一个engine,其职责为处理由connector获得的客户请求。   3、connector 一个connector</div> </li> <li><a href="/article/337.htm" title="php递归,静态变量,匿名函数使用" target="_blank">php递归,静态变量,匿名函数使用</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/%E9%80%92%E5%BD%92%E5%87%BD%E6%95%B0/1.htm">递归函数</a><a class="tag" taget="_blank" href="/search/%E5%8C%BF%E5%90%8D%E5%87%BD%E6%95%B0/1.htm">匿名函数</a><a class="tag" taget="_blank" href="/search/%E9%9D%99%E6%80%81%E5%8F%98%E9%87%8F/1.htm">静态变量</a><a class="tag" taget="_blank" href="/search/%E5%BC%95%E7%94%A8%E4%BC%A0%E5%8F%82/1.htm">引用传参</a> <div>  <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Current To-Do List</title> </head> <body></div> </li> <li><a href="/article/464.htm" title="属性颜色字体变化" target="_blank">属性颜色字体变化</a> <span class="text-muted">周华华</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a> <div>function changSize(className){ var diva=byId("fot") diva.className=className; } </script> <style type="text/css"> .max{ background: #900; color:#039; </div> </li> <li><a href="/article/591.htm" title="将properties内容放置到map中" target="_blank">将properties内容放置到map中</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/properties/1.htm">properties</a> <div>代码比较简单: private static Map<Object, Object> map; private static Properties p; static { //读取properties文件 InputStream is = XXX.class.getClassLoader().getResourceAsStream("xxx.properti</div> </li> <li><a href="/article/718.htm" title="[简单]拼接字符串" target="_blank">[简单]拼接字符串</a> <span class="text-muted">53873039oycg</span> <a class="tag" taget="_blank" href="/search/%E5%AD%97%E7%AC%A6%E4%B8%B2/1.htm">字符串</a> <div>         工作中遇到需要从Map里面取值拼接字符串的情况,自己写了个,不是很好,欢迎提出更优雅的写法,代码如下:           import java.util.HashMap; import java.uti</div> </li> <li><a href="/article/845.htm" title="Struts2学习" target="_blank">Struts2学习</a> <span class="text-muted">云端月影</span> <div>最近开始关注struts2的新特性,从这个版本开始,Struts开始使用convention-plugin代替codebehind-plugin来实现struts的零配置。 配置文件精简了,的确是简便了开发过程,但是,我们熟悉的配置突然disappear了,真是一下很不适应。跟着潮流走吧,看看该怎样来搞定convention-plugin。 使用Convention插件,你需要将其JAR文件放</div> </li> <li><a href="/article/972.htm" title="Java新手入门的30个基本概念二" target="_blank">Java新手入门的30个基本概念二</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%96%B0%E6%89%8B/1.htm">新手</a><a class="tag" taget="_blank" href="/search/java+%E5%85%A5%E9%97%A8/1.htm">java 入门</a> <div>基本概念:  1.OOP中唯一关系的是对象的接口是什么,就像计算机的销售商她不管电源内部结构是怎样的,他只关系能否给你提供电就行了,也就是只要知道can or not而不是how and why.所有的程序是由一定的属性和行为对象组成的,不同的对象的访问通过函数调用来完成,对象间所有的交流都是通过方法调用,通过对封装对象数据,很大限度上提高复用率。  2.OOP中最重要的思想是类,类是模板是蓝图,</div> </li> <li><a href="/article/1099.htm" title="jedis 简单使用" target="_blank">jedis 简单使用</a> <span class="text-muted">antlove</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/cache/1.htm">cache</a><a class="tag" taget="_blank" href="/search/command/1.htm">command</a><a class="tag" taget="_blank" href="/search/jedis/1.htm">jedis</a> <div>jedis.RedisOperationCollection.java package jedis; import org.apache.log4j.Logger; import redis.clients.jedis.Jedis; import java.util.List; import java.util.Map; import java.util.Set; pub</div> </li> <li><a href="/article/1226.htm" title="PL/SQL的函数和包体的基础" target="_blank">PL/SQL的函数和包体的基础</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/PL%2FSQL%E7%BC%96%E7%A8%8B%E5%87%BD%E6%95%B0/1.htm">PL/SQL编程函数</a><a class="tag" taget="_blank" href="/search/%E5%8C%85%E4%BD%93%E6%98%BE%E7%A4%BA%E5%8C%85%E7%9A%84%E5%85%B7%E4%BD%93%E6%95%B0%E6%8D%AE/1.htm">包体显示包的具体数据</a><a class="tag" taget="_blank" href="/search/%E5%8C%85/1.htm">包</a> <div>由于明天举要上课,所以刚刚将代码敲了一遍PL/SQL的函数和包体的实现(单例模式过几天好好的总结下再发出来);以便明天能更好的学习PL/SQL的循环,今天太累了,所以早点睡觉,明天继续PL/SQL总有一天我会将你永远的记载在心里,,,   函数; 函数:PL/SQL中的函数相当于java中的方法;函数有返回值 定义函数的 --输入姓名找到该姓名的年薪 create or re</div> </li> <li><a href="/article/1353.htm" title="Mockito(二)--实例篇" target="_blank">Mockito(二)--实例篇</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/1.htm">持续集成</a><a class="tag" taget="_blank" href="/search/mockito/1.htm">mockito</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/1.htm">单元测试</a> <div>        学习了基本知识后,就可以实战了,Mockito的实际使用还是比较麻烦的。因为在实际使用中,最常遇到的就是需要模拟第三方类库的行为。         比如现在有一个类FTPFileTransfer,实现了向FTP传输文件的功能。这个类中使用了a</div> </li> <li><a href="/article/1480.htm" title="精通Oracle10编程SQL(7)编写控制结构" target="_blank">精通Oracle10编程SQL(7)编写控制结构</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/plsql/1.htm">plsql</a> <div>/* *编写控制结构 */ --条件分支语句 --简单条件判断 DECLARE v_sal NUMBER(6,2); BEGIN select sal into v_sal from emp where lower(ename)=lower('&name'); if v_sal<2000 then update emp set</div> </li> <li><a href="/article/1607.htm" title="【Log4j二】Log4j属性文件配置详解" target="_blank">【Log4j二】Log4j属性文件配置详解</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/log4j/1.htm">log4j</a> <div>如下是一个log4j.properties的配置   log4j.rootCategory=INFO, stdout , R log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appe</div> </li> <li><a href="/article/1734.htm" title="java集合排序笔记" target="_blank">java集合排序笔记</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>public class CollectionDemo implements Serializable,Comparable<CollectionDemo>{ private static final long serialVersionUID = -2958090810811192128L; private int id; private String nam</div> </li> <li><a href="/article/1861.htm" title="java导致linux负载过高的定位方法" target="_blank">java导致linux负载过高的定位方法</a> <span class="text-muted">ronin47</span> <div>定位java进程ID 可以使用top或ps -ef |grep java ![图片描述][1] 根据进程ID找到最消耗资源的java pid 比如第一步找到的进程ID为5431 执行 top -p 5431 -H ![图片描述][2] 打印java栈信息 $ jstack -l 5431 > 5431.log 在栈信息中定位具体问题 将消耗资源的Java PID转</div> </li> <li><a href="/article/1988.htm" title="给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数" target="_blank">给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/%E5%87%BD%E6%95%B0/1.htm">函数</a> <div> import java.util.ArrayList; import java.util.List; import java.util.Random; public class RandNFromRand5 { /** 题目:给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数。 解法1: f(k) = (x0-1)*5^0+(x1-</div> </li> <li><a href="/article/2115.htm" title="PL/SQL Developer保存布局" target="_blank">PL/SQL Developer保存布局</a> <span class="text-muted">Kai_Ge</span> <div>      近日由于项目需要,数据库从DB2迁移到ORCAL,因此数据库连接客户端选择了PL/SQL Developer。由于软件运用不熟悉,造成了很多麻烦,最主要的就是进入后,左边列表有很多选项,自己删除了一些选项卡,布局很满意了,下次进入后又恢复了以前的布局,很是苦恼。在众多PL/SQL Developer使用技巧中找到如下这段:   &n</div> </li> <li><a href="/article/2242.htm" title="[未来战士计划]超能查派[剧透,慎入]" target="_blank">[未来战士计划]超能查派[剧透,慎入]</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E8%AE%A1%E5%88%92/1.htm">计划</a> <div>       非常好看,超能查派,这部电影......为我们这些热爱人工智能的工程技术人员提供一些参考意见和思想........        虽然电影里面的人物形象不是非常的可爱....但是非常的贴近现实生活....    &nbs</div> </li> <li><a href="/article/2369.htm" title="Google Map API V2" target="_blank">Google Map API V2</a> <span class="text-muted">dai_lm</span> <a class="tag" taget="_blank" href="/search/google+map/1.htm">google map</a> <div>以后如果要开发包含google map的程序就更麻烦咯 http://www.cnblogs.com/mengdd/archive/2013/01/01/2841390.html 找到篇不错的文章,大家可以参考一下 http://blog.sina.com.cn/s/blog_c2839d410101jahv.html 1. 创建Android工程 由于v2的key需要G</div> </li> <li><a href="/article/2496.htm" title="java数据计算层的几种解决方法2" target="_blank">java数据计算层的几种解决方法2</a> <span class="text-muted">datamachine</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E9%9B%86%E7%AE%97%E5%99%A8/1.htm">集算器</a> <div>2、SQL     SQL/SP/JDBC在这里属于一类,这是老牌的数据计算层,性能和灵活性是它的优势。但随着新情况的不断出现,单纯用SQL已经难以满足需求,比如: JAVA开发规模的扩大,数据量的剧增,复杂计算问题的涌现。虽然SQL得高分的指标不多,但都是权重最高的。     成熟度:5星。最成熟的。   </div> </li> <li><a href="/article/2623.htm" title="Linux下Telnet的安装与运行" target="_blank">Linux下Telnet的安装与运行</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/telnet/1.htm">telnet</a> <div> Linux下Telnet的安装与运行   linux默认是使用SSH服务的 而不安装telnet服务  如果要使用telnet 就必须先安装相应的软件包  即使安装了软件包 默认的设置telnet 服务也是不运行的 需要手工进行设置 如果是redhat9,则在第三张光盘中找到 telnet-server-0.17-25.i386.rpm </div> </li> <li><a href="/article/2750.htm" title="PHP中钩子函数的实现与认识" target="_blank">PHP中钩子函数的实现与认识</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a> <div>假如有这么一段程序: function fun(){ fun1(); fun2(); }   首先程序执行完fun1()之后执行fun2()然后fun()结束。   但是,假如我们想对函数做一些变化。比如说,fun是一个解析函数,我们希望后期可以提供丰富的解析函数,而究竟用哪个函数解析,我们希望在配置文件中配置。这个时候就可以发挥钩子的力量了。   我们可以在fu</div> </li> <li><a href="/article/2877.htm" title="EOS中的WorkSpace密码修改" target="_blank">EOS中的WorkSpace密码修改</a> <span class="text-muted">蕃薯耀</span> <a class="tag" taget="_blank" href="/search/%E4%BF%AE%E6%94%B9WorkSpace%E5%AF%86%E7%A0%81/1.htm">修改WorkSpace密码</a> <div>EOS中BPS的WorkSpace密码修改 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 蕃薯耀 201</div> </li> <li><a href="/article/3004.htm" title="SpringMVC4零配置--SpringSecurity相关配置【SpringSecurityConfig】" target="_blank">SpringMVC4零配置--SpringSecurity相关配置【SpringSecurityConfig】</a> <span class="text-muted">hanqunfeng</span> <a class="tag" taget="_blank" href="/search/SpringSecurity/1.htm">SpringSecurity</a> <div> SpringSecurity的配置相对来说有些复杂,如果是完整的bean配置,则需要配置大量的bean,所以xml配置时使用了命名空间来简化配置,同样,spring为我们提供了一个抽象类WebSecurityConfigurerAdapter和一个注解@EnableWebMvcSecurity,达到同样减少bean配置的目的,如下:   applicationContex</div> </li> <li><a href="/article/3131.htm" title="ie 9 kendo ui中ajax跨域的问题" target="_blank">ie 9 kendo ui中ajax跨域的问题</a> <span class="text-muted">jackyrong</span> <a class="tag" taget="_blank" href="/search/AJAX%E8%B7%A8%E5%9F%9F/1.htm">AJAX跨域</a> <div>这两天遇到个问题,kendo ui的datagrid,根据json去读取数据,然后前端通过kendo ui的datagrid去渲染,但很奇怪的是,在ie 10,ie 11,chrome,firefox等浏览器中,同样的程序, 浏览起来是没问题的,但把应用放到公网上的一台服务器, 却发现如下情况: 1) ie 9下,不能出现任何数据,但用IE 9浏览器浏览本机的应用,却没任何问题 </div> </li> <li><a href="/article/3258.htm" title="不要让别人笑你不能成为程序员" target="_blank">不要让别人笑你不能成为程序员</a> <span class="text-muted">lampcy</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a> <div>在经历六个月的编程集训之后,我刚刚完成了我的第一次一对一的编码评估。但是事情并没有如我所想的那般顺利。 说实话,我感觉我的脑细胞像被轰炸过一样。 手慢慢地离开键盘,心里很压抑。不禁默默祈祷:一切都会进展顺利的,对吧?至少有些地方我的回答应该是没有遗漏的,是不是? 难道我选择编程真的是一个巨大的错误吗——我真的永远也成不了程序员吗? 我需要一点点安慰。在自我怀疑,不安全感和脆弱等等像龙卷风一</div> </li> <li><a href="/article/3385.htm" title="马皇后的贤德" target="_blank">马皇后的贤德</a> <span class="text-muted">nannan408</span> <div>   马皇后不怕朱元璋的坏脾气,并敢理直气壮地吹耳边风。众所周知,朱元璋不喜欢女人干政,他认为“后妃虽母仪天下,然不可使干政事”,因为“宠之太过,则骄恣犯分,上下失序”,因此还特地命人纂述《女诫》,以示警诫。但马皇后是个例外。   有一次,马皇后问朱元璋道:“如今天下老百姓安居乐业了吗?”朱元璋不高兴地回答:“这不是你应该问的。”马皇后振振有词地回敬道:“陛下是天下之父,</div> </li> <li><a href="/article/3512.htm" title="选择某个属性值最大的那条记录(不仅仅包含指定属性,而是想要什么属性都可以)" target="_blank">选择某个属性值最大的那条记录(不仅仅包含指定属性,而是想要什么属性都可以)</a> <span class="text-muted">Rainbow702</span> <a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/group+by/1.htm">group by</a><a class="tag" taget="_blank" href="/search/%E6%9C%80%E5%A4%A7%E5%80%BC/1.htm">最大值</a><a class="tag" taget="_blank" href="/search/max/1.htm">max</a><a class="tag" taget="_blank" href="/search/%E6%9C%80%E5%A4%A7%E7%9A%84%E9%82%A3%E6%9D%A1%E8%AE%B0%E5%BD%95/1.htm">最大的那条记录</a> <div>好久好久不写SQL了,技能退化严重啊!!!   直入主题: 比如我有一张表,file_info, 它有两个属性(但实际不只,我这里只是作说明用): file_code, file_version 同一个code可能对应多个version 现在,我想针对每一个code,取得它相关的记录中,version 值 最大的那条记录, SQL如下: select * </div> </li> <li><a href="/article/3639.htm" title="VBScript脚本语言" target="_blank">VBScript脚本语言</a> <span class="text-muted">tntxia</span> <a class="tag" taget="_blank" href="/search/VBScript/1.htm">VBScript</a> <div>  VBScript 是基于VB的脚本语言。主要用于Asp和Excel的编程。   VB家族语言简介   Visual Basic 6.0           源于BASIC语言。           由微软公司开发的包含协助开发环境的事</div> </li> <li><a href="/article/3766.htm" title="java中枚举类型的使用" target="_blank">java中枚举类型的使用</a> <span class="text-muted">xiao1zhao2</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/enum/1.htm">enum</a><a class="tag" taget="_blank" href="/search/%E6%9E%9A%E4%B8%BE/1.htm">枚举</a><a class="tag" taget="_blank" href="/search/1.5%E6%96%B0%E7%89%B9%E6%80%A7/1.htm">1.5新特性</a> <div>枚举类型是j2se在1.5引入的新的类型,通过关键字enum来定义,常用来存储一些常量.   1.定义一个简单的枚举类型 public enum Sex { MAN, WOMAN }   枚举类型本质是类,编译此段代码会生成.class文件.通过Sex.MAN来访问Sex中的成员,其返回值是Sex类型.   2.常用方法 静态的values()方</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>