话说前头

  • webpack前段时间有听说一下,现在已经到了3.x的版本,自己没去接触。因为之前使用gulp来作为自己的项目构建工具。现在感觉gulp使用的趋势在减少。现在这段时间去接触了webpack,感觉很不错,它的模块化打包机制,对前端开发和性能方面都带来好处。这里不是说gulp不好,两者不作比较

  • 接下来会说说自己对webpack使用的感受,我不会一步步写出使用webpack的流程,因为关于webpack的教程有很多,但会写一些关键地方,注意地方,来加深对webpack的见解。

  • 学习就是这样,东看看西看看,看人家的对某件东西的见解,加上自己的理解,是否异同,慢慢积累,最终成为自己的知识。

webpack介绍

1.(引用了webpack官网的一句话):

webpack 是一个现代 JavaScript 应用程序的模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成少量的 bundle - 通常只有一个,由浏览器加载。

它是高度可配置的,但是,在开始前你需要先理解四个核心概念:入口(entry)、输出(output)、loader、插件(plugins)。

2.个人理解:

这里说了这么多就是它能把项目中资源文件看成一个个模块,然后将他们打包成少量或一个文件,然后我们去引用这文件。

3.疑惑:

大家这里可能会疑惑,当时我也想,怎么能做到这个?怎么就打包成一个文件了?那么js,css,图片什么的怎么搞?还有这种操作?我能怎么办,那只能选择相信它。

4.感受:

其实学习某一样工具,我们只需要知道这东西能做什么,然后怎么用它,但它具体实现的细节,有时我们不必深究。我们只需知其然,不必知其所以然。尽管去用这个东西,它本来就是一个工具。就好比开一辆车,我们只需去学习怎么开,而不用太在意他为什么能开,开多了一样成为老司机,不是吗,没毛病吧。工具它能给我们带来便利,就足够了。除非你是制造工具的。但是如果对webpack非常感兴趣,可以去它的github上看看。

webpack能做的事:

上面说webpack能打包模块,其实还有很多功能。

  • webpack可以对Js进行转译,当前浏览器很多不支持es6,但是我们想使用es6的语法,webpack可以将es6语法转成es5语法
  • webpack可以对less,sass,stylus等css的预处理语言进行转译
  • webpack可以热更新
  • webpack可以对图片处理,压缩,转成base64格式。
  • webpack可以对代码进行压缩。
  • webpack可以进行语法检查,可以生成自动化html模板等等

上面举例是常用,其功能还多得多。都是通过webpack 的 loader和plugins实现的,可以说是很强大了。

webpack安装:

  1. 前提有nodejs和npm,在网上搜索安装,现在的nodejs都会带有npm,所以直接安装nodejs即可。
  2. 通过 cmd(用的是win操作系统)运行:node -v 和 npm -v 若都能返回版本号表明安装成功。
  3. 接着正式安装webpack,命令行中运行:
  1. //全局安装
  2. npm install -g webpack
  3. //创建一个文件夹
  4. mkdir webpack-demo
  5. //进入项目中
  6. cd webpack-demo
  7. //初始化,生成默认package.json 文件
  8. npm init -y
  9. //在当前项目中安装webpack
  10. npm install webpack --save-dev
  11. //到这里就安装成功了

感受:整个流程和安装gulp差不多,是npm模块的那套安装流程。

说到npm,在国内推荐使用cnpm淘宝镜像,很不错,速度快很多。还有可以逛npm的官网去查询自己想要看的模块,里面都有模块的详细介绍。

webpack的关键文件:webpack.config.js

  • webpack.config.js是webpack的配置文件,对项目中的webpack进行配置。
  • 文件中用到的插件和loader需要先试用npm安装好:
  1. // 安装css-loader
  2. npm install css-loader --save-dev
  3. // 安装htmlWebpackPlugin
  4. npm install html-webpack-plugin --save-dev
  • 项目根目录新建简单的webpack.config.js文件:
  1. //引入模块
  2. const webpack = require('webpack');
  3. const path = require('path');
  4. const htmlWebpackPlugin = require('html-webpack-plugin');
  5. //配置
  6. const config = {
  7. entry: './path/to/my/entry/file.js',
  8. output: {
  9. path: path.resolve(__dirname, 'dist'),
  10. filename: 'my-first-webpack.bundle.js'
  11. },
  12. module: {
  13. rules: [
  14. { test: /\.css$/, use: 'css-loader' }
  15. ]
  16. },
  17. plugins: [
  18. new HtmlWebpackPlugin({template: './src/index.html'})
  19. ]
  20. };
  • 这个文件中关键的东西就是上述提到的:四个核心概念:入口(entry)、输出(output)、loader、插件(plugins)。弄懂这四个核心的东西,webpack也就懂得差不多了,起码懂得怎么用。

  • 各大核心的作用:

  1. entry: 入口文件,也就是想要被打包的文件,这里可以是一个或者多个。
  2. output: 输入文件,表示打包后的文件将会被输出到哪里,可以一个或多个。
  3. module:模块,里面的rules是一个数组,存放则项目中需要用到的loader,loader可以对资源文件进行一系列的处理。常见的loader:style-loader,css-loader,less-loader,babel-loader,url-loader等等。
  4. plugins:插件,为webpack添加所需的功能,如例子里面的是自动生成html模板插件。

    更多细节在webpack的官网上查看。

最后再说说:

  • 本次文章主要说说自己使用webpack时的一些想法和收获,可能写得不是很好,但这是个学习的过程,我很享受。
  • 再提提,以前我不怎么喜欢去看一些官方的文档,因为全都是英文,自己英语也不是很好。但是后来硬着头皮看,发现在文档中学到的东西很多,也更有助于理解,有的文档写得很详细,会懂得很多。这过程中不会的英语单词就去查,顺便就补补英语,其实挺好。通过自己看文档,然后能用,能做,心里美滋滋。

前端模块化工具--webpack使用感受的更多相关文章

  1. 前端模块化工具-webpack

    详解前端模块化工具-webpack webpack是一个module bundler,抛开博大精深的汉字问题,我们暂且管他叫'模块管理工具'.随着js能做的事情越来越多,浏览器.服务器,js似乎无处不 ...

  2. 【webpack学习笔记(一)】流行的前端模块化工具webpack初探

    从开发文件到生产文件   有一天我突然意识到一个问题,在使用react框架搭建应用时,我使用到了sass/less,JSX模版以及ES6的语法在编辑器下进行开发,使用这些写法是可以提高开发的效率.可是 ...

  3. 【webpack】流行的前端模块化工具webpack初探

    从开发文件到生产文件   有一天我突然意识到一个问题,在使用react框架搭建应用时,我使用到了sass/less,JSX模版以及ES6的语法在编辑器下进行开发,使用这些写法是可以提高开发的效率.可是 ...

  4. 详解前端模块化工具-webpack

    webpack是一个module bundler,抛开博大精深的汉字问题,我们暂且管他叫'模块管理工具'.随着js能做的事情越来越多,浏览器.服务器,js似乎无处不在,这时,使日渐增多的js代码变得合 ...

  5. 前端模块化工具--webpack学习心得

    话说前头 webpack前段时间有听说一下,现在已经到了3.x的版本,自己没去接触.因为之前使用gulp来作为自己的项目构建工具.现在感觉gulp使用的趋势在减少.现在这段时间去接触了webpack, ...

  6. 前端构建工具 webpack

    一.自我初级认知  (是什么?     能干什么,有卵用?       有选择为什么要选你?(比较优势在哪) )     适合的才是最好的 模块打包器(module bundler)     根据项目 ...

  7. 前端构建和模块化工具-coolie

    [前言] 假设你之前用过前端模块化工具:seajs.requirejs. 用过前端构建工具grunt.gulp, 而且感到了一些不方便和痛苦,那么你能够试试coolie [coolie] 本文不是一篇 ...

  8. 模块化管理工具兼打包工具 webpack

    webpack 是一个[模块化管理工具]兼[打包工具] 是一个工具(和seajs,requirejs管理前端模块的方式是不一样) 在webpack一个文件就是一个模块! seajs,requirejs ...

  9. 前端模块化开发篇之grunt&webpack篇

    几个月前写了一篇有关gulp和browserify来做前端构建的博客,因为browserify用来做js的打包时可能有些麻烦(特别是在写React的时候),所以这里再强烈推荐一款js打包工具-webp ...

随机推荐

  1. 38. Count and Say - Unsolved

    https://leetcode.com/problems/count-and-say/#/description The count-and-say sequence is the sequence ...

  2. 15.Three Sum

    思路 直接暴力,\(O(n^4 log(n))\),不出意外的超时了.. class Solution { public: vector<vector<int>> threeS ...

  3. Lucene全文搜索之分词器:使用IK Analyzer中文分词器(修改IK Analyzer源码使其支持lucene5.5.x)

    注意:基于lucene5.5.x版本 一.简单介绍下IK Analyzer IK Analyzer是linliangyi2007的作品,再此表示感谢,他的博客地址:http://linliangyi2 ...

  4. PHP基础入门(三)---PHP函数基础

    PHP基础入门(三)---函数 今天来给大家分享一下PHP的函数基础.有了前两章的了解,想必大家对PHP有了一定的基础了解.想回顾前两章的朋友可以点击"PHP基础入门(一)"&qu ...

  5. CommonsChunkPlugin并不是分离第三方库的好办法(DllPlugin科学利用浏览器缓存)

    webpack算是个磨人的小妖精了.之前一直站在glup阵营,使用browserify打包,发现webpack已经火到爆炸,深怕被社区遗落,赶紧拿起来把玩一下.本来只想玩一下的.尝试打包了以后,就想启 ...

  6. TeamViewer——可以实现在手机上随时远程控制你的电脑

    小编今天给大家推荐一款强大的远程控制软件——TeamViewer,可以让你的手机连接你自己的电脑,不管你身处何处,只要电脑和手机都能联网,那么你就可以在手机上控制你的电脑了.以下介绍下如何安装和使用方 ...

  7. java面试笔试大汇总

    java面试笔试题大汇总5 JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象:2.继承:3.封装:4. 多态性: 2.String是最基本的数据类型吗? 基本数据类型包括byte.int. ...

  8. sql 注入命令大全

    1.判断有无注入点 ; and 1=1 and 1=2 2.猜表一般的表的名称无非是admin adminuser user pass password 等.. and 0<>(selec ...

  9. 有关SQL模糊查询

    执行 数据库查询时,有完整查询和模糊查询之分. 一般模糊语句如下: SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式: 1,%:表示任意0个 ...

  10. scrapy架构初探

    scrapy架构初探 引言 Python即时网络爬虫启动的目标是一起把互联网变成大数据库.单纯的开放源代码并不是开源的全部,开源的核心是"开放的思想",聚合最好的想法.技术.人员, ...