webpack学习笔记(一)

写在前面:

  近几年前端发展迅速,各种新标准的出现,angular、vue、react等框架也是N足鼎立,nodejs的出现使得前端也跨足到server领域,还出现了前端工程化的概念,这一切都在提醒各位前端开发者(工程师)一件事情:我们时时刻刻都需要学习,更新自己的知识体系。

正文:

  webpack是前端工程化的一个代表,工程化也是一个比较大的概念,所以我会针对自己的学习过程写一个系列的学习笔记,此为第一篇。

  webpack负责将资源文件模块化,通过它的加载器加载使用,最终将项目打包发布。

  webpack的安装:

  通过nodejs安装,执行npm install webpack -g 全局安装,但是为了不依赖于全局webpack,最好在项目下再安装一份webpack,可以执行npm install webpack --save-dev命令。

  webpack的目录结构:

  

  

  webpack配置基础目录结构  
index.html   项目入口html文件
index.js js源文件
node_modules webpack安装文件
package.json
node项目的配置文件,webpack依赖npm创建。

(npm init -y 创建默认配置的package文件)

webpack.config.js webpack配置文件,配置了源文件和其通过打包的文件目录及名称
bundle.js 经过webpack打包后的js文件,最终被html引用的是这个文件

  

  webpack的实时build:

  项目根目录下运行 webpack --watch 可以监听所有文件变化并实时build到bundle.js。

  webpack的实时刷新页面:

  上面的实时build是文件层面的,需手动刷新浏览器才能更新页面效果,所以 webpack-dev-server 就登场了。

  首先全局安装webpack-dev-server模块,执行命令: npm install webpack-dev-server -g

  安装完成后,在项目根目录下执行命令: webpack-dev-server  (webpack-dev-server --hot --inline) , 即在本地8080端口启动了服务器并部署了项目。访问 http://localhost:8080/ 查看。执行--hot --inline命令后,每次js源文件发生改变,都会自动触发build,在内存中生成新的文件(:bundle.js文件此时不会发生变化,要执行webpack命令后变化才会反映到bundle.js文件中),并反映到页面上(相当于刷新了一次页面)。

    *注意*:运行webpack-dev-server命令时,webpack配置项的output.path需要是绝对路径或‘/’开头!

  webpack的加载器 loader  

  1) css、style loader:

    安装: npm install style-loader css-loader --save-dev

    config配置: module.exports增加module配置如下:

module: {
        loaders: [
            { test: /\.css$/, loaders: [‘style‘, ‘css‘] }
        ]
    }

    使用: import ‘css/public.css‘

  2)autoprefixer loader -- 自动添加浏览器前缀:

    安装: npm install autoprefixer-loader --save-dev

    config配置:module中添加一个loader如下:

loaders: [
            {
                test: /\.css$/,
                loaders: [‘style‘, ‘css‘]
            }, {
                test: /\.css$/,
                loader: ‘style!css!autoprefixer?{browsers:["last 2 version", "> 1%"]}‘,
            }
        ]

    使用:css中配置属性不需要带前缀了,autoprefixer会自动添加。

  3)file loader

    安装: npm install file-loader --save-dev

    配置:

    使用:

var url = require("file-loader!./a.png");

//var url = require("file-loader?emitFile=false!./a.png");

//模板应用
"file-loader?name=[name].[ext]&publicPath=assets/foo/&outputPath=app/images/"
require("file-loader?name=js/[hash].script.[ext]!./javascript.js");
// => js/0dcbbaa701328a3c262cfd45869e351f.script.js

require("file-loader?name=html-[hash:6].html!./page.html");
// => html-109fa8.html

require("file-loader?name=[hash]!./flash.txt");
// => c31e9820c001c9c4a86bce33ce43b679

require("file-loader?name=[sha512:hash:base64:7].[ext]!./image.png");
// => gdyb21L.png
// use sha512 hash instead of md5 and with only 7 chars of base64

require("file-loader?name=img-[sha512:hash:base64:7].[ext]!./image.jpg");
// => img-VqzT5ZC.jpg
// use custom name, sha512 hash instead of md5 and with only 7 chars of base64

require("file-loader?name=picture.png!./myself.png");
// => picture.png

require("file-loader?name=[path][name].[ext]?[hash]!./dir/file.png")
// => dir/file.png?e43b20c069c4a01867c31e98cbce33c9

  4)url loader -- 返回file的dataurl形式
    安装: npm install url-loader --save-dev

  5)其他各种loader

  webpack的打包:

  执行webpack命令即可。

问题

  执行webpack-dev-server时,经测试,必须配置output.publicPath,页面才能实时反映js源文件的变化。暂不知是什么原因,希望有知道的同学不吝赐教!

时间: 2024-10-14 05:27:20

webpack学习笔记(一)的相关文章

webpack学习笔记一

webpack.gulp.grunt是前端打包功能工具:因为已经学习了gulp,而最近发现webpack很火,于是着手学习webpack.本篇是webpack学习笔记系列的第一篇,欢迎指教. 我是从慕课网以及官网文档相结合的方式学习的,从官方文档学到的第一个知识点是在使用webpack打包过程中,即使没有webpack.config,js这个文件也是可以的. 首先是全局安装webpack,cmd(如果是window系统,在任意位置)执行命令: npm install --g webpack或cn

webpack学习笔记八

webpack自动刷新浏览器 webpack开发服务器,是webpack官方提供的一个辅助开发工具,它可以自动监控项目下的文件,一旦有修改保存的操作,它就会自动执行打包命令,将我们的代码重新打包,并且需要的话还可以刷新浏览器. 首先我们安装webpack-dev-server 在CMD中安装执行npm intall webpack-dev-server -g 在项目目录执行安装依赖命令: npm install --save-dev webpack-dev-server 其中webpack-de

webpack学习笔记

webpack笔记 webpack学习笔记 1.全局安装 npm install webpack -g 2.作为项目依赖安装 npm install webpack --save-dev 3.安装css-loader.sass-loader.node-scss npm install css-loader sass-loader node-scss --save-dev 4.webpack配置 // webpack.config.js var path = require('path'); mo

更博不能忘——webpack学习笔记

webpack是前端构建系统就像grunt和gulp(之前有学习过grunt所以也就大概明白webpack是个什么东西),所以说前端技术大部分还真是相通的,现在觉得当时多看的东西并不白费,虽然长时间不用会忘掉一丢丢,但是看过脑海中还是有印象的. webpack能够用作模块加载和打包类似Browserify,且能做更多.类似上诉模块管理工具都会有一个相应的配置文件,用于说明,你打包的文件,包装的模块等. webpack常用命令: webpack -p 压缩混淆脚本 webpack --watch

webpack学习笔记,前方有坑,请注意!!!!!

拖了好久,终于决定系统学习一下webpack(其实是自己懒,哈哈哈),学习任何东西都要亲自动手才行,learn by doing 才是最高效的学习方法,以下是我在学习webpack的心得和踩得的坑,希望看到的同行,可以少踩坑,文章写得烂,不要介意,哈哈哈,下面开始表演. 什么是webpack就不用介绍了,我主要列举遇到的问题. 使用步骤: 新建一个文件夹,然后npm init初始化一下,然后非全局安装webpack 1.打包时记得全局安装webpack,否则命令会报错:"webpack"

gulp、webpack学习笔记

前言:这两天天学了gulp和webpack的基本使用方法,其实对于这些工具,了解基本的用法.熟悉一些常用配置和方法就足够日常使用了.更复杂的等到需要时才再查相关文档就可以了. gulp和webpack虽然有相似的功能,比如压缩.合并文件,但应该算是两种类型的工具. gulp作为自动化构建工具主要的功能就是自动压缩.css转换.合并资源文件,减少http请求,这些功能对于一般的前端项目而言已经足够使用了.而且使用起来也更加方便, 在gulpfile.js引入组件并创建任务便可以很方便的使用. 而w

webpack 学习笔记

一个简单的例子,明白了是怎么操作,文件怎么制作的.在我看来和gulp/grunt区别不算太大,但很多人都说比较好,先进多了 WebPack 官网地址:  http://webpack.github.io/ 安装: #npm install -g webpack 或       #npm install webpack -g 如果是linux/mac 可以用 #sudo npm install -g webpack 创建工程 (1)创建目录并进入目录 #mkdir webpack_test &&am

webpack学习笔记 (三) webpack-dev-server插件和HotModuleReplacementPlugin插件使用

webpack-dev-server插件 webpack-dev-server是webpack官方提供的一个小型Express服务器.使用它可以为webpack打包生成的资源文件提供web服务. webpack-dev-server 主要提供两个功能: 为静态文件提供服务 自动刷新和热替换(HMR) HotModuleReplacementPlugin插件 HotModuleReplacementPlugin主要用于代码热替换(具体用途还不清楚,因为没有研究通透吧) 一.webpack-dev-

webpack 学习笔记 01 使用webpack的原因

本系列文章实际上就是官网文档的翻译加上自己实践过程中的理解. 伴随着websites演化至web apps的过程,有三个现象是很明显的: 页面中有越来越多的Js. 客户端能做的事情越来越多. 越来越少的页面重载(当然也伴随着更复杂的代码). 这些现象导致了什么?大量的前端代码. 庞大的代码库需要被高效的组织.而Module(组件式)开发的系统即为大多数开发者采取的途径. MODULE SYSTEM STYLES 有很多种定义依赖,导出变量的标准或者说方法: <script> tag 的形式(不