(二十三)最后的总结和复习

本节就是对前面的webpack3一个高度的概括

  • webpack3 简单来说就是一个模块打包机。他把JS CSS IMG能打包的都能打包变成了一个JS文件
  • 这样节省了资源但是目前都是单页面打包。多页面打包的最好利用vue来实现。
  • 打包后但是搜索引擎不会收录的切记切记

下面开始说步骤

首先你要准备好一套简单的模板我这里拿很早以前写的知问做参考了。他利用了jqueryui

(i) 初始化

npm init

(ii)全局命令

npm install -g webpack --save-dev

(iii)本地命令

npm i webpack --save-dev

i就是--install的简写

(iv) 要是安装好以后查看下webpack版本

webpack -v

(i)在项目的根目录下面新建一个文件叫webpack.config.js文件 里面写好下面配置

module.exports = {

    //入口配置项
    entry: {},
    //出口文件配置项
    output: {},
    //模块:例如解读css图片如何转换,压缩等等
    module: {},
    //插件:用于生产模板和各项功能
    plugins: [],
    //配置webpack开发服务的各项功能
    devServer: {}

}

(ii) 然后在里面接着写配置修改入口和出口文件

 //入口配置项
    entry: {
        entry:"./src/enter.js"
    },
    //出口文件配置项
    output:{
        path: path.join(__dirname,"/dist"),
        filename:"enter.js"
    },

(iii) 在src的目录下面建立一个enter.js这个以后就是我们的入口文件
(iv) 这样以后在打包的时候我们使用webpack命令即可

webpack

(i) 首先安装webpack-dev-server这个包

npm i webpack-dev-server -D

(ii) 在webpack.config.js里面引入path模块

let path = require("path");

(iii) 修改webpack.config.js里面的devServer

devServer:{
        //设置基本目录结构
        contentBase:path.join(__dirname,"/dist"),
        //服务器的IP地址 也可以使用localhost
        host:"localhost",
        //服务器压缩是否开启
        compress: true,
        //配置服务器端口号
        port: 1717
    }

(iiii) 接着修改package.json里面的scripts

"scripts":{
  "server" : "webpack-dev-server"
},

(v) 最后在执行

npm run server

这样热更新就做好了

(i) CSS打包需要两个依赖包一个叫做css-loader一个叫做 style-loader
css-loader主要解决HTML文件中标签问题
style-loader主要解决css中路径问题
首先安装着两个包

npm i css-loader style-loader -D

(ii) 入口文件一定要引入你加载的CSS文件

import  css from"./css/jquery-ui.css";
import  css from "./css/style.css";

(iii) 配置webpack.config.js里面的module增加规则

module:{
        rules:[
            {
                test:/\.css$/,
                use:['style-loader','css-loader']
            }
        ]
    },

(i) 这里就需要两个包 一个叫做file-loader一个叫做url-loader

(ii) 首先安装这两个包

npm i file-loader url-loader -D

(iii) 接着在配置webpack.config.js中模块

module:{
        rules:[
            {
                test:/\.css$/,
                use:['style-loader','css-loader']
            },
            {
                test:/\.(jpg|png|gif)/,
                use:[
                    {
                        loader:"url-loader",
                        options:{
                            limit:50000,
                            outputPath: 'images/'
                        }
                    }
                ]
            }
        ]
    }
  1. 安装包依赖
npm install html-withimg-loader -D

2.在模块下面配置loader

{
     test:/\.(html|htm)$/i,
     use:['html-withimg-loader']
}

这里就需要用到一个包叫做extract-text-webpack-plugin

(i) 安装这个包

npm install extract-text-webpack-plugin --save-dev

(ii) 安装完成后 需要在webpack.config.js中引入这个包

const extracTextPlugin = require("extract-text-webpack-plugin");

(iii) 配置webpack.config.js文件中的插件

 plugins:[
        //把CSS独立出来,不要打包到js文件中去里面写的就是独立出来后的路径
        new extracTextPlugin("/css/jquery-ui.css"),
        new extracTextPlugin("/css/style.css"),
    ],

(iv)最后在修改module下面的css规则

{
                test:/\.css$/,
                use: extracTextPlugin.extract({
                    fallback: "style-loader",
                    use:"css-loader"
                })
            },

(v)这样css就分离出来了

(i) 第一步安装包html-webpack-plugin

npm install html-webpack-plugin --save-dev

(ii) 在webpack.config.js文件中引入这个包

const htmlplugin = require("html-webpack-plugin");

(iii) 在webpack.config.js中 pluigins 增加

new htmlplugin({
     minify:{
        removeAttributeQuotes: true
       },
   hash: true,
   template:"./src/index.html"
})

(i) 首先在webpack.config.js里面写下面的代码

var website = {
   publicPath :"http://localhost:1717"
}

(ii) 然后在出口文件中 写入路径

 output:{
        path: path.join(__dirname,"/dist"),
        filename:"enter.js",
        publicPath:website.publicPath
    },

(i) 首先第一步安装jquery

npm i jquery --save

(ii) 然后在webpack.config.js里面引入这个webpack

const webpack = require("webpack");

(iii) 最后一步在webpack.config.js里面plugins配置插件

new webpack.ProvidePlugin({
  $: 'jquery',
  jQuery: 'jquery'
})

(i) 第一步修改入口文件

entry:{
   entry:"./src/entry.js",
   jquery:'jquery'
  }

(ii) 第二步修改插件里面的配置

//分离jquery
        new webpack.optimize.CommonsChunkPlugin({
             //入口文件的文字。入口我起的是jquery那么对应的就是jquery
            name: 'jquery',
            //把文件打包到哪里就一个路径
            filename:"js/jquery.min.js",
            //最小打包文件的模块数,这里写2就好了
            minChunks:2
        })

(iii) 要是有第三方插件的话就在项目入口处引入

require('./js/jquery-ui.min.js');
require('./js/style.js');
$("#reg_a").html("注册哈哈");

这样既可

(i) 安装包

npm i -D babel-core babel-loader babel-preset-env babel-preset-react

(ii) 在网站的根目录新建一个文件叫.babelrc里面写入

{
   "presets":["react","env"]
 }

(iii) 在webpack.config.js中写入

/*用于babel配置*/
            {
                test:/\.(jsx|js)$/,
                use:{
                    loader:"babel-loader"
                },
                exclude:/node_modules/
            }
npm install html-webpack-plugin --save-dev

(2)在webpack.config.js里面 引入html-webpack-plugin

const htmlplugin = require("html-webpack-plugin");

(3) 在配置文件里面写

new htmlPlugin({
     minify:{
        removeAttributeQuotes: true
       },
   hash: true,
   template:"./src/index.html"
})

这样即可

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容

  • 无意中看到zhangwnag大佬分享的webpack教程感觉受益匪浅,特此分享以备自己日后查看,也希望更多的人看到...
    小小字符阅读 8,164评论 7 35
  • 最近在学习 Webpack,网上大多数入门教程都是基于 Webpack 1.x 版本的,我学习 Webpack 的...
    My_Oh_My阅读 8,184评论 40 247
  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 webpack介绍和使用 一、webpack介绍 1、由来 ...
    it筱竹阅读 11,121评论 0 21
  • 在现在的前端开发中,前后端分离、模块化开发、版本控制、文件合并与压缩、mock数据等等一些原本后端的思想开始...
    Charlot阅读 5,439评论 1 32
  • 在乡下 也有了路灯 亮光就像灯笼 好几回呻吟着闭上了眼睛 风就等在村口 像一个晚归的老农扛着锄靶独行 狗咬着我的影...
    段继显阅读 277评论 0 2