requirejs是一个简单的javascript框架,支持模块化编码和模块的异步载入。

在requireJS中模块能够分为:匿名模块和命名模块这2种。

requireJS定义一个匿名模块

define(function(){  

	return {id:"noName"};

}); 

requireJS定义一个命名模块

define("constantModule",[],function(){  

	return {id:"hasName"};

}); 

requireJS官网上也说: It is normally best to avoid coding in a name for the module and just let the optimization tool burn in the module names。就是说推荐使用匿名模块。

jquery从1.7版本号開始支持AMD(Asynchronous Module Definition)。而且是一个命名模块,模块名就是jquery。我使用的是jquery-1.11.1.js,源代码例如以下:

if ( typeof define === "function" && define.amd ) {
define( "jquery", [], function() {
return jQuery;
});
}

如今看下使用requireJS框架载入jquery。仅仅要路径是正确的。以下代码是可以正确载入jquery的。

require.config({
baseUrl:"./../",
paths: {
jquery: 'jquery-1.11.1'
}
}); //jquery框架的模块名是jquery,这里不能改动,不然载入不成功
require(["jquery"], function(jq) { //假设载入成功,应该显示1.11.1
alert(jq().jquery); });

上面的代码可以正常载入jquery框架之后,我们略微改动下上面的代码

require.config({
baseUrl:"./../",
paths: {
jquery_name: 'jquery-1.11.1'
}
}); //jquery框架的模块名是jquery,这里不能改动,不然载入不成功
require(["jquery_name"], function(jq) { //假设载入成功,应该显示1.11.1
alert(jq().jquery); });

能够发现。这次jquery框架不能正常载入。我们不过改变了模块名而已。这里能够得出一个结论:

假设是命名模块,那么使用require载入该模块的时候。模块名一定要正确,不能任意改动

接下来我们载入自定义的匿名模块和命名模块。验证下我们的结论。

require.config({
baseUrl:"./../",
paths: {
jquery: 'jquery-1.11.1',
hehe: 'require_demo/module_noName',
constantModule: 'require_demo/module_hasName',
}
}); //jquery框架的模块名是jquery,这里不能改动,不然载入不成功
require(["jquery","hehe","constantModule"], function(jq,noName,hasName) { alert(jq().jquery);
alert(noName.id);
alert(hasName.id);
});

调整文件路径,保证上面的代码可以正常载入。接下来我们可以改动上面的代码

require.config({
baseUrl:"./../",
paths: {
jquery: 'jquery-1.11.1',
xx: 'require_demo/module_noName',
constantModule_hehe: 'require_demo/module_hasName',
}
}); //jquery框架的模块名是jquery,这里不能改动,不然载入不成功
require(["jquery","xx","constantModule_hehe"], function(jq,noName,hasName) { alert(jq().jquery);
alert(noName.id);
alert(hasName.id);
});

能够发现:xx模块能够正常载入,constantModule_hehe不能正常载入。

我们能够看到:匿名模块具有更大的灵活性。载入匿名模块的时候,名称能够任意指定

requireJS的匿名模块和命名模块的区别和最佳实践的更多相关文章

  1. shell 匿名管道和命名管道

    管道的特点:如果管道中没有数据,那么取管道数据的操作就会滞留,直到管道内进入数据,然后读出后才会终止这一操作:同理,写入管道的操作如果没有读取管道的操作,这一动作也会滞留. 1,匿名管道 匿名管道使用 ...

  2. 使用RequireJS并实现一个自己的模块加载器 (一)

    RequireJS & SeaJS 在 模块化开发 开发以前,都是直接在页面上引入 script 标签来引用脚本的,当项目变得比较复杂,就会带来很多问题. JS项目中的依赖只有通过引入JS的顺 ...

  3. 使用RequireJS并实现一个自己的模块加载器 (二)

    2017 新年好 ! 新年第一天对我来说真是悲伤 ,早上兴冲冲地爬起来背着书包跑去实验室,结果今天大家都休息 .回宿舍的时候发现书包湿了,原来盒子装的牛奶盖子松了,泼了一书包,电脑风扇口和USB口都进 ...

  4. seajs模块标识命名和解析规则

    模块标识采用路径形式,但要注意与路径的区别.require.require.async的第一个参数是模块标识.而seajs.use第一个参数为文件路径. use是全局的,require是局部的.模块标 ...

  5. Python下OS模块重命名方法renames

    在python中有很多强大的模块,其中我们经常要使用的就是OS模块,OS模块提供了超过200个方法来供我们使用,并且这些方法都是和数据处理相关的,这里介绍下重命名这个方法. OS的重命名方法是os.r ...

  6. requireJS使用shim注入非标准模块详解

    在javascript中定义全局变量有2种方式,本质上是等价的,都是向window对象注入属性或者方法. // global.js var g_name = "aty"; wind ...

  7. Python第十五天 datetime模块 time模块 thread模块 threading模块 Queue队列模块 multiprocessing模块 paramiko模块 fabric模块

    Python第十五天  datetime模块 time模块   thread模块  threading模块  Queue队列模块  multiprocessing模块  paramiko模块  fab ...

  8. Python第十一天 异常处理 glob模块和shlex模块 打开外部程序和subprocess模块 subprocess类 Pipe管道 operator模块 sorted函数 os模块 hashlib模块 platform模块 csv模块

    Python第十一天    异常处理  glob模块和shlex模块    打开外部程序和subprocess模块  subprocess类  Pipe管道  operator模块   sorted函 ...

  9. NodeJS模块和ES6模块系统语法及注意点

    社区模块规范: 1.CommonJS规范 规范实现者: NodeJS 服务端 Browserify 浏览器 2.AMD规范 全称 异步模块定义 规范实现者: RequireJS 浏览器 3.CMD规范 ...

随机推荐

  1. DESede对称加密算法工具类

    利用Cipher的核心功能,自己封装了一个加密解密的工具类,可以直接使用.在使用之前需要先下载commons-codec-1.9.jar,并导入项目. 工具类如下: package com.pcict ...

  2. java 实现poi方式读取word文件内容

    1.下载poi的jar包 下载地址:https://www.apache.org/dyn/closer.lua/poi/release/bin/poi-bin-3.17-20170915.tar.gz ...

  3. 省市区县三级联动JAVA+MySQL+JQuery

    场景介绍: 由于项目要求,需要做一个进件(新增)功能,而该功能里要用到车品牌.车系.车型的联动查询,也就是经典的三级联动. 大体思路如下: 进入页面,会把所有的车品牌(第一级)在后台查询出来,放到缓存 ...

  4. linux文件夹操作及递归遍历文件夹

    文件夹相关函数介绍 //mkdir 函数创建文件夹 #include <sys/stat.h> #include <sys/types.h> int mkdir(const c ...

  5. 无废话MVC入门教程一[概述、环境安装、创建项目]

    (转载) 本文目标 1.对MVC有初步的了解 2.能够在VS2010的基础之上安装MVC3的开发和运行环境 3.对MVC框架有概括性的认识 本文目录 1.什么是MVC 2.VS2010安装MVC3 3 ...

  6. WIN7如何查找网络打印机

    1 在开始菜单中输入"打印机"并点击"添加打印机" 2 点击下面一个,并搜索家庭组的打印机,一般可以搜到(注意这台电脑不能关机或睡眠). 3 查找并添加会需要安 ...

  7. PHP #2003 - 服务器没有响应怎么办

    1 出现这个问题的时候,首先可以肯定Apache服务器没有问题,因为如果Apache服务器有问题,则根本登不上phpMyadmin,如果你能登上localhost则说明Apache服务器没问题. 2 ...

  8. javaScript Windows相关

    javaScript 关于Windows 1 Windows 对象 <1>全部浏览器都支持 window 对象.它表示浏览器窗体. <2>全部 JavaScript 全局对象. ...

  9. 如何设置outlook实现自动秘密抄送邮件的功能?

    很多朋友会发现虽然在家里同步了公司的邮箱可以正常收发邮件,可是每当使用家里的outlook发送相关邮件的时候,在公司的邮箱里找不到相关的发件记录,只能同步收件箱,而不能同步发件箱应该是比较让人困扰的问 ...

  10. JDBC数据库编程:callableStatement接口

    了解MySQL存储过程建立, 了解存储过程中参数传递的三种方式 了解callablestatement调用存储过程操作. 因为在现在开发中,使用存储过程的地方越来越少,所以,对于存储过程使用,只需要了 ...