模块化
目录
- 理解模块化
- 模块化定义
- 体验模块化
- node.js中的模块分类
理解模块化
在浏览器中,我们写代码时,
- index.html # 主页的页面
- index.js # 主页需要用到的js代码
---- getData()
- tool.js # 为整个项目提供公共方法
---- doSomething(){ }
对于如上的代码结构,如何让index.js
中的getData
去使用tool.js
中的doSomething()
函数?
为什么不能直接让index.js来直接使用tool.js的函数,而要通过index.html来统一管理一下呢?
原因很简单:es5中不支持模块化(不能直接在一个js文件中去引用另一个js文件的方法,必须要通过第三个文件.html
来引入)
模块化的定义
定义:
一个js文件可以引入其他的js文件,能使用引入的js文件的中的变量、数据,这种特性就称为模块化。
作用:
使用模块化开发可以很好的解决变量、函数名冲突问题,也能灵活的解决文件依赖问题。
模块化的发展
- 以前
es5不支持模块化,让前端人员很为难。为了让支持模块化,我们一般会借用第三方库来实现:- sea.js. https://www.zhangxinxu.com/sp/seajs/
- require.js. https://requirejs.org/
- 现在
- es6原生语法也支持模块化(并不表示浏览器也直接支持模块化 — 需要单独设置一下)
- Nodejs内部也支持模块化(与es6的模块化有些不同之处),具体的语法在后面来介绍。
体验模块化
了解几种模块化的写法
- nodejs的模块化
- es6的模块化
- sea.js
- require.js
https://www.zhihu.com/question/20342350
nodejs中的模块分类
每个模块都是一个独立的js文件。每个模块都可以完成特定的功能,我们需要时就去引入它们,并调用。不需要时也不需要管它。(理解于浏览器的js中的Math对象)
核心模块
- 就是nodejs自带的模块,在安装完nodejs之后,就可以随意使用啦。相当于学习js时使用的Array对象。
- 例:fs, http, querystring, path
- 全部模块的源代码 https://github.com/nodejs/node/tree/master/lib
自定义模块
- 程序员自己写的模块。就相当于我们在学习js时的自定义函数。
第三方模块
- 其他程序员写好的模块。nodejs生态提供了一个专门的工具npm来管理第三方模块,后面我们会专门讲到。
- 相当于别人写好的函数或者库。例如我们前面学习的JQuery库,arttemplate等。