本文中将描述

  • webpack 简述
  • webpack 项目的初始化配置
  • webpack 打包运行一个 vue 项目

1 什么是webpack,到底需要解决什么问题

近几年前端的快速发展,前端已不是简单的html, css, jquery这样一套技术了.前端的世界出现了越来越多的新的技术。例如

  • jsx(类xml语法,增强js语义,结构清晰抽象程度高,诞生了跨平台 react native
    代码模块化)
  • scss, stylus, less预编译语言(缓解浏览器兼容造成的冗余,精简的语法)
  • AMD CommonJS import(模块化方案)
  • babel(转换下一代的js,jsx)

项目不可避免的膨胀,越来越复杂,自然而然的我们就会寻求各种优化,压缩代码的方案,前端工程化让我们非常头疼,在这个寻找前端模块化解决方案过程中我们了解到了webpack。

实质上,webpack可以理解成是一种前端模块化自动打包的解决方案。更重要的是它可以通过配置就可以运用前端的各种技术。

WebPack也可以可以看做是模块打包机,它可以分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其转换和打包为合适的格式供浏览器使用。

webpack 是前端的一个项目构建工具,它是基于 Node.js 开发出来的一个前端工具;

1 webpack 初始化项目

1.1 在项目目录文件下使用终端初始化目录
npm init

1.2 安装基本配置

安装 vue 以及vue-loader ,安装成功后,会在package.json中多一项配置

npm i webpack vue vue-loader
#--save-dev 会作为开发依赖来安装 安装成功后,会在package.json中多一项配置
npm install webpack --save-dev

安装 cssloader


npm i css-loader vue-template-compiler

安装 webpack-dev-server ,它可以在开发环境中提供很多服务

npm install webpack-dev-server --save-dev

安装 cli

 npm i -D webpack-cli

2 webpack 配置基本的打包

webpack 是用来编译打包项目的,那么在这里,我们需要对它进行一些目录的指定,也就是说需要告诉它要打包哪些内容,并且输出到哪。

2.1 配置 webpack 的启动命令

在 package.json文件中添加

"dev": "webpack-dev-server --open --config webpack.config.js"

config 指向了 webpack.config.js 文件,在项目目录下创建 webpack.config.js 文件,在这里面配置 webpack 打包的基本信息

var path = require('path');var config={// webpack 编译的入口文件entry:{// 配置的单入口main:'./main'},//webpack 编译的出口文件// 这里配置的打包后的文件会存储为 vue-wb/dist/main.jsoutput:{// 存放打包后的文件输出目录path:path.join(__dirname,'./dist'),// 资源文件引用的目录publicPath:'/dist/',// 输出文件的名称filename:'main.js'}
};module.exports = config;

在项目目录下创建 main.js 文件,当然目前 main.js 文件中无内容,这个main.js 文件则是上述配置中 webpack 编译的的入口文件。

项目我们在项目目录下创建 index.html , 在这里引用了 “./dist/main.js” 正是上面配置 webpack 打包输出的js文件

<!DOCTYPE html>
<html><meta charset="utf-8"><title>webpack</title><body><div id="app">Hollo world </div><script type="text/javascript" src="/dist/main.js"></script></body>
</html>

然后在项目目录下打开终端 执行

npm run dev

编译成功,打开页面

然后我们在 main.js 文件中加入

document.getElementById('app').innerHTML="hello 小疯子"

然后保存,浏览器中自动更新

3 webpack 加载器描述

在 webpack 的世界中,每个文件都是一个模块,比如 .css .js .html .jpg 等,对于不同的模块,需要使用不同的加载器来处理,比如现在要写一些 css 样式,就需要配置 css-loader 和 style-loader

npm install css-loader --save-dev
npm install style-loader --save-dev

安装完成后,在 webpack.config.js 文件中配置 loader ,增加对 .css 文件的处理

var path = require('path');var config = {// webpack 编译的入口文件entry: {// 配置的单入口main: './main'},//webpack 编译的出口文件// 这里配置的打包后的文件会存储为 vue-wb/dist/main.jsoutput: {// 存放打包后的文件输出目录path: path.join(__dirname, './dist'),// 资源文件引用的目录publicPath: '/dist/',// 输出文件的名称filename: 'main.js'},// module 对象中的 rules 属性中可以指定一系列的loaders,每一个 loader 都// 包含一个 test 和 use 选项// 当 webpack 编译过程中遇到 require() 或者 import 语句导入一个后缀名为 .css // 文件时,先将它通过 css-loader 转换,再通过 style-loader 转换,然后继续打包module: {rules: [{test: /\.css$/,use: ['style-loader','css-loader']}]}
};module.exports = config;

然后在项目目录下创建 style.css文件

#app{font-size: 20;color: blueviolet;
}

然后在 main.js 文件中引入

import './style.css'
document.getElementById('app').innerHTML="hello 小疯子"

然后

npm run dev

4 webpack 中 css 文件的管理

安装 extract-text-webpack-plugin 插件把散落在项目中的所有 css 文件打包并生成一个 css 文件

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

或者 webpack 4.0.0 以上使用

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

然后在配制文件中导入插件

// 导入插件
var extractTextWebpackPlugin = require('extract-text-webpack-plugin');

vue中webpack编译打包使用之Vue知识点归纳(十一)相关推荐

  1. webpack来打包你的vue项目,如发现你的vendor.js过大

    1.如果你使用了webpack来打包你的vue项目,如发现你的vendor.js过大则可以参考本文的解决方案. 2.造成过大的原因是因为在main.js导入第三库太多时,webpack合并js时生成了 ...

  2. 前端面试 vue生命周期钩子是如何实现的?理解vue中模板编译原理?

    生命周期钩子在内部会被vue维护成一个数组(vue 内部有一个方法mergeOption)和全局的生命周期合并最终转换成数组,当执行到具体流程时会执行钩子(发布订阅模式),callHook来实现调用. ...

  3. vue中headers是什么_【vue】饿了么项目-header组件开发

    1.数据传递的理解 在App.vue中用到了header组件,首先注册组件 components: {'v-header': header } 然后才能引用 :seller="seller& ...

  4. 视频教程-在Vue中使用GraphQL实现聊天室-Vue

    在Vue中使用GraphQL实现聊天室 某大厂资深前端工程师,多个大型web项目经验,JS全栈工程师,擅长前端工程化建设.hybrid技术方向. 大碗 ¥39.00 立即订阅 扫码下载「CSDN程序员 ...

  5. vs vue 查看webpack安装成功_在Vue+webpack中详细讲解基础配置

    这篇文章主要介绍了Vue+webpack项目基础配置教程,需要的朋友可以参考下. 最近在学习webpack,跟着课程一个单页面应用,在这里记录一下. 这个部分主要讲了如何配置webpack的环境,以及 ...

  6. 从零开始学VUE之Webpack(Html打包插件的使用)

    打包html文件的插件 目前我们的index.html一致是在项目的根目录下的 我们知道,在真实发布项目的时候,发布的是dist文件夹中的内容,但是dist文件夹中如果没有index,html,那么打 ...

  7. vue中插值表达式和14个vue指令详解

    在学习vue时,插值表达式和vue指令可谓是基础中的基础,这篇文章,就让你彻底了解怎么使用插值表达式和vue中所有指令的用法. 一.插值表达式:{{ }} 可以将vue中的数据填写在插值表达式中 &l ...

  8. 笔记三 vue中封装复用 过滤器 自定义组件 vue中component选项

    题外话: npm install -g express-generator npm安装express框架 封装复用 Vue中关于封装复用的内容,属于Vue中的进阶知识,在实战中对开发者的抽象和泛化能力 ...

  9. vue 中provide的用法_聊聊Vue中provide/inject的应用详解

    众所周知,在组件式开发中,最大的痛点就在于组件之间的通信.在 Vue 中,Vue 提供了各种各样的组件通信方式,从基础的 props/$emit 到用于兄弟组件通信的 EventBus,再到用于全局数 ...

最新文章

  1. Redis的自白:我为什么在单线程的这条路上越走越远?
  2. C++ explicit constructor/copy constructor note
  3. 第 5 章 Nova - 030 - Launch和Shut Off操作详解
  4. EduCoder Linux之文件打包和解压缩
  5. 数据库-数据库的介绍
  6. find 是区分大小写的。对于不区分大小写的写法(转载)
  7. 华为root工具_华为Mate9解锁后无法ROOT 需要手动刷入Recovery怎么办【解决方法】...
  8. bert模型简介、transformers中bert模型源码阅读、分类任务实战和难点总结
  9. HDU 12O3 I NEED A OFFER!
  10. html 星星字体,做华丽的星星文字效
  11. 新广告法违规词、敏感词在线检测工具 淘宝违规词检测、查询
  12. 苹果电脑怎么自定义音频输出设备
  13. 《秘密》· 东野圭吾
  14. Canvas—绘画圆弧
  15. 中级软件设计师简要知识点(5):网络与多媒体基础知识
  16. 程序员如何优雅记笔记(Wiki、Typora、Markdown、坚果云)
  17. Java中的引用传递
  18. 刹车防抱死系统(ABS)
  19. 写好作文的6大步骤,把写作文变成一件“轻松事儿”!
  20. XPE优势与常见问题二

热门文章

  1. ECCV 2020 oral | 基于语义流的快速而准确的场景解析,在Cityscapes上达到80.4%mIoU,26 FPS...
  2. 学术人必备!懒人制作学术会议Oral/Spotlight Video指南
  3. AAAI 2020 | 腾讯优图10篇论文入选,含速算识别、视频识别等主题
  4. Python进阶|聊聊异常处理
  5. 李飞飞团队发布:中国AI期刊影响力首超美国
  6. ResNet被全面超越了,是Transformer干的:轻量版优于MobileNet
  7. django mysql filter_Django filter中用contains 在mysql中的问题
  8. mysql所以字段_MySQL|mysql-索引
  9. Huawei LiteOS简介
  10. 最稳妥的服务器阵列方案:RAID5+热备盘