一、seajs

  1. 使用seajs的一般步骤

    a)在主页面引入sea.js

    b)写模块

    c)在主页面使用模块

  2.模块的写法

  math.js

 define(function(require, exports, module){
var squareObj=require("square");
module.exports={
add:function(a,b){
return a+b;
},
cube:function(a){
return squareObj.square(a)*a;
}
}
})

  square.js

define(function(){
return {
square:function(a){
return a*a;
}
}
})

  define是定义一个模块的固定用法,其中的参数分别表示:

    require:依赖的文件,里面的参数是相对于sea.js文件的路径

    exports:可以导出方法,但是它不能导出对象

    module.exports:既可以导出方法,也可以导出对象

    如果需要导出的方法有多个就用module.exports,只有一个就用exports。

    这些参数都不是必须的,但是一定要注意,如果你要用exports,前面必须有require,因为参数的位置不能变。

   3.使用模块  

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script src="sea-debug.js"></script>
<script>
seajs.config({
base:"module",
alias:{
query:"jquery-1.12.4"
}
})
seajs.use("math.js",function(obj){
console.log(obj.add(8,3));
console.log(obj.cube(8,3));
})
</script>
</head>
<body> </body>
</html>

  seajs.config:配置seajs,base是设置目录,alias是设置别名

  seajs.use:使用模块

  参数一:使用到的模块的路径,因为base设置了基本路径,所以这里的路径是在基本路径上的路径;如果使用到了多个模块,就用数组包裹多个模块

  参数二:函数,函数里面的参数表示的是每个模块返回的对象,有多个模块就有多个对象,在这个函数里面就可以使用模块里的方法

二、requirejs

  requirejs和seajs的用法基本相同,先引入,写模块,最后使用模块,区别在于使用模块上。

  requirejs的使用模块: 

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script src="require.js"></script>
<script>
requirejs.config({
baseUrl:"scripts/module",
})
requirejs(["math.js"],function(obj){
console.log(obj.add(8,3));
console.log(obj.cube(8,3));
})
</script>
</head>
<body> </body>
</html>

三、seajs和requirejs的区别   

  1、 requirejs可以在引入require.js的script标签中设置模板加载选项,这样可以加载第一个模块

    <script data-main="script/main" src="require.js"></script>

  2、 requirejs的配置中设置基本路径的属性为baseUrl,它的路径是相对于该页面的路径

  3、 requirejs使用模块时不需要写.use,它的第一个参数一定是个数组,即使它只引入一个模块,也要用数组的形式

  4、 seajs是懒加载,懒加载就是什么时候调用,什么时候加载,requirejs是预加载,先加载完毕,然后再执行,所以在一些输出上的顺序会不同

  5、 seajs是基于cmd规范,requirejs是基于amd规范

四、seajs使用jquery

  因为seajs是基于cmd规范,而jquery是基于amd规范,所以seajs在使用jquery的时候,需要将jquery的规范也改成cmd

  在这里我修改的是jquery-1.12.4.js,修改的位置在10972行 ,将amd改成了cmd,注释的部分为原来的代码,下面的代码是修改的

if ( typeof define === "function" && define.cmd ) {
//define( "jquery", [], function() {
// return jQuery;
//} );
define(function(require,exports,module){
module.exports=jQuery;
});
}

五、其它小知识点

  1、 在写路径的时候,“main.js”可以写成”main“,因为在seajs和requirejs的内部会为我们加上.js

  2、 如果路径相对于正在编写的文件目录在同一级,可以使用"./main"来加载路径 ,./就是在此文件目录下查找

  3、模块中,可以用exports导出方法,用module.exports导出对象或方法,还可以用return导出对象或方法

  4、seajs和requirejs的原理就是创建script标签,src等于要引入的文件路径,追加到head后面,引用完后再移除

  

  

seajs和requirejs的更多相关文章

  1. SeaJS与RequireJS最大的区别

    SeaJS与RequireJS最大的区别 U_U 2013-06-20 16:21:12 执行模块的机制大不一样-----------------------------------由于 Requir ...

  2. seajs和requirejs对比;node初识

    seajs 引包 载入主模块(seajs.use('./main')) 定义模块define(function(require,exports,module)) 模块化的好处 1.开发效率高 2.可以 ...

  3. SeaJS 与 RequireJS 的差异对比

    这篇文章主要介绍了SeaJS 与 RequireJS 的差异对比,本文主要对CMD规范和AMD规范的弊端做了对比,并做出了一个总结,需要的朋友可以参考下 “历史不是过去,历史正在上演.随着 W3C 等 ...

  4. SeaJs与RequireJs执行差异

    seajs与requirejs在模块的加载方面是没有差异的,无论是requirejs在定义模块时定义的依赖模块,还是seajs在factory函数中require的依赖模块,在会在加载当前模块时被载入 ...

  5. seajs与requirejs

    1 seajs暴露的两个对象 二 define()定义 引用模块 三插件 css插件和requirejs插件 4 seajs使用和建议

  6. 从Java的角度理解前端框架,nodejs,reactjs,angularjs,requirejs,seajs

    [前端神秘的面纱] 对后端开发来说,前端是神秘的, 眼花缭乱的技术,繁多的框架, 如果你还停留在前端等于只用jquery做开发,那么你out了, 本文从Java的角度简述下目前前端流行的一些框架. 水 ...

  7. RequireJS 和 SeaJS

    RequireJS SeaJS CMD规范 CommonJS的规范: 根据CommonJS规范,一个单独的文件就是一个模块.加载模块使用require方法,该方法读取一个文件并执行,最后返回文件内部的 ...

  8. 对比requirejs更好的理解seajs

    seajs遵循CMD规范,requirejs遵循AMD规范.AMD规范是预加载,CMD规范是赖加载. 下文举例假设有文件 b.js, c.js如下 //b.js define(function(req ...

  9. requirejs和seajs使用感受

    这几天看了下前端模块化的知识,主要是requirejs和seajs相关的知识,还未看es6的模块化知识. 由于目前项目组内的开始推广使用vue,并且开始简单的封装组件,但发现组件js的使用方式依然是原 ...

随机推荐

  1. c#资料

    类型系统: 运行模型: 整型: 浮点: 财务: 布尔: 字符: 引用类型: Console控制字符: {序号,空间:控制字符与精度} 如:{0,3:C2} {空间:#.00} 其中,#表示该位置如果有 ...

  2. 解决:MIUI 8应用商店下载不了软件 APP

    MIUI 8应用商店下载不了软件,是什么原因呢? 原因是:刷了国际版的MIUI,然后又刷回国内的MIUI,刷机时数据没有清理干净. 解决办法:使用RE管理器或者其他第三方可以编辑系统文件的文件管理器, ...

  3. js-JavaScript高级程序设计学习笔记21 改善JavaScript性能的方法

    第24章 最佳实践 1.性能 1.避免全局查找 将在一个函数中会用到多次的全局对象保存在局部变量.比如多次使用document.getElement...,可以首先var doc=document,把 ...

  4. Leetcode 377. Combination Sum IV

    Given an integer array with all positive numbers and no duplicates, find the number of possible comb ...

  5. 【原】用css让一个容器水平垂直

    这种css布局平时用的比较多,也是面试题常出的一个题,网上一搜一大丢,不过还是想自己总结一下. 这种方法比较多,本文只总结其中的几种,以便加深印象. 效果图都为这个: 方法一:position加mar ...

  6. jQuery5~7章笔记 和 1~3章的复习笔记

    JQery-05 对表单和表格的操作及其的应用 JQery-06 jQuery和ajax的应用 JQery-07 jQuery插件的使用和写法 JQery-01-03 复习 之前手写的笔记.实在懒得再 ...

  7. Web jquery表格组件 JQGrid 的使用 - 4.JQGrid参数、ColModel API、事件及方法

    系列索引 Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引 Web jquery表格组件 JQGrid 的使用 - 4.JQGrid参数.ColModel API.事件 ...

  8. grunt安装和使用教程

    grunt的安装 npm intall -g grunt-cli 新建文件夹grunt,在本地文件中添加package.json和Gruntfile.js文件,其中package.json文件的配置如 ...

  9. 深入理解redis持久化

    持久化方式: 快照(RDB)方式,默认方式,文件以二进制方式保存到RDB文件. 文件追加(AOF)方式,文件以协议文本的方式write到AOF文件. 作用,重启后的数据恢复.当两种方式都启用时,red ...

  10. Python之路【第二十二篇】CMDB项目

    浅谈ITIL TIL即IT基础架构库(Information Technology Infrastructure Library, ITIL,信息技术基础架构库)由英国政府部门CCTA(Central ...