sea.js 个人入门

头顶 美工、切图仔 头衔的我 出去面试时面试官必问的一题: 用过 seajsrequirejs 么?

答案当然是否定的,然后面试官就是鲁迅先生的前半句诗"横眉冷对千夫指 "看我。

所以就看看看了看API

玉伯 : http://weibo.com/lifesinger?noscale_head=1#_0

说这两个JS 必须提到AMD、commonjs两种不同的规范:

奇舞团:http://www.75team.com/archives/882

知乎:http://www.zhihu.com/question/20342350  (ps:知乎底下的评论总让我有种 华山论剑 ,小屌丝围观 赶脚,套用现在微博上的话就是 “城里人真会玩”;)

我个人的理解其实就是 AMD就是要加载的JS文件 都提前一数组的形式提前加载完的、commonjs是你想用到哪就直接加载的

demo页面:

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5 <title>无标题文档</title>
 6 </head>
 7 <body>
 8     <!-- 头部 -->
 9     <div class="content">
10         <div class="nav-main">
11             <ul id="nav" class="nav cfx">
12                 <li>
13                     <a href="#" title="首页">首页</a>
14                 </li>
15                 <li>
16                     <a href="#" title="联系我们">联系我们</a>
17                 </li>
18                 <li>
19                     <a href="#" title="关于我们">关于我们</a>
20                 </li>
21                 <li>
22                     <a href="#" title="友情链接">友情链接</a>
23                 </li>
24             </ul>
25         </div>
26     </div>
27
28     <!-- 主体 -->
29     <div class="content">
30         <div class="index-main">
31
32         </div>
33     </div>
34
35     <!-- 底部 -->
36     <div id="help" class="help">
37         <ul class="help_list">
38         <li>
39         <dl>
40             <dt>新手上路</dt>
41             <dd><a href="#">购物前的准备</a><br>
42             <a href="#">购物流程</a><br>
43             <a href="#">分期指南</a><br>
44             <a href="#">常见问题</a></dd>
45         </dl>
46         </li>
47         <li>
48         <dl>
49             <dt>安全支付</dt>
50             <dd><a href="#">口令卡\U盾\密码器</a><br>
51             <a href="#">手机短信认证</a><br>
52             <a href="#">支付安全宝典</a><br>
53             <a href="#">安全专区</a></dd>
54         </dl>
55         </li>
56         <li>
57         <dl>
58             <dt>客户服务</dt>
59             <dd><a href="#">客服电话</a><br>
60             <a href="#">订单查询</a><br>
61             <a href="#">加盟须知</a><br></dd>
62         </dl>
63         </li>
64         <li>
65         <dl>
66             <dt>关于我们</dt>
67             <dd><a href="#">商城简介</a><br>
68             <a href="#">商城声明</a><br>
69             <a href="#">合作伙伴</a><br>
70             <a href="#">联系我们</a></dd>
71         </dl>
72         </li>
73         </ul>
74     </div>
75 </body>
76 <script src="js/sea.js" id="main"></script>
77 <script src="js/main.js"></script>
78 </html>

main.js:

 1 //Sea.js 进行配置
 2 seajs.config({
 3
 4   // 别名配置
 5   alias: {
 6     ‘base-css‘ : ‘./css/base.css‘,
 7     ‘jquery‘   : ‘jquery-1.8.3.min.js‘
 8   },
 9
10   // 路径配置
11   paths: {
12     ‘css‘ : ‘../css/‘,
13     ‘logo‘: ‘./logo/‘
14   },
15
16   // 变量配置
17     vars: {
18      ‘com‘: ‘common‘
19    },
20
21   // 映射配置
22   map: [
23    [‘index.js‘, ‘index-debug.js‘]
24  ],
25
26   // 预加载项 预先加载jquery.js
27     preload:[
28        ‘jquery‘
29     ],
30
31   // 调试模式
32   debug: true,
33
34   // Sea.js 的基础路径
35  // base: ‘http://example.com/path/to/base/‘,
36
37   // 文件编码
38   charset: ‘utf-8‘
39 });
40
41
42 // 启动加载模块
43 seajs.use([‘head.js‘,‘footer.js‘,‘index.js‘],function(){
44
45   alert(‘加载完喽~‘); // 加载完模块,执行回调
46
47 });

推荐: 予舍 : http://yslove.net/seajs/ 写的API 个人感觉比官方那个更好懂一些。。。。

展示一个head.js:

 1 define(function(require, exports, module) {
 2
 3     require(‘../css/base.css‘);   //获取指定模块
 4     require(‘../css/head.css‘);      //获取指定模块
 5     require(‘fixed-head.js‘);     //获取指定模块
 6     console.log(seajs.cache); //加载的所有信息
 7     console.log(seajs.data); //所有配置信息;
 8     var paths = seajs.resolve(‘../css/global.css‘); //解析路径;
 9     console.log( paths );
10
11     require.async(‘logo/logo.js‘,function(logo){ //异步加载
12         logo.show();  //异步加载回调
13     });
14     var hover = require(‘hover-show.js‘);
15
16     var $nav = $(‘#nav‘),
17           $navAs = $nav.find(‘a‘);
18
19     $(‘#nav‘).fixedHead();  //jQuery1.7版本以上的就已经把jQuery模块化;
20
21     $navAs.mouseover(function(){
22
23           var txt = $(this).text();
24           hover.show(txt);
25
26     });
27
28 });

说明:

 1 //a.js
 2 define(function(require, exports, module) {
 3     //require 获取指定模块的接口;
 4     //exports 模块内部对外提供接口;
 5     //module 当前模块的一些属性和方法,比如 exxports其实就是module地下的一个接口;
 6
 7     // 当前模块对外的一个 show方法;
 8     module.exports = {
 9         ‘show‘ : function( txt ){
10             console.log( txt );
11         }
12     }
13
14 });
15
16 //b.js
17 define(function(require, exports, module) {
18
19     require(‘../css/base.css‘); //还可以加载css样式(Sea.js < 2.3.0版本之前是可以加载css文件的,新版本中此功能移除)所以就得在引入插件;
20     var hover = require(‘a.js‘); //获取指定模块的接口;
21     hover.show(txt);//调用a.js里的show方法;
22
23     require.async(‘logo/logo.js‘,function(logo){ //异步加载;
24         logo.show();  //异步加载回调;
25     });
26
27     console.log(seajs.cache); //加载的所有信息;
28     console.log(seajs.data); //所有配置信息;
29     var paths = seajs.resolve(‘../css/global.css‘); //解析路径;
30     console.log( paths );
31
32     //主要的部分的功能也就这样更细的API用到在看官方的文档,不过特别注意的其实是路径问题;
33     //define(‘id‘, [], function(require, exports, module) {}); id是这个模块的名,[]是依赖的模块,不过一般这两个都是配合Gruntjs/gulp使用;
34
35 });
时间: 2024-10-10 21:51:11

sea.js 个人入门的相关文章

Sea.Js使用入门

1.Sea.Js是什么 seajs相对于RequireJs与LabJS就比较年轻,2010年玉伯发起了这个开源项目,SeaJS遵循CMD规范,与RequireJS类似,同样做为模块加载器.示例 // File:greet.js define(function (require, exports) { function helloPython() { document.write("Hello,Python"); } function helloJavaScript() { docume

Sea.js学习笔记

Sea.js入门 http://www.cnblogs.com/doseoer/p/4007752.html 前端模块化开发的价值 随着互联网的飞速发展,前端开发越来越复杂.本文将从实际项目中遇到的问题出发,讲述模块化能解决哪些问题,以及如何使用 Sea.js 进行前端的模块化开发. https://github.com/seajs/seajs/issues/547 Sea.js:简单.极致的模块化Web开发体验 Sea.js 创始人玉伯专访

Angular JS从入门基础 mvc三层架构 常用指令

Angular JS从入门基础  mvc模型 常用指令 ★ 最近一直在复习AngularJS,它是一款优秀的前端JS框架,已经被用于Google的多款产品当中.AngularJS有着诸多特性,最为核心的是:MVC.模块化.自动化双向数据绑定.语义化标签.依赖注入等等. 1.常用指令 AngularJS 通过指令扩展了HTML,且通过表达式绑定数据到 HTML.下面我们看一下AngularJS中的常用指令. (1).基本概念 指令:AngularJS中,通过扩展HTML的属性提供功能.所以,ng-

JavaScript模块加载框架sea.js 学习一

简单总结sea.js 学习 文件目录结构 /sea/sea.js      下载地址  http://seajs.org/docs/#downloads /sea/jquery-sea.js   下载地址 http://jquery.com/download/ /sea/sea_config.js /sea/home.jsdata.js /sea/data.js 1.html页面代码文件 <style> .ch{height:200px;width:200px;background:#ccc;

Sea.Js的运行原理

1.CMD(Common Module Definition)规范 Sea.js采用了和Node相似的CMD规范,使用require.exports和module来组织模块.但Sea.js比起Node的不同点在于,前者的运行环境是在浏览器中,这就导致A依赖的B模块不能同步地读取过来,所以Sea.js比起Node,除了运行之外,还提供了两个额外的东西: a.模块的管理 b.模块从服务端的同步 即Sea.js必须分为模块加载期和执行期.加载期需要将执行期所有用到的模块从服务端同步过来,在再执行期按照

5 分钟上手 Sea.js

为什么使用 Sea.js ? Sea.js 简单.自然的代码书写和组织方式 兼容性好 技术比较成熟,运用比较普遍. 目录结构: examples/   |-- sea-modules      存放 seajs.jquery 等文件,这也是模块的部署目录   |-- static           存放各个项目的 js.css 文件   |     |-- hello   |     |-- lucky   |     `-- todo   `-- app              存放 ht

sea.js与require.js的区别

随着ES6标准的module出台渐渐会退出历史舞台 首先原理上的区别 sea.js遵循CMD规范.书写方式类似node.js的书写模板代码.依赖的自动加载,配置的简洁清晰.说白了就是懒加载. require.js遵循AMD规范,CMD和AMD基本相同,最大的区别是就CMD是懒加载,AMD是预加载. 简单来说,就是sea.js属于懒加载,require.js属于预加载. 在这里,顺便扩展一下预加载和懒加载的优缺点 预加载:当第一次访问时将所有的文件加载出来 优点:第一次访问完成以后, 再次访问的速

CMD (sea.js)模块定义规范

转自http://www.cnblogs.com/hongchenok/p/3685677.html CMD 模块定义规范 在 Sea.js 中,所有 JavaScript 模块都遵循 CMD(Common Module Definition) 模块定义规范.该规范明确了模块的基本书写格式和基本交互规则. 在 CMD 规范中,一个模块就是一个文件.代码的书写格式如下: define(factory); define Function define 是一个全局函数,用来定义模块. define d

Sea.js学习2——Sea.js的API 快速参考

(7 个接口是最常用的) 一.seajs.config:用来对 Sea.js 进行配置. seajs.config({ // 设置路径,方便跨目录调用 paths: { 'arale': 'https://a.alipayobjects.com/arale', 'jquery': 'https://a.alipayobjects.com/jquery' }, // 设置别名,方便调用 alias: { 'class': 'arale/class/1.0.0/class', 'jquery': '