Webpack是一个现代JS应用的静态模块打包的工具

学习Webpack需要我们安装NodeJS

配置CNPM & CRM

使用切换镜像的方式配置:【不建议】

npm config set registry http://registry.npm.taobao.org

安装镜像管理工具:

npm install -g nrm

查看镜像列表:

nrm ls

切换镜像:

nrm use 镜像名称

使用CNPM管理工具:【ChineseNPM】

安装cnpm

npm install cnpm -g

配置好NodeJS环境变量后打开终端或者使用GitBash输入此命令:

npm install webpack -g

从NPM镜像下载很慢,所以有安装了淘宝镜像源的可以使用CNPM:

cnpm install webpack -g

你也可以指定版本下载:

cnpm install webpack@3.6.0 -g

在项目中新建一个目录:

用来安装webpack

打开IDEA终端访问:

局部初始化webpack项目:

cnpm init

初始化完成后再执行安装命令:

cnpm install webpack@3.6.0 --save-dev

查看我们这个目录都有些啥:

NPM是一个装包工具,webpack开发必定使用

命令语法:

npm install 包名 安装模式

# 淘宝镜像安装
cnpm install 包名 安装模式

对安装模式的一些种类:

-g 表示global 全局安装
--save-dev 开发环境安装,开发中有效,打包后,不打包访问项目
--save 生成环境安装,不写默认此选项

【最好还是使用NPM安装,如果实在是屡次获取失败,再使用CNPM】


Webpack程序入门:

在上述操作中我们已经在webpack目录中初始化了项目和安装了webpack组件

现在来构建项目结构:

创建dist目录:用来存放打包后的文件

创建src目录:存放我们的源码

创建src/main.js:项目的入口

创建src/util.js:工具类

创建index.html:首页

编写工具类的两个方法并且导出:

function summation(number1, number2) {
return number1 + number2;
} function product(number1, number2) {
return number1 * number2;
} module.exports = { // 导出模块
summation,
product
}

在Main.js引入文件

const math = require("./util");
console.log(math.product(3, 14));
console.log(math.summation(6, 14));

页面引用:

<script src="./src/main.js"></script>

但是实际上会报错:

浏览器里面不具备像require的这些关键字,只有NodeJS中才会被解析到

所以需要Webpack打包了:

打包命令

webpack src/main.js dist/bundle.js
webpack 需要打包的js文件 打包之后的成品js文件的位置

这是bundle.js的内容:

/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) { const math = __webpack_require__(1);
console.log(math.product(3, 14));
console.log(math.summation(6, 14));
/***/ }),
/* 1 */
/***/ (function(module, exports) { function summation(number1, number2) {
return number1 + number2;
} function product(number1, number2) {
return number1 * number2;
} module.exports = { // 导出模块
summation,
product
}
/***/ })
/******/ ]);

这个bundle.js是webpack处理了项目的文件依赖之后生成的js文件

我们的index.html只需要引入这个bundle即可:

【Vue】05 Webpack的更多相关文章

  1. 【vue】MongoDB+Nodejs+express+Vue后台管理项目Demo

    ¶项目分析 一个完整的网站服务架构,包括:   1.web frame ---这里应用express框架   2.web server ---这里应用nodejs   3.Database ---这里 ...

  2. 【vue】创建一个vue前端项目,编译,发布

    npm: Nodejs下的包管理器. webpack: 它主要的用途是通过CommonJS的语法把所有浏览器端需要发布的静态资源做相应的准备,比如资源的合并和打包. vue-cli: 用户生成Vue工 ...

  3. 【译文】使用webpack提高网页性能优化

    这篇文章原文来自https://developers.google.com/web/fundamentals/performance/webpack/. 说是译文其实更像是笔者做的笔记,如有错误之处请 ...

  4. 【Vue】Vue中的父子组件通讯以及使用sync同步父子组件数据

    前言: 之前写过一篇文章<在不同场景下Vue组件间的数据交流>,但现在来看,其中关于“父子组件通信”的介绍仍有诸多缺漏或者不当之处, 正好这几天学习了关于用sync修饰符做父子组件数据双向 ...

  5. 【vue】移动端demo资料

    http://imzjh.com/inew/#/(移动端demo) https://github.com/liangxiaojuan/eleme(饿了么git地址) https://github.co ...

  6. 【vue】本地开发mock数据支持

    项目离不开数据渲染的支持,为本地开发配置 数据  支持. (一)方式一:安装JSON Server搭建mock数据的服务器 json Server 是一个创建 伪RESTful服务器的工具. 配置流程 ...

  7. 【vue】npm run mock & npm run dev 无法同时运行的解决

    [关于系统,没注明的都是windows系统,若以后用的是mac系统则会另外备注] 当项目数据是通过mock搭建而成(参照:[vue]本地开发mock数据支持)时,运行mock服务器和项目的命令 就参照 ...

  8. 【VUE】自定义组件

    [VUE]自定义组件 转载: ============================================ ======================================== ...

  9. 【VUE】使用问题记录

    [VUE]使用问题记录 ===================================================================== 1.Vue.nextTick 修改数 ...

  10. 【VUE】数组

    [VUE]常用函数 转载:https://www.cnblogs.com/yangchongxing/p/10637087.html 目录 ============================== ...

随机推荐

  1. cent os docker yum源

    国外镜像一般很难访问,建议配置阿里云镜像.yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/ ...

  2. 如何解决系统报错:nf_conntrack: table full, dropping packets

    问题 在系统日志中(/var/log/messages),有时会看到大面积的下面的报错: nf_conntrack: table full, dropping packet 这说明系统接到了大量的连接 ...

  3. Javascript高级程序设计第四章 | ch4 | 阅读笔记

    变量.作用域与内存 原始值与引用值 什么是字面量形式? let obj = { key1: val1, key2: val2, foo () { } } 这就是字面量形式,手动声明一个对象的属性和方法 ...

  4. .Net Core+NPOI快速导入导出Excel

    Excel导入导出在开发中是非常常见的,对Excel操作,NPOI使用的是最常用的,但单单用NPOI,要写得代码还是比较多的,可以借助一个Npoi.Mapper库,操作起来就非常简单了,十来行代码就可 ...

  5. 实现 Emlog 最新评论列表不显示博主的评论回复

    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 实现 Emlog 最新评论列表不显示博主的评论回复 日期: ...

  6. Sealos 5.0 正式发布,云本应该是操作系统

    把所有资源抽象成一个整体,一切皆应用,这才是云应该有的样子. 2018 年 8 月 15 日 Sealos 提交了第一行代码. 随后开源社区以每年翻倍的速度高速增长. 2022 年我们正式创业,经历一 ...

  7. Netty(三)Netty模型

    1. Netty模型 Netty主要基于主从Reactor多线程模型做了一定的改进,其中主从Reactor多线程模型有多个Reactor. 简版图: 说明: BossGroup线程维护Selector ...

  8. k8s学习总结之各组件功能及作用的详细介绍

    K8S集群架构: 一个K8S集群是由两大部分组成: Master节点和Node节点 一.Master节点主要包括API Server.Scheduler.Controller manager.etcd ...

  9. 尝试官方的第一个SpringNative 0.11程序(WSL2)

    Spring Native是Spring推出微服务体系Spring Cloud之后的又一大举动,从名字可以猜出,Spring Native是一门面向云原生的技术.如果你还对这个概念不太理解,可以多看一 ...

  10. python3 requests 请求https报错: urllib3.exceptions.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:992)

    正文 代码示例: #-*- coding:utf-8 -*- import requests url = "https://tst.com" res = requests.get( ...