热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

webpack打包后引用cdn的js_Webpack的简单讲解

自前端模块化以来,webpack和babel逐渐成为前端开发者的标配。Babel主要将es6或者ES7的语法进行转移。webpack则起到前端模块化打包的功能。本质上

自前端模块化以来,webpack和babel逐渐成为前端开发者的标配。Babel主要将es6或者ES7的语法进行转移。webpack则起到前端模块化打包的功能。

本质上来讲,webpack是现代Javascript应用程序的静态模块打包器(module bundler)。当webpack处理应用程序的时候,它会递归的构建一个依赖关系,其中就包含了应用程序需要的每个模块,然后将所有这些模块打包成一个bundle或者多个bundle(按需加载)。

13038c59628580e573220ed916c4308c.png

例如,我们举个栗子:

fdead16b86c303e54c2727799daf5953.png

如上图所示,entry是入口文件,引用了utils1.js和utils2.js。而utils1.js又调用了utils2.js

打包的代码块如下所示:

/******/ ([
/* 0 */ //模块id
/***/ function(module, exports, __webpack_require__) {__webpack_require__(1); //require资源文件id__webpack_require__(2);/***/ },
/* 1 */
/***/ function(module, exports, __webpack_require__) {//util1.js文件__webpack_require__(2);var util1=1;exports.util1=util1;/***/ },
/* 2 */
/***/ function(module, exports) {//util2.js文件var util2=1;exports.util2=util2;/***/ }
...
...
/******/ ]);

bundle.js是以模块id为记号,通过函数把各个文件依赖封装达到分割的效果,以上代码id为0表示entry需要的依赖,1表示utils1需要的依赖。

require资源文件id表示该文件需要加载的各个模块,如_webpack_require__(1)表示 需要加载util1.js 模块。

简单的说,webpack打包后会形成一个立即执行的函数,而各个模块则会成为这个立即执行函数的参数。主函数通过模块的唯一id来对这行参数进行调用。

接下来,我们尝试再本地构建一份webpack。

1,上文已经说过,webpack其实是基于node的打包应用。那么,我们就可以通过npm init构建一个node应用,生成package.json文件。

2,npm install webpack,下载webpack依赖到node_modules中。

3,手动生成webpack.config.js文件。这个文件主要配置webpack的入口,出口文件,以及loader转化,babel转化用的。

module.exports={entry:'./index.js',output:{filename:'./test.js'}
}

如此简单的一个配置就 可以对index.js进行打包了,打包后的文件输出到test.js中。

由于webpack4以后将webpack-cli拆分了出来,所以,直接输入webpack命令并不会执行,全局安装webpack-cli或者再运行node_modules中的webpack可以启动打包程序。

4,再webpack中还可以配置许多loader(css-loader),plugin,babel等操作。比如webpack.config.js中有个resolve配置项,这个是配置webpack模块规则用的。

resolve: {extensions: ['.js', '.vue', '.json'],alias: {'@': resolve('src'),}},

alias配置项是别名的意思。用@指向src文件夹以后,我们引入模块就可以‘@XXX’来代替复杂的‘../’文件引用了。



推荐阅读
  • 本文介绍了 Vue 开发的入门指南,重点讲解了开发环境的配置与项目的基本搭建。推荐使用 WebStorm 作为 IDE,其下载地址为 。安装时请选择适合您操作系统的版本,并通过 获取激活码。WebStorm 是前端开发者的理想选择,提供了丰富的功能和强大的代码编辑能力。 ... [详细]
  • Vue应用预渲染技术详解与实践 ... [详细]
  • 本文详细介绍如何在忘记MySQL服务器密码的情况下进行密码重置,包括具体的步骤和注意事项。 ... [详细]
  • 在GitHub上克隆vue-element-admin项目时遇到依赖安装错误
    在 GitHub 上克隆 vue-element-admin 项目后,使用 `npm install` 安装依赖时遇到了未知的 Git 错误。具体错误信息为 `npm ERR! code 128`,提示命令执行失败。这可能是由于网络问题、Git 配置不正确或某些依赖包的仓库地址无效导致的。建议检查网络连接、更新 Git 版本并确保所有依赖项的 URL 正确无误。 ... [详细]
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom"echarts";4、如果用到map(地图),还 ... [详细]
  • 本文将详细介绍如何在 Vue 项目中使用 Handsontable 插件,包括 npm 安装、基本配置和常用功能的实现。 ... [详细]
  • 微服务优雅上下线的最佳实践
    本文介绍了微服务上下线的正确姿势,避免使用 kill -9 等粗暴手段,确保服务的稳定性和可靠性。 ... [详细]
  • 如何高效查看Java API和源码
    在Java学习过程中,查看API文档和源码是提高编程能力的重要手段。本文将详细介绍如何使用各种工具和方法高效地查看Java API和源码。 ... [详细]
  • 大家好,我是李白。本文将分享一个从零开始的全栈项目,涵盖了设计、前端、后端和服务端的全面学习过程。通过这个项目,我希望能够帮助初学者更好地理解和掌握全栈开发的技术栈。 ... [详细]
  • 深入浅出 webpack 系列(二):实现 PostCSS 代码的编译与优化
    在前一篇文章中,我们探讨了如何通过基础配置使 Webpack 完成 ES6 代码的编译。本文将深入讲解如何利用 Webpack 实现 PostCSS 代码的编译与优化,包括配置相关插件和加载器,以提升开发效率和代码质量。我们将详细介绍每个步骤,并提供实用示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文探讨了如何通过检测浏览器类型来动态加载特定的npm包,从而优化前端性能。具体而言,仅在用户使用Edge浏览器时加载相关包,以提升页面加载速度和整体用户体验。此外,文章还介绍了实现这一目标的技术细节和最佳实践,包括使用User-Agent字符串进行浏览器识别、条件加载策略以及性能监控方法。 ... [详细]
  • 深入解析:React与Webpack配置进阶指南(第二部分)
    在本篇进阶指南的第二部分中,我们将继续探讨 React 与 Webpack 的高级配置技巧。通过实际案例,我们将展示如何使用 React 和 Webpack 构建一个简单的 Todo 应用程序,具体包括 `TodoApp.js` 文件中的代码实现,如导入 React 和自定义组件 `TodoList`。此外,我们还将深入讲解 Webpack 配置文件的优化方法,以提升开发效率和应用性能。 ... [详细]
  • CentOS 7环境下Jenkins的安装与前后端应用部署详解
    CentOS 7环境下Jenkins的安装与前后端应用部署详解 ... [详细]
  • 单元测试:使用mocha和should.js搭建nodejs的单元测试
    2019独角兽企业重金招聘Python工程师标准BDD测试利器:mochashould.js众所周知对于任何一个项目来说,做好单元测试都是必不可少 ... [详细]
  • 本文详细介绍了在 Vue.js 前端框架中集成 vue-i18n 插件以实现多语言支持的方法。通过具体的配置步骤和示例代码,帮助开发者快速掌握如何在项目中实现国际化功能,提升用户体验。同时,文章还探讨了常见的多语言切换问题及解决方案,为开发人员提供了实用的参考。 ... [详细]
author-avatar
yuguiping123
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有