Webpack 从0开始

时间:2021-11-28 22:58:48

Webpack

Demos

https://github.com/ruanyf/webpack-demos

Docs

https://webpack.github.io/docs/?utm_source=github&utm_medium=readme&utm_campaign=trdr

Webpack可以做什么

  • 支持CMD AMD (Gulp还需要browserify才能CMD)
  • 模块加载器 插件机制 (典型的模块加载器babel-loader)
  • 可以通过配置打包成多个文件 (充分利用浏览器缓存功能)
  • 样式 图片等静态资源都可以视作模块 (任何的文件都能被 require)
  • 内置source-map

第一个例子

首先npm install -g webpack

和Gulp一样 有一个入口执行文件 webpack.config.js

module.exports = {
entry: './main.js',
output: {
filename: 'bundle.js'
}
};

如何运行它

$ webpack // 最基本的启动webpack方法
$ webpack -w // 提供watch方法,实时进行打包更新(包括被依赖的文件的改动)
$ webpack -p // 对打包后的文件进行压缩,提供production
$ webpack -d // 提供source map,方便调试

sourcemap对应的文件将会在 webpack:// 下面的一个 . 目录中

ES6

想要把ES6转为ES5 需要babel

当然Gulp也有babel 为什么网上都是webpack呢

对于import export这种 babel后会是 require(...)

浏览器是不认识require的 若用gulp还要再用browserify

但是wepack可以直接把require编译为浏览器可执行的语句

webpack.config.js

module.exports = {
// entry: './main.jsx', //不能直接写main.jsx //当前目录下必须加上 ./ //否则提示找不到文件
entry: './f2.js',
output: {
filename: 'bundle.js'
},
module: {
loaders:[
{ test: /\.js[x]?$/, exclude: /node_modules/, loader: 'babel-loader' },
]
}
};

f2.js

import f1 from './f1.js';
console.log(f1.generateRandom());

f1.js

function generateRandom() {
return Math.random();
} function sum(a, b) {
return a + b;
} export default {
generateRandom:generateRandom,
sum:sum
}

什么是Loader

Loader就是一个使你的资源经过一定transform变成新资源的东东(好吧 这个翻译很糟糕)

Loaders are transformations that are applied on a resource file of your app. They are functions (running in node.js) that take the source of a resource file as the parameter and return the new source.

url-loader

和file-loader类似 能够返回一个文件的路径

文件size 小于limit的 将返回文件的data-url

css-loader style-loader

style-loader是用于加载css文件的

css-loader是将css中的 import url 之类翻译为成require

http://*.com/questions/25472908/is-the-webpack-style-loader-meant-to-load-all-css-or-just-application-specific

css还是建议使用html引入的方式

现代浏览器会先加载css并解析, 用html来引入css而不是bundle.js引入 页面加载更快

且对于base.css 浏览器可以缓存

html-loader

用于load模板html文件

比如var domTmp = require('./dom.tpl.html');

Webpack 从0开始的更多相关文章

  1. Webpack+vue2.0如何注册全局组件 (01)

    Part 1, 问题: webpack + vue2.0框架中,如何在入口js中注册组件? 就是在一个月以前,匆匆闯入vuejs这个社群,基本了解了vuejs的一些基础特性和语法.笔者兴致勃勃地开始想 ...

  2. webpack 4.0.0-beta.0 新特性介绍

    webpack 可以看做是模块打包机.它做的事情是:分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其打包为合适的格式 ...

  3. 基于Vue + Vuex + Vue-router + Webpack 2.0打造微信界面

    一.项目简介 基于Vue + Vuex + Vue-router + Webpack 2.0打造微信界面,实现了微信聊天.搜索.点赞.通讯录(快速导航).个人中心.模拟对话.朋友圈.设置等功能. 二. ...

  4. webpack 4.0 相关

    Webpack 4.0发布了!! https://www.jianshu.com/p/3a13f1b37300 webpack详解 https://juejin.im/post/5aa3d2056fb ...

  5. Webpack 2.0 的文档

    Webpack 2.0 的文档 https://webpack.js.org/get-started/

  6. webpack 4.0 版本的简单使用

    webpack 4.0 学习指南 最近前端又要变天了,vue作者推出了vue-cli 3版本,并且里面使用了webpack 4. 但是webpack 3 和webpack 4 二者的使用方式完全不一样 ...

  7. webpack 3.1 升级webpack 4.0

    webpack 3.1 升级webpack 4.0 为了提升打包速度以及跟上主流技术步伐,前段时间把项目的webpack 升级到4.0版本以上 webpack 官网:https://webpack.j ...

  8. webpack 4.0尝鲜

    发布不久得webpack 4.0据说速度快了68% - 98%,然后还支持没配置文件,所以看起来很牛逼得样子 所以尝试一发 webpack和webpack-cli分离 现在执行webpack命令 必须 ...

  9. 走近webpack(0)--正文之前的故事

    在前端工作的过程中,只要你接触过vue,angular,react,gulp就一定知道webpack或者听说过或者使用过webpack,但是或许你对webpack的使用方法并不是十分了解,只是会用写好 ...

  10. 《前端之路》之 webpack 4.0+ 的应用构建

    目录 一.版本 二.webpack 的主体概念 2-1.入口 2-1-1.单页面入口 2-1-2.多页面应用的入口 2-2.输出 2-3.loader 2-4.plugins 三.如何使用 3-1 关 ...

随机推荐

  1. maven权威指南学习笔记(五)—— POM

    1. 简介 Archetype插件通过 pom.xml 文件创建了一个项目.这就是项目对象模型 (POM),一个项目的声明性描述. 当Maven运行一个目标的时候,每个目标都会访问定 义在项目POM里 ...

  2. Angular.js实现折叠按钮的经典指令.

    var expanderModule=angular.module('expanderModule',[]) expanderModule.directive('expander',function( ...

  3. HDU 2.1.7 (求定积分公式)

    The area Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  4. C#中子类调用父类的实现方法

    这篇文章主要介绍了C#中子类调用父类的实现方法,通过实例逐步分析了类中初始化构造函数的执行顺序问题,有助于加深对C#面向对象程序设计的理解,需要的朋友可以参考下     本文实例讲述了C#中实现子类调 ...

  5. NetBeans 7.2 or 8.0 编辑文件时不显示文件路径。

    NetBeans 7.2 or 8.0 编辑文件时不显示文件路径. 仅仅实用鼠标停在标签上一下,才干够看到.非常不方便. 怎样解: http://plugins.netbeans.org/plugin ...

  6. Django视图(views)

    1.FBV (基于函数的视图) 实例 url.py url(r'^add_publicer/',views.add_publicer) def add_publicer(request): if re ...

  7. 使用Shader制作loading旋转动画

    效果图: 1.绕Z轴旋转的旋转矩阵 2.UV旋转的步骤 (1) 由于旋转矩阵是绕原点旋转的,要把要旋转的UV坐标平移到原点 i.uv -= float2(0.5, 0.5); float2 tempU ...

  8. MD5 和的价值体现在哪里,它是用来做什么的?

    MD5 和的价值体现在哪里,它是用来做什么的? MD5 和是由字母和数字构成的字符串,起到了文件指纹的作用.如果两个文件有相同的 MD5 和值,那么,文件完全相同.您可以为每一软件下载使用所提供的 M ...

  9. 二叉树的实现(Java语言描述)

    实现二叉树   并先序遍历之. package 二叉树的实现; public class BinaryTree<T> { class Node { int value; // 该节点存储的 ...

  10. Qt5的cmake文件位置

    D:\APICenter\Qt\Qt5.8.0\5.8\msvc2015\lib\cmake\Qt5\Qt5Config.cmake