深入浅出requireJS-1
我们都知道,虽然我们可以通过原型和继承来使javascript面向对象。但是,当js代码和逻辑过多时,代码的维护和扩展会变的很不方便。这时,nodejs做的非常好,但是在浏览器端模块化的js编程一直都是个难题。而requireJS就是来帮助我们解决这个问题的。requireJS遵循amd规范,所以让我们先了解下关于AMD规范的事情。
一、AMD规范
AMD规范是浏览器端的模块规范,它的全称为异步模块定义。从名称上看便知它是适合script tag的。也可以说AMD是专门为浏览器中JavaScript环境设计的规范。它吸取了CommonJS的一些优点,但又不照搬它的格式。开始AMD作为CommonJS的transport format 存在,因无法与CommonJS开发者达成一致而独立出来。它有自己的wiki 和讨论组 。
AMD设计出一个简洁的写模块API:
define(id?, dependencies?, factory);
其中:
- id: 模块标识,可以省略。
- dependencies: 所依赖的模块,可以省略。
- factory: 模块的实现,或者一个JavaScript对象。
define(function() {return {mix: function(source, target) {}};
});
ui.js
define(['base'], function(base) {return {show: function() {// todo with module base}}
});
page.js
define([
'base'
],
function
(base) {
return
{
show:
function
() {
// todo with module base
}
}
});
data.js
define({
users: [],
members: []
});
- 定义无依赖的模块(base.js)
- 定义有依赖的模块(ui.js,page.js)
- 定义数据对象模块(data.js)
define(
'index'
, [
'data'
,
'base'
],
function
(data, base) {
// todo
});
define(
function
(require, exports, module) {
var
base = require(
'base'
);
exports.show =
function
() {
// todo with module base
}
});
- define({ "foo": "bar" });
- define('this is {{data}}.');
- define( function(require, exports, module) {
- // 模块代码
- });
- define( 'module', ['module1', 'module2'], function( require, exports, module ){
- // 模块代码
- } );
- define(function( require, exports ){
- var a = require('./a');
- a.doSomething();
- });
- define( function(require, exports, module) {
- require.async('.a', function(a){
- a.doSomething();
- });
- });
- define(function( require, exports ){
- exports.foo = 'bar'; // 向外提供的属性
- exports.do = function(){}; // 向外提供的方法
- });
- define(function( require, exports ){
- return{
- foo : 'bar', // 向外提供的属性
- do : function(){} // 向外提供的方法
- }
- });
- define({
- foo : 'bar', // 向外提供的属性
- do : function(){} // 向外提供的方法
- });
- define(function( require, exports ){
- exports = {
- foo : 'bar', // 向外提供的属性
- do : function(){} // 向外提供的方法
- }
- });
- define(function( require, exports, module ){
- module.exports = {
- foo : 'bar', // 向外提供的属性
- do : function(){} // 向外提供的方法
- }
- });
转载于:https://www.cnblogs.com/dunken/p/4524093.html
深入浅出requireJS-1相关推荐
- 深入浅出 RequireJS
简介 一个复杂的应用,其编程语言也必须要有模块机制,方能更好的组织代码.在前端 js 模块中,RequireJS 是一个非常小巧的 JavaScript 模块载入框架,是 AMD 规范最好的实现者之一 ...
- Python --深入浅出Apriori关联分析算法(二) Apriori关联规则实战
上一篇我们讲了关联分析的几个概念,支持度,置信度,提升度.以及如何利用Apriori算法高效地根据物品的支持度找出所有物品的频繁项集. Python --深入浅出Apriori关联分析算法(一) 这次 ...
- MSDN Webcast“深入浅出ASP.NET AJAX系列”
课程: ASP.NET AJAX深入浅出系列课程(1):ASP.NET AJAX 概述(3月13日):对于ASP.NET AJAX的大致功能进行概述和演示,通过简单的演示让听众了解到ASP.NET A ...
- 5.3Role和Claims授权「深入浅出ASP.NET Core系列」
5.3Role和Claims授权「深入浅出ASP.NET Core系列」 原文:5.3Role和Claims授权「深入浅出ASP.NET Core系列」 希望给你3-5分钟的碎片化学习,可能是坐地铁. ...
- 深入浅出开源性能测试工具 Locust (使用篇 1)
在<[LocustPlus序]漫谈服务端性能测试>中,我对服务端性能测试的基础概念和性能测试工具的基本原理进行了介绍,并且重点推荐了Locust这一款开源性能测试工具.然而,当前在网络上针 ...
- 《深入浅出iPhone/iPad开发(第2版)》——在Xcode中建立你的界面
本节书摘来自异步社区<深入浅出iPhone/iPad开发(第2版)>一书中的在Xcode中建立你的界面,作者 [美]Dan Pilone , Tracey Pilone,更多章节内容可以访 ...
- 基于angularJS和requireJS的前端架构
1.概要描述 1.1.angularJS描述:angularJS是可以用来构建WEB应用的,WEB应用中的一种端对端的完整解决方案.通过开发者呈现一个更高层次的抽象来简化应用的开发.最适合的就是用它来 ...
- RequireJS学习笔记(转)
前言 进入移动前端是很不错的选择,这块也是我希望的道路,但是不熟悉啊... 现在项目用的是require+backbone,整个框架被封装了一次,今天看了代码搞不清楚,觉得应该先从源头抓起,所以再看看 ...
- 【组队学习】【35期】深入浅出Pytorch
深入浅出Pytorch 航路开辟者:李嘉骐.牛志康.刘洋.陈安东 领航员:朱松青 航海士:管柯琴.宋泽山.林旭升 基本信息 开源内容:https://github.com/datawhalechina ...
- 深入浅出Pytorch:02 PyTorch基础知识
深入浅出Pytorch 02 PyTorch基础知识 内容属性:深度学习(实践)专题 航路开辟者:李嘉骐.牛志康.刘洋.陈安东 领航员:叶志雄 航海士:李嘉骐.牛志康.刘洋.陈安东 开源内容:http ...
最新文章
- 以太坊智能合约开发第七篇:智能合约与网页交互
- windows 下执行mysql脚本_Windows下批处理执行MySQL脚本文件
- hbase集群无法重启的可能原因之一及解决办法
- Windows CE下驱动程序开发基础
- 第二章 认识计算机硬件
- Android 要收费?周鸿祎:这是迟早的事!
- 可能是世界上最快、最先进的密码恢复程序!
- Vin码车架号识别技术已经很成熟了
- mysql的tps是什么意思_Mysql数据库的QPS和TPS的意义和计算方法
- java bigdecimal.round_down,java BigDecimal 的 setScale() 方法的 BigDecimal.ROUND_DOWN 舍入模式的BUG,坑...
- FCPX插件:15种棱镜折射图文展示介绍动画效果 Prism Slideshow
- 论Fidderler抓包wegame查询召唤师战绩是否可行?
- PS改变图片像素大小(一寸照片变二寸)
- BootStrap---day02、03微金所项目
- [个人开发者赚钱九]做一个日收入10元的APP!
- 关于图形的一些基础知识
- TRW破解计量器具管理系统MEMS2.0
- U盘防拷贝选择隐大师
- 天津海河英才学历型三无调档落户具体流程
- 【正点原子STM32连载】第四十章 DHT11数字温湿度传感器 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
热门文章
- 数据结构之图:用图解决案例,Python代码实现——24
- Vue动态组件和组件缓存
- Nodejs ejs模板引擎
- LeetCode 2059. 转化数字的最小运算数(BFS)
- LeetCode 246. 中心对称数(哈希)
- 程序员面试金典 - 面试题 01.03. URL化(字符串)
- LeetCode 461. 汉明距离(异或^ 与)
- python拆分合并文件_Python 视频文件的分割和合并
- oracle磁盘组故障组的概念,ASM中理解的问题大家帮忙!!(asm的外部冗余,为什么也有故障组呢?)...
- asp.net接受表单验证格式后再提交数据_如何解析 el-form-renderer 表单渲染器1.14.0...