webpack前置知识1(模块化开发)
webpack前置知识1(模块化开发)
在开始对模块化开发进行讲解之前,我们需要有这么一个认识,即
模块化开发就是这样的事物,它具有以下优点
- 1.开发效率高
- 1.1各模块并行开发
- 1.2复用性高
- 2.可维护性高
上面的文字生涩难懂,到底什么是模块化开发?我们知道一个成熟稳健的社会,模块化是必然的,即社会分工是明确的。最初的网页开发如同原始社会那样,仅需要些许动画和表单需求即可满足,这时的代码量非常小,即社会分工不明确。这里用原始社会和工业社会的模型作为模块化进行类比。
1.重复性工作多原始社会的食物来源就是采摘和狩猎,也仅此两种工作。
2.业务容易重叠 相邻的部落之间为了食物,必定会争夺,发生战争。
3.流程固化 比如,经验老道的猎手和农民能获得的食物多,但这些老农和猎手不能被替代,一旦变更他们的职位,食物总量必然减少。
而采用机械化的工业社会,将业务流程分割成一个个模块,然后把重复性工作交给了机器,这样大大的提高了生产效率。所以就引出了【为什么要模块化】的话题
为什么要模块化
非模块化:重复性工作多,业务容易重叠出错,流程固化【js调用顺序不能乱】。那什么是模块化?
什么是模块化
常见的模块化规范有ComgnonJS、AMD、CMD,也有ES6的Modules,我们应该选择哪种呢?
因为最火的打包工具webpack 依赖于node,而node的底层规范是CommonJS,所以了解CommonJS是有必要的,而ES6是未来的前端规范,所以这里我们采用的commonjs和ES6模块规范。
模块化的应用
将每一个文件当成一个模块。因为它拥有自己独立的作用域,变量,以及方法等,并且它对其他的模块都不可见。
CommonJS
CommonJS规范规定,每个模块内部,module变量代表当前模块。这个变量是一个对象,它的exports属性(即module.exports)是对外的接口。加载某个模块,其实是加载该模块的module.exports属性。require方法用于加载模块。
CommonJS的导出

module.exports其本质是一个数组,每个导出的模块即是它的一个数组成员。
CommonJS的导入

require的本质是获取module.exports数组中的某个数组成员,比如要获取moduleA,如上图中所示。
ES6的导出export
如果将整个模块导出,使用语法
export default {}
单独导出某个方法和属性,与CommonJS的导出没区别
//info. js
export let name =' 张三'
export let age=15
export let height=172
ES6的导入import ... form
单纯导入一个整个文件,即导入default时,语法如下
import 对象名称 from '模块路径'
单纯导入某个方法和属性时
//import {对象函数/属性,对象函数/属性} from '模块路径'
//math.js导出2个方法
export function add(){}
export function sub(){}
//导入如下
import {add, sub} from '模块路径'
webpack前置知识1(模块化开发)的更多相关文章
- webpack初体验之模块化开发
写在前面的话 上次写过一篇关于webpack入门的博客,当时只是说借助node来完成开发,并用webpack打包以让浏览器识别.其实其主要思想就是实现前端模块化开发. 众所周知,历史上,JavaScr ...
- webpack学习2.1 模块化开发(JS模块化&CSS模块化)
一.JS模块化 命名空间,COMMONJS,AMD/CMD/UMD,ES6 module 1.什么是命名空间 库名.类别名.方法名 弊端:在命名空间重复生命,要记住完整的路径名(而且很长) var N ...
- 记webpack下进行普通模块化开发基础配置(自动打包生成html、多入口多页面)
写本记时(2018-06-25)的各版本 "webpack": "^4.6.0" //可直接使用4x以上的开发模式,刷新很快 "webpack-de ...
- webpack前置知识2(JavaScript项目初始化)
所有的JavaScript项目都是在终端输入npm init -y进行项目初始化,如果要自定义项目规则,去掉 -y 参数. vscode终端快捷键ctrl+` 初始化 运行上述命令后,项目内会新建一个 ...
- 前端模块化开发篇之grunt&webpack篇
几个月前写了一篇有关gulp和browserify来做前端构建的博客,因为browserify用来做js的打包时可能有些麻烦(特别是在写React的时候),所以这里再强烈推荐一款js打包工具-webp ...
- JavaScript进阶【一】JavaScript模块化开发的基础知识
//模块化的最初写法 //1.最初写法 //下面的m1和m2就组成了一个模块 //缺点:"污染"了全局变量,无法保证不与其他模块发生变量名冲突,而且模块成员之间看不出直接关系. f ...
- node模块化开发基本知识学习笔记
传统非模块化开发缺点: 1.命名冲突 2.文件依赖 标准的模块化规范: 1.AMD-requirejs 2.CMD-seajs 服务器端模块化规范: 1.CommonJS-Node.js 模块化相关的 ...
- 基于webpack和vue.js搭建开发环境
前言 在对着产品高举中指怒发心中之愤后,真正能够解决问题的是自身上的改变,有句话说的好:你虽然改变不了全世界,但是你有机会改变你自己.秉承着“不听老人言,吃亏在眼前”的优良作风,我还是决定玩火自焚. ...
- JAVAScript:前端模块化开发
目录 一:前端模块化概要 1.1.模块化概要 1.2.函数封装 1.3.对象封装 1.4.立即执行函数表达式(IIFE) 1.5.模块化规范 1.5.1.CommonJS 1.5.2.AMD((Asy ...
随机推荐
- MySQL数据库入门备份数据库
MySQL数据库入门——备份数据库 一提到数据,大家神经都会很紧张,数据的类型有很多种,但是总归一点,数据很重要,非常重要,因此,日常的数据备份工作就成了运维工作的重点中的重点的重点....... ...
- HTML-复杂动画和变形
1.复杂动画 (1)涉及到的属性: animation-name:动画名称: animation-duration:单次动画总时长: animation-timing-function:时间函数: a ...
- 错误代码errno值的含义
错误代码errno值的含义 查看错误代码errno是调试程序的一个重要方法.当C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义, ...
- Maven项目构建利器05——Maven的生命周期
Maven各个构建环节执行的顺序: 不能打乱顺序, 必须按照既定的正确顺序(编译,测试.打包.部署)来执行Maven的核心程序中定义了抽象的生命周期, 生命周期中各个阶段的具体任务是由插件来完成的,可 ...
- linux vps定时备份网站、数据库命令sh
vps定时备份数据库命令,将下面的代码保存为backsql.sh,然后设置定时任务运行即可. cd /home/admin/backup #切换到备份目录 btimes=$(date +%y%m%d% ...
- 约会 Rendezvous:基环树
提炼:tarjan判环,dfs建树,倍增lca,预处理环两点间距离 我犯的错误: 1.基环树不只有一棵,可以有很多 2.自环不能将其忽略,(对于我的算法)应该将其特殊考虑在算法内 3.代码一定要简洁有 ...
- DevExpress Winforms Controls:安装使用系统要求文档
[DevExpress WinForms v19.1下载] 本文档包含了有关安装和使用DevExpress WinForms控件的系统要求信息. .NET Framework 下图展示了支持的.NET ...
- DevExpress v19.1新版亮点——WinForms篇(五)
行业领先的.NET界面控件DevExpress v19.1终于正式发布,本站将以连载的形式介绍各版本新增内容.在本系列文章中将为大家介绍DevExpress WinForms v19.1中新增的一些控 ...
- Python-Django的windows环境
下载安装python2.7 : 最好是安装win32的,64bit的很多的lib都不支持.python-2.7.3 http://python.org/getit/releases/2.7.3/ 下载 ...
- php+html5实现无刷新上传,大文件分片上传,断点续传
核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...