浅谈webpack3.0+

(1)webpack作用

  

  1、前端为什么需要webpack?

现在的前端网页功能丰富,特别是SPA(single page web application 单页应用)技术流行后,JavaScript的复杂度增加和需要一大堆依赖包,还需要解决SCSS,Less……新增样式的扩展写法的编译工作。所以现代化的前端已经完全依赖于WebPack的辅助了。

   2、什么是webpack?

    

  简单理解就是打包用的,结合图进行理解

1、将.js(脚本文件)、.jade(源于Node.js 的HTML高性能模板引擎)、.coffee(js的简化版本语法,经过编译最终编译为js)等打包为js
2、将模块打包为静态文件3、对于SPA应用打包,webpack3.0进行了一些优化

拓展:
    1、因为webpack实际上只能处理JS文件,如果需要使用一些非JS文件(比如Coffee Script),就需要将它转换成JS再require进来。
    2、webpack处理的主要对象是JS文件,而我们知道JS文件是可以做很多事情的,比如编译Less/SASS/CoffeeScript,比如在页面中插入一段HTML,比如修改替换文本文件等等。

  3、安装webpack

  首先我们创建一个目录,初始化 npm,然后 在本地安装 webpack

  

  接下来进行npm初始化,然后进行安装

  全局安装webpack模块

注意版本:
    目前webpack版本已经更新到了4.0+,要安装最新版本或特定版本,请运行以下命令之一
    最新版:npm install --save-dev webpack(如果你使用 webpack 4+ 版本,你还需要安装 CLI,即npm install --save-dev webpack-cli)
    特定版:npm install --save-dev [email protected]<version>

  另外,安装分为全局安装(npm i webpack --global)和本地安装(npm i webpack --save-dev),建议如下

  

  全局安装如下:

  

  所以接下来我们进行本地安装,然后安装特定版本3.6.0

 

  如果进行全局安装,有时安装完毕后,官方会有提示

官方不推荐全局安装webpack,因为全局安装的话,webpack会锁定到指定版本,例如下载版本为3.6.0,则会一直锁定到3.6.0.并且在使用webpack过程里,可能会导致构建失败。
例如,我们在电脑上全局安装了3+版本,但是新项目是用4+进行构建的,如果全局安装了3+,本地安装了4+,但是在构建项目时默认会走全局的webpack版本,可能导致构建项目失败。

  接下来结合上述所说,重新进行安装

  《1》创建项目目录,进行初始化

mkdir webpack-test
cs webpack-test
npm init --yes(因为本地安装webpack,需要一个package.json文件来存储依赖关系)

  

  《2》安装特定版本webpack

npm i [email protected]3.6.0 --save-dev

  《3》安装完毕后检验版本及是否安装成功

webpack -v或者webpack --version

  注意:如果失败,看下node版本、网络原因、地域(某些地域被npm屏蔽,可以使用cnpm)、权限问题遇到时前面加上sudo即可等

  

(2)webpack上手demo

  构建项目结构,简单进行打包

  接着上面案例,进行介绍,这里我们安装完毕webpack3.6.0版本

  

  如果我们现在将项目拉去下来,但是webpack版本过低,需要升级,这时删除node_modules文件夹,然后直接在这里修改webpack,如下所示,修改为3.8.0,之后执行npm i安装依赖模块即可

  

  接下来建立项目基本结构

  1、src目录(也叫源代码文件夹),主要用于存放编写代码

  2、dist目录(主要用于生产环境)

  3、简单理解,src为开发环境,dist为生产环境

  4、新建dist/index.html文件,因为前期文件过少,不适于打包,所以这里先放到dist目录下

    

  5、新建入口文件src/entery.js,并编写简单代码

    

  6、开始进行打包

    

    Hash为打包号、Version为webpack版本、Time耗时、文件大小等... ...

  7、观看打包结果

    这里需要安装live-server,详见web服务器live-server(热更新)的安装及使用.然后执行live-server,默认浏览器会打开预览

    

    

    

(3)配置:入口和出口文件

  

  1、配置文件webpack.config.js基本结构

    首先需要暴露接口,如下所示

    

    配置基本结构:入口和出口

    

    接下来编写模块module,主要负责解读模块打包、图片压缩等相关配置等。还有plugins插件数组、webpack开发服务devServer等,如下所示

    

    接下来主要介绍下入口entry和出口output配置

    

    注意:path.join和path.resolve区别

join是把各个path片段连接在一起, resolve把‘/’当成根目录
  path.join(‘/a‘, ‘/b‘) // Outputs ‘/a/b‘
  path.resolve(‘/a‘, ‘/b‘) // Outputs ‘/b‘

    下面进行打包,如下所示,此时直接运行webpack即可,不用再和之前一样手动配置入口和出口文件

    

    接下来开始运行下

    

  2、接下来做个多入口和多出口的功能,添加入口文件entry2.js

    

    接下来配置多入口

    

    然后配置多出口,如下所示。其中[name]表示,出口文件名字与入口文件名相同

    

    接下来打开终端,进行打包

    

    

    此时bundle.js便无用论,所以修改下html文件的引用

    

    然后运行live-server服务,在浏览器进行预览

    

.

npm install --global webpack

原文地址:https://www.cnblogs.com/jianxian/p/12397282.html

时间: 2024-10-07 15:19:41

浅谈webpack3.0+的相关文章

浅谈android4.0开发之GridLayout布局

作者:李响 本文重点讲述了自android4.0版本号后新增的GridLayout网格布局的一些基本内容,并在此基础上实现了一个简单的计算器布局框架.通过本文,您可以了解到一些android UI开发的新特性,并可以实现相关应用. 在android4.0版本号之前,假设想要达到网格布局的效果,首先能够考虑使用最常见的LinearLayout布局,可是这种排布会产生例如以下几点问题: 1.不能同一时候在X,Y轴方向上进行控件的对齐. 2.当多层布局嵌套时会有性能问题. 3.不能稳定地支持一些支持自

浅谈http1.0和http1.1(1.x)以及http-NG

http协议简介 http超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法.1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基.Ted Nelson组织协调万维网协会(World Wide Web Consortiu

(转)浅谈android4.0开发之GridLayout布局

http://blog.csdn.net/pku_android/article/details/7343258

JSON 浅谈 — 3.0 解析

解析,是指将符合 JSON 语法规则的字符串转换成对象的过程. 不同的编程语言都提供了解析 JSON 字符串的方法,在这里主要讲解 JavaScript 中的解析方法.主要有三种: 使用 eval() 使用 JSON.parse() 使用第三方库,例如 JQuery 等 1. eval() eval() 函数的参数是一个字符串,其作用是直接执行其中的 JavaScript 代码. eval() 能够解析 JSON 字符串.从这里也可以看得出,JSON 和 JavaScript 是高度嵌合的. 但

JSON浅谈-4.0序列化

序列化,就是指将JavaScript值转化为JSON字符串的过程. 此时就需要用到一个函数:JSON.stringify() JSON.stringify()能够将JavaScript值转换成JSON字符串.JSON.stringify()生成的字符串可以用JSON.parse()再还原成JavaScript值. 1. 参数的含义 value:必选参数.被变换的 JavaScript 值,一般是对象或数组. replacer:可以省略.有两种选择:函数或数组. 如果是函数,则每一组名称/值对都会

浅谈C语言字符串结束符&#39;\0&#39;

如果你希望你的字符串以’\0‘结束,那么你可以这样做: 1 char str[]={"hello"};//①字符串赋值 2 char str[]={'h','e','l','l','o','\0'};//②人为添加 3 char str[6]={'h','e','l','l','o'};//③故意给数组预留一个空位 注:当出现以下情况时,会发生'\0'丢失 1 char str[5]={"hello"};//①数组长度不够 2 char str[]={'h','e'

浅谈linux中shell变量$#,[email&#160;protected],$0,$1,$2,$?的含义解释

浅谈linux中shell变量$#,[email protected],$0,$1,$2,$?的含义解释 下面小编就为大家带来一篇浅谈linux中shell变量$#,[email protected],$0,$1,$2的含义解释.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 摘抄自:ABS_GUIDE 下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdf linux中shell变量$#,[email protected],$

.net中对象序列化技术浅谈

.net中对象序列化技术浅谈 2009-03-11 阅读2756评论2 序列化是将对象状态转换为可保持或传输的格式的过程.与序列化相对的是反序列化,它将流转换为对象.这两个过程结合起来,可以轻松地存储和传输数 据.例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象.反之,反序列化根据流重新构造对象.此外还可以将对象序列化后保存到本地,再次运行的时候可以从本地文件 中“恢复”对象到序列化之前的状态.在.net中有提供了几种序列化的方式:二进制序列化

单页应用SEO浅谈

单页应用SEO浅谈 前言 单页应用(Single Page Application)越来越受web开发者欢迎,单页应用的体验可以模拟原生应用,一次开发,多端兼容.单页应用并不是一个全新发明的技术,而是随着互联网的发展,满足用户体验的一种综合技术. SEO 一直以来,搜索引擎优化(SEO)是开发者容易忽略的部分.SEO是针对搜索(Google.百度.雅虎搜索等)在技术细节上的优化,例如语义.搜索关键词与内容相关性.收录量.搜索排名等.SEO也是同行.市场竞争常用的的营销手段.Google.百度的搜