导图社区 前端模块化技术方案
前端模块化技术方案思维导图,包括CMD、es Modules、AMD、commonJs等等。
JavaSE-JavaEEDB思维导图,包括:Spring、Hibernate框架、struts2框架、js+jquery+ajax、JSP、Servlet(后期补充)、HTTP协议。
Java SE知识思维导图,包括:Java基础语法、Java OOP编程、Java高级特性、JDK8、Eclispe等内容。
Java知识思维导图,包括:1、Java环境及配置;2、语法、数据类型及表达式;3、结构化程序设计;4、数组与字符串;5、类和对象。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
前端模块化技术方案
CMD
实现
浏览器端
sea.js
说明
整合了common.js 和 amd的特点
模块使用时再声明
模块的加载是异步的,模块使用时才会加载执行
基本语法
引入
同步
var fs = require(fs);
异步
require.async(./module3, function (m3) {})
定义&暴露模块
无依赖
define(function(require, exports, module){exports.xxx = valuemodule.exports = value})
有依赖
define(function(require, exports, module){//引入依赖模块(同步)var module2 = require(./module2)//引入依赖模块(异步)require.async(./module3, function (m3) {})//暴露模块exports.xxx = value})
es Modules
使用Bable将es6转为es5
使用Browserify进行浏览器端编译
服务器端
正常使用
说明
是es6的模块引入方法,依赖需要提前声明好 import在顶层
import 模块名
import a from 模块名 将该模块引入为a
输出
export default 默认输出模块
export 输出模块
跟commonJs的区别
common 运行时加载
因为 CommonJS 加载的是一个对象(即module.exports属性),该对象只有在脚本运行完才会生成
es6 编译时输出接口
ES6 模块是动态引用,并且不会缓存值,模块里面的变量绑定其所在的模块。
es6输出的是一个值的引用
common 输出的是一个值的拷贝
模块可以多次加载,但是只会在第一次加载时运行一次,然后运行结果就被缓存了,以后再加载,就直接读取缓存结果。要想让模块再次运行,必须清除缓存。
AMD
require.js
依赖必须提前声明好
模块加载异步,指定回调函数
style=font-size: inherit;>require([module1, module2], function(m1, m2){使用m1/m2})
define(function(){return 模块})
define([module1, module2], function(m1, m2){return 模块})
commonJs
node
webpack
Browserify
模块加载同步,即资源加载完再执行
每个文件都可以是一个模块
模块加载是运行时同步加载
模块加载是提前编译打包处理
第三方模块
自定义模块
var fs1 = require(./fs);
模块引入说明
读入并执行一个JavaScript文件,然后返回该模块的exports对象。如果没有发现指定模块,会报错
module.exports = 模块或者模块对象集合
exports.value = 模块名
输出说明
module变量代表当前模块。这个变量是一个对象,它的exports属性(即module.exports)是对外的接口