模块化概念

AMD是requirejs在推广过程中对模块化定义的规范化产出。

异步加载模块,依赖前置,提前执行

Define定义模块define(['require','foo'],function(){return});

Require加载模块(依赖前置)require(['foo','bar'],function(foo,bar){});

CMD是SeaJS在推广过程中对模块化定义的规范化产出。

Define定义exports导出define(function(require,exports,module){});

module上存储了当前模块上的一些对象。

require(./a)直接引入,require.async异步引入

同步加载,依赖就近,延迟执行

类似的还有CommonjsModule/2.0规范

AMD模块化的代码

//index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script data-main="js/main.js" src="./js/require.js"></script>
</head>
<body>
<script> </script>
</body>
</html>
//main.js
define(['require','main'],function(require){
require(['index','test'],function(index,test){
console.log(index());
console.log(test());
})
})
//index.js
define(['require','index'],function(require){
var index = function(){
console.log('test index');
}
return index;
})
//test.js
define(['require','index'],function(require){
var init = function(){
console.log('test init');
}
return init;
})

方法调用的方式

//index.js
define(['require','index'],function(require){
var index = {};
var index = {
init:function(){
console.log('test init');
}
}
return index;
})
//main.js
define(['require','main'],function(require){
require(['index','test'],function(index,test){
console.log(index.init());
console.log(test.init());
})
})
//test.js
define(['require','index'],function(require){
var index = {}; var index = {
init:function(){
console.log('test init');
}
}
return index;
})

效果为



seajs的应用

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="./js/sea.js"></script>
</head>
<body>
<script>
// seajs 的简单配置
seajs.config({
base: "./js/",
alias: {
"jquery": "jquery.js"
}
}) // 加载入口模块
seajs.use("main")
</script>
</body>
</html>
//index.js
define(function(require,exports,module){
// 透过exports对外提供接口
// exports.doSomething = function(){
// console.log('my ok ');
// }
// exports.doSomething2 = function(){
// console.log('my ok2 ');
// }
var a = {};
a.doSomething = function(){
console.log('my ok ');
}
a.doSomething2 = function(){
console.log('my ok2 ');
}
// console.log(module);
module.exports = a; });
//main.js
define(function(require,exports,module){
require('jquery');
console.log('..aaa');
var index =require.async('index',function(index){
console.log(index);
}); })

本文看自前端常用的库和实用技术之JavaScript 模块化视频

前端常用的库和实用技术之JavaScript 模块化的更多相关文章

  1. 前端常用的库和实用技术之JavaScript多线程

    多线程概念: 多线程是指从软件或硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在 同一时间执行多于一个线程,进而提升整理处理性能.具有这种能力的系统包括对称多处理机,多核心 ...

  2. 前端常用的库和实用技术之JavaScript面向切面编程

    Aspect Oriented Programming(AOP)面向切面编程是一个比较热门的话题. AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程 中的某个步骤或阶段,以 ...

  3. 前端常用的库和实用技术之JavaScript高级函数

    1.惰性载入函数 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  4. 前端常用的库和实用技术之JavaScript高级技巧

    javascript高级技巧 变量作用域和闭包 <!DOCTYPE html> <html lang="en"> <head> <meta ...

  5. javascript功能插件大集合 前端常用插件 js常用插件

    转载来源:https://github.com/jobbole/aw... 包管理器管理着 javascript 库,并提供读取和打包它们的工具.•npm – npm 是 javascript 的包管 ...

  6. python进阶05 常用问题库(1)json os os.path模块

    python进阶05 常用问题库(1)json os os.path模块 一.json模块(数据交互) web开发和爬虫开发都离不开数据交互,web开发是做网站后台的,要跟网站前端进行数据交互 1.什 ...

  7. Python常用的库简单介绍一下

    Python常用的库简单介绍一下fuzzywuzzy ,字符串模糊匹配. esmre ,正则表达式的加速器. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable ...

  8. WEB前端常用网站收集

    WEB前端常用网站收集整理 w3school.w3schools 前端里.脚本之家.素材家园 17素材.frontopen NEC更好的CSS方案.一些常用的JS实例 Bootstrap  官网  h ...

  9. 《前端之路》之 Javascript 模块化管理的来世今生

    目录 第二章 - 04: Javascript 模块化管理的来世今生 一.什么是模块化开发 1-1.模块化第一阶段 1-2.封装到对象 1-3. 对象的优化 二.模块化管理的发展历程 2-1.Comm ...

随机推荐

  1. csv 基本操作, 报错解决(UnicodeEncodeError: 'utf-8' codec can't encode characters in position 232-233: surrogates not allowed)

    最常用的一种方法,利用pandas包 import pandas as pd #任意的多组列表 a = [1,2,3] b = [4,5,6] #字典中的key值即为csv中列名 dataframe ...

  2. centos7简单安装配置mariadb

    CentOS 7下yum安装MariaDB yum install mariadb mariadb-server systemctl start mariadb #启动mariadb systemct ...

  3. C# Winform Dev控件之TileControl

    tileControl 包含TileGroup TileGroup 包含 Tile Tile拖拽时代码 TilteControl的itemPress事件执行 或Tile的itemPress执行 Til ...

  4. 18_ShadowWalker

    白皮书中 page-fault error code: shadowWalker 原理: 接管 指定程序 的 执行页面异常.读写页面异常:然后 调用一下正常的 使其出现在快表:然后恢复到假的pte - ...

  5. 【学术篇】规律选手再次证明自己(舒老师的胡策题 T2 LX还在迷路)

    只要你不强制在线, 我就能分块. --Reflash 就算你强制在线, 我还是要分块. --Enzymii 今天做了一波舒老师的毒瘤题, T1据说很水但是没思路所以直接放掉了.. 去看了看T2好像可以 ...

  6. GIT 部分记录

    关于版本回退 git reset HEAD^  #回退a.py这个文件的版本到上一个版本  git reset HEAD^ a.py  git reset HEAD a.py  我试了一下以上2种方式 ...

  7. Burnside引理&Pólya定理

    Burnside's lemma 引例 题目描述 一个由2*2方格组成的正方形,每个格子上可以涂色或不涂色, 问共有多少种本质不同的涂色方案. (若两种方案可通过旋转互相得到,称作本质相同的方案) 解 ...

  8. leetcood学习笔记-141-环形列表

    题目描述: 方法一: class Solution(object): def hasCycle(self, head): """ :type head: ListNode ...

  9. Batch - windows batch 常用命令(cheat sheet)

    原文地址:https://www.oschina.net/code/snippet_158297_4964 1 echo 和 @ 回显命令 @ #关闭单行回显 echo off #从下一行开始关闭回显 ...

  10. 2019hdu第二场

    10:签到求n!取模 #include <iostream> #include <iterator> #include <algorithm> typedef lo ...