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. C#.NET WinForm 多个子Task嵌套 Task.WaitAll 阻塞UI线程

    C#.NET WinForm 多个子Task(子线程)嵌套  Task.WaitAll 阻塞UI线程 (界面) 情况: DoIt()方法内,开了2个Task 执行任务,子任务中会更新UI. DoIt( ...

  2. 如果你也用过 struts2.简单介绍下 springMVC 和 struts2 的区别有哪些?

    a.springmvc 的入口是一个 servlet 即前端控制器,而 struts2 入口是一个 filter 过虑器. b.springmvc 是基于方法开发(一个 url 对应一个方法),请求参 ...

  3. CNN -- Simple Residual Network

    Smiling & Weeping ---- 我爱你,从这里一直到月亮,再绕回来 说明: 1.要解决的问题:梯度消失 2. 跳连接,H(x) = F(x)+x,张量维度必须一致,加完后再激活. ...

  4. DHorse的配置文件

    首先看一下DHorse的配置文件,如下: #============================================================================== ...

  5. 数据标注工具 doccano

    目录 安装 运行 doccano 使用 doccanno 上传数据 定义标签 添加成员 开始标注 导出数据 查看数据 统计 数据标注工具 Label-Studio 安装 打开命令行(cmd.termi ...

  6. W801单片机入门开发环境设置

    W801单片机入门开发环境设置 开发软件下载 烧录工具和SDK 在 WinnerMicro的网站 https://www.winnermicro.com/html/1/156/158/558.html ...

  7. 基于cifar数据集合成含开集、闭集噪声的数据集

    前言 噪声标签学习下的一个任务是:训练集上存在开集噪声和闭集噪声:然后在测试集上对闭集样本进行分类. 训练集中被加入的开集样本,会被均匀得打上闭集样本的标签充当开集噪声:而闭集噪声的设置与一般的噪声标 ...

  8. mysql判断两个字符串(以逗号分隔)是否存在交集

    转载:https://blog.csdn.net/username666/article/details/107815331?utm_medium=distribute.pc_relevant.non ...

  9. 在VisualStudio中WPF应用程序在打开窗体界面设计时报错<发生了未经处理的异常>的解决方法

    在网上找了一个wpf的开源项目,在打开窗体,点击设计的时候,提示错误信息如下 System.Resources.MissingSatelliteAssemblyExceptionThe satelli ...

  10. spring cloud 上云的情况下,Ribbon 客户端负载均衡 与 ALB 服务端负载均衡的选择

    在云环境(例如AWS)中,由于云提供商通常提供强大的负载均衡服务(如AWS的ALB),一般不再需要使用Ribbon这种客户端负载均衡方案.云环境中的负载均衡器通常能够提供更高的可靠性.可扩展性和简化的 ...