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的导出


CommonJS的导出

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

module.exports=【moduleA,moduleB,....moduleX】;

CommonJS的导入


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(模块化开发)的更多相关文章

  1. webpack初体验之模块化开发

    写在前面的话 上次写过一篇关于webpack入门的博客,当时只是说借助node来完成开发,并用webpack打包以让浏览器识别.其实其主要思想就是实现前端模块化开发. 众所周知,历史上,JavaScr ...

  2. webpack学习2.1 模块化开发(JS模块化&CSS模块化)

    一.JS模块化 命名空间,COMMONJS,AMD/CMD/UMD,ES6 module 1.什么是命名空间 库名.类别名.方法名 弊端:在命名空间重复生命,要记住完整的路径名(而且很长) var N ...

  3. 记webpack下进行普通模块化开发基础配置(自动打包生成html、多入口多页面)

    写本记时(2018-06-25)的各版本 "webpack": "^4.6.0"  //可直接使用4x以上的开发模式,刷新很快 "webpack-de ...

  4. webpack前置知识2(JavaScript项目初始化)

    所有的JavaScript项目都是在终端输入npm init -y进行项目初始化,如果要自定义项目规则,去掉 -y 参数. vscode终端快捷键ctrl+` 初始化 运行上述命令后,项目内会新建一个 ...

  5. 前端模块化开发篇之grunt&webpack篇

    几个月前写了一篇有关gulp和browserify来做前端构建的博客,因为browserify用来做js的打包时可能有些麻烦(特别是在写React的时候),所以这里再强烈推荐一款js打包工具-webp ...

  6. JavaScript进阶【一】JavaScript模块化开发的基础知识

    //模块化的最初写法 //1.最初写法 //下面的m1和m2就组成了一个模块 //缺点:"污染"了全局变量,无法保证不与其他模块发生变量名冲突,而且模块成员之间看不出直接关系. f ...

  7. node模块化开发基本知识学习笔记

    传统非模块化开发缺点: 1.命名冲突 2.文件依赖 标准的模块化规范: 1.AMD-requirejs 2.CMD-seajs 服务器端模块化规范: 1.CommonJS-Node.js 模块化相关的 ...

  8. 基于webpack和vue.js搭建开发环境

    前言 在对着产品高举中指怒发心中之愤后,真正能够解决问题的是自身上的改变,有句话说的好:你虽然改变不了全世界,但是你有机会改变你自己.秉承着“不听老人言,吃亏在眼前”的优良作风,我还是决定玩火自焚. ...

  9. JAVAScript:前端模块化开发

    目录 一:前端模块化概要 1.1.模块化概要 1.2.函数封装 1.3.对象封装 1.4.立即执行函数表达式(IIFE) 1.5.模块化规范 1.5.1.CommonJS 1.5.2.AMD((Asy ...

随机推荐

  1. MySQL数据库入门备份数据库

    MySQL数据库入门——备份数据库   一提到数据,大家神经都会很紧张,数据的类型有很多种,但是总归一点,数据很重要,非常重要,因此,日常的数据备份工作就成了运维工作的重点中的重点的重点....... ...

  2. HTML-复杂动画和变形

    1.复杂动画 (1)涉及到的属性: animation-name:动画名称: animation-duration:单次动画总时长: animation-timing-function:时间函数: a ...

  3. 错误代码errno值的含义

    错误代码errno值的含义 查看错误代码errno是调试程序的一个重要方法.当C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义, ...

  4. Maven项目构建利器05——Maven的生命周期

    Maven各个构建环节执行的顺序: 不能打乱顺序, 必须按照既定的正确顺序(编译,测试.打包.部署)来执行Maven的核心程序中定义了抽象的生命周期, 生命周期中各个阶段的具体任务是由插件来完成的,可 ...

  5. linux vps定时备份网站、数据库命令sh

    vps定时备份数据库命令,将下面的代码保存为backsql.sh,然后设置定时任务运行即可. cd /home/admin/backup #切换到备份目录 btimes=$(date +%y%m%d% ...

  6. 约会 Rendezvous:基环树

    提炼:tarjan判环,dfs建树,倍增lca,预处理环两点间距离 我犯的错误: 1.基环树不只有一棵,可以有很多 2.自环不能将其忽略,(对于我的算法)应该将其特殊考虑在算法内 3.代码一定要简洁有 ...

  7. DevExpress Winforms Controls:安装使用系统要求文档

    [DevExpress WinForms v19.1下载] 本文档包含了有关安装和使用DevExpress WinForms控件的系统要求信息. .NET Framework 下图展示了支持的.NET ...

  8. DevExpress v19.1新版亮点——WinForms篇(五)

    行业领先的.NET界面控件DevExpress v19.1终于正式发布,本站将以连载的形式介绍各版本新增内容.在本系列文章中将为大家介绍DevExpress WinForms v19.1中新增的一些控 ...

  9. Python-Django的windows环境

    下载安装python2.7 : 最好是安装win32的,64bit的很多的lib都不支持.python-2.7.3 http://python.org/getit/releases/2.7.3/ 下载 ...

  10. php+html5实现无刷新上传,大文件分片上传,断点续传

    核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...