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 ...
随机推荐
- python 3 :list
2 List List中支持混合类型 number_list=[1,2,3,4,5] str_list = ["a","b","c",&qu ...
- Git命令之:git push
保护版权:转自,http://www.yiibai.com/git/git_push.html
- ios / % 四舍五入 向上取整(ceil()) 向下取整(floor())
1. / //Test "/" cout << "Test \"/\"!" << endl; cout ...
- 现身说法:面对DDoS攻击时该如何防御?
上周,我们的网站遭到了一次DDoS攻击.虽然我对DDoS的防御还是比较了解,但是真正遇到时依然打了我个措手不及.DDoS防御是一件比较繁琐的事,面对各种不同类型的攻击,防御方式也不尽相同.对于攻击来的 ...
- info - 阅读 info 文档
SYNOPSIS 总览 info [OPTION]... [MENU-ITEM...] DESCRIPTION 描述 阅读 info 格式的文档. OPTIONS 选项 --apropos=STRIN ...
- 数据库备份及SQL脚本导入
数据库备份及SQL脚本导入 数据导出 su - oracle exp 数据库用户名/数据库密码@ORCL file=20190905.dmp full=y SQL脚本导入 首先导入前查看Oracle用 ...
- 最简单的Android项目
这是我在windows环境下,试验过的最简单Android项目,只用记事本和命令行即可完成. 环境准备 开发环境需要Java SDK(官网下载),Android SDK(官网下载). 首先安装Java ...
- 34.ITerm配置使用——2019年12月24日
2019年12月23日15:17:36 ITerm使用教程 1.快键键配置 设置方法 设置方法如下: (1)选择 Preference 进入偏好设置: (2)选择 Profiles > Keys ...
- python之路day14--列表生成式、生成器generator、生成器并行
列表生成式 列表生成式阅读量: 44 现在有个需求,现有列表a=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求你把列表里的每个值加1,你怎么实现?你可能会想到2种方式 二逼青年 ...
- 有关pip报错的问题
错误消息:“Fatal error in launcher: Unable to create process using '"' 解决办法: python3解决方案:python3 -m ...