文档章节

seajs的使用方法个人总结

k
 kongjiea
发布于 2015/01/22 12:02
字数 1055
阅读 32
收藏 2

seajs的作用:

当你的网站开发越来越复杂的时候,会经常遇到这些问题吗?
冲突
性能
依赖

seajs如何解决?
①引入sea.js的库
②如何变成模块?
define  在模块grunt合并的时候 define里面要多2个参数 一个id ,一个依赖模块的数组
③如何调用模块?
exports
seajs.use
④如何依赖模块?
require  https://github.com/seajs/seajs/issues/259  requie还是严格书写约定不能被修改。 (但是自己在rrd上却看到被修改了很疑惑)


深入学习seajs
define
require
seajs.use
seajs.config
alias
preload
debug


模块化历史
ECMAScrpt第六版将正式支持模块语法
nodeJS
commonJS
AMD
requireJS
跟seajs一样,web端模块化
seajs采用cmd规范



=====================个人总结。 

/*

* 使用步骤。1,引入seajs  2、定义define模块  3、 模块的调用 seajs.use  4 如何依赖模块(模块之间的依赖) require()
* 步骤二:define参数说明  require 请求地址  exports 对外提供接口对象
 *define中的三个参数可以都写,可以都不写,可以只有前1个,可以只有前2个
 * 
 *步骤三:seajs.use参数说明   如seajs.use('./js/jq.js',function(ex){ dosomething....}) 有2个参数, 第一个参数是请求的模块地址;第二个参数是回调函数其中回调函数中的参数是模块返回的接口对象
 *步骤四:require  例子define(function(require,exports,module){
 *      var a=require('js/module3.js').a;  当这个require方法引入的是sea模块时候,require执行完后返回的结果就是exports接口对象;
 *      上面的例子就是把module3里面暴露的 a属性复制给这个模块 的a ,在本模块就可以直接使用
 *});
 * 
 *================
 * 注意:在sea.js请求成功以后,请求的默认路径都会是sea.js的路径,
 * 特别注意,[ 有些版本 ]加入sea.js的父级或者祖辈父级有名字为‘seajs’的文件夹,那么会以seajs这个文件夹路劲为基础路径
 * 如:在index.html使用seajs.use('js/jq.js')中的的jq.js的路劲是在seajs文件夹下面的
 * 但是index.html为seajs.use('./js/jq.js')时,jq.js是相对index.html的路径

 */


=====在2.1版本的更新


  1. seajs.config 中,去除 plugins 和 preload 功能。 在内部实现上,plugins 是通过 preload 来实现的。但 preload 严格意义上来说,并不是 Sea.js 需要去承担的职责。去除 preload 后,plugins 的加载也变得简单,直接通过 script 提前引入就好,或者通过 combo 服务与 sea.js 一起加载。

  2. 去除对循环依赖的支持。目前 Sea.js 是支持循环依赖的,当有死循环时,也会给出适当的提示。但就如 Go 语言设计者所说,支持循环依赖,看起来很 cool,也能在某些场景下给设计带来简化,但从长远上来,支持循环依赖,会给整体增加复杂性,让依赖关系等都变得复杂。从这个角度上,对循环依赖的支持是一种心理上的完美,而非工程上的完美。去除对循环依赖的支持,有两个做法:1)保留循环依赖时的提示功能,这样对代码层面其实不会有太多精简。2)彻底去除,根本不考虑,有死循环时,自然的报错(比如浏览器的提示)。具体怎么做还有纠结。

  3. 去除对 data-config / data-main 的支持。 这两个是锦上添花的功能。保留着,看似能带来简洁性,但一定程度上掩盖了内部机制。不如让用户直接通过 seajs.use 去启动加载的好。

  4. define(id, fn) 的支持。 2.0 中只支持 define(fn) 和 define(id, deps, fn),考虑将对define(id, fn) 的支持再加回来。在手写 id 的情况下,这种写法还是蛮方面的。

  5. config 中的 alias 改名叫 aliases。 原来的命名是个错误,应该统一用复数形式。这个不一定修改,也许保留这个错误也没问题。


seajs 2.0版本用shim 加载非cmd模块 

 https://github.com/seajs/seajs/issues/579,当然如果不想用grunt构建成cmd模块,那么可以直接用script:src引入非cmd模块文件

本文转载自:http://blog.csdn.net/kongjiea/article/details/38717967

k
粉丝 0
博文 2
码字总数 0
作品 0
深圳
私信 提问
使用SeaJS实现模块化JavaScript开发

前言 SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制。与jQuery等JavaScript框架不同,SeaJS不会扩展封装语言特性,而只是实现JavaScrip...

green001
2014/04/01
144
2
使用SeaJS实现模块化JavaScript开发

前言 SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制。与jQuery等JavaScript框架不同,SeaJS不会扩展封装语言特性,而只是实现JavaScrip...

i33
2013/03/15
352
0
一步步学会使用SeaJS 2.0

一步步学会使用SeaJS 2.0 1、SeaJS是什么? -------------------------------------------------- 1、SeaJS是什么? https://github.com/seajs/seajs/issues/547),详细说明了前端模块化。 ...

leon_rock
2014/04/05
6K
1
用seaJs来动态加载angularjs

github地址:https://github.com/chaosforfun/Angular-test-seaJs Angular-test-seaJs angular测试驱动开发实际案例+seaJs按路由加载文件 测试 先是为了学习angular提倡的测试驱动,试着把a...

赵小笨
2013/09/23
266
2
SeaJs的模块定义、模块加载及模块依赖关系

SeaJS 是由玉伯开发的一个遵循 CommonJS 规范的模块加载框架,可用来轻松愉悦地加载任意 JavaScript 模块和css模块样式。SeaJS非常小巧,小巧在于压缩和gzip后体积只有4K,而且接口和方法也非...

Sephiroth
2012/03/12
2K
1

没有更多内容

加载失败,请刷新页面

加载更多

如何递归计算目录中的所有代码行?

我们有一个PHP应用程序,并希望计算特定目录及其子目录下的所有代码行。 我们不需要忽略评论,因为我们只是想弄清楚。 wc -l *.php 该命令在给定目录中运行良好,但忽略子目录。 我当时认为...

技术盛宴
38分钟前
4
0
使用 try-with-resources 优雅关闭资源

我们知道,在 Java 编程过程中,如果打开了外部资源(文件、数据库连接、网络连接等、redis),我们必须在这些外部资源使用完毕后,手动关闭它们。 因为外部资源不由 JVM 管理,无法享用 JVM ...

七弦桐
44分钟前
4
0
04.深入浅出索引(上)

简单来说,索引的出现就是为了提高数据查询效率,就像书的目录一样。 索引的常见模型 索引实现的方式有很多种,所以这里就引入了索引模型的概念,可以用于提高读写效率的数据结构很多,比较常...

scgaopan
48分钟前
5
0
Redis哨兵、复制、集群的设计原理,以及区别

谈到Redis服务器的高可用,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制。 **哨兵(Sentinel):**可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的...

Java阿七
57分钟前
5
0
浅析laravel路由执行原理

目前很多文章已经对Laravel的执行原理做了详细介绍,这里只是为了个人做一下简单记录 首先看入口 index.php 关键的执行函数就是 handle方法 ,但是前面的几个预处理函数,包括了整合框架的大...

冻结not
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部