一、概念:
SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架。

在 Sea.js 中,所有 JavaScript 模块都遵循 CMD(Common Module Definition) 模块定义规范。该规范明确了模块的基本书写格式和基本交互规则。

在 CMD 规范中,一个模块就是一个文件。代码的书写格式如下:define(factory);

SeaJS解决了两个问题:

1.JavaScript的模块化

2.按模块加载

SeaJS在开发中的角色:在多人协作开发时,起着后勤人员的作用,协调  文件依赖、命名冲突、按需加载的作用;

二、用法:

1.引入sea.js

2.定义模块--define

3.对外提供接口--export

4.依赖接口--require

5.调用模块--seajs.use

例:

为了让 sea.js 内部能快速获取到自身路径,推荐手动加上 id 属性

 <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>seajs的使用方法</title>
<script type="text/javascript" src="sea/sea.js" id="seajs"></script>
<script>
/*
调用模块
语法:
seajs.use(url, callback);
参数说明:
url: 调用模块的地址, url默认根目录是sea.js所有文件夹
callback: 回调函数
内部工作原理:
填入url后,seajs会异步加载url的文件, 加载完成后执行 callback;
这样就实现了按模块加载JS,也可以说是按需加载。
*/
seajs.use('./js/test1.js',function(ex){ //ex就是对外接口export
ex.tab(); function tab(){
alert('我是现写的,大家都是tab,但不冲突哦~~');
} tab(); //很好的就解决了命名冲突 }); </script>
</head> <body>
</body>
</html>

目录层级关系如下 :

test1.js 如下:

 // JavaScript Document
/*
定义模块
语法:
define(function (require, exports, module){ //参数写法是固定
//your code gose here
});
参数说明:
require: 依赖的接口
exports: 对外提供的接口
module:
内部工作原理:
1.当调用require方法时,seajs会同步加载url的文件,这样就解决依赖问题了。如果想异步加载就用require.async(url, callback);
2.exports对象下包含的是对外提供的属性和方法,调用seajs.use时,callback函数的参数就是exports对象
*/
define(function(require, exports, module){ //如果依赖的是一个普通JS文件
require('./test2.js'); //如果依赖的是一个用define写的JS模块
var ex = require('./test3.js'); function tab(){
alert('我是test1模块的一个方法');
alert('test1' + a);
alert('test1' + ex.b)
} exports.tab = tab; });

test2.js 如下:

 // JavaScript Document

 var a = '依赖test2了, 我是test2的全局变量';

test3.js 如下:

 // JavaScript Document

 define(function(require,exports,module){ //参数写法是固定

     exports.b = '依赖test3了,我是test3模块的局部变量';

 });

上面说到了seajs中常用的4个方法,别外请参考管方的seajs常用的7个方法: https://github.com/seajs/seajs/issues/266

模块化开发,SesJS简单总结的更多相关文章

  1. seaJs模块化开发简单入门

    随着前端技术的日益成熟,功能越来越丰富强大,规范也越来越健全,在这样的背景环境下很快便有了CommonJs.AMD.CMD等一系列规范,使前端发开趋向模块化.规范化.CMD模块化的代表之一就是国内开发 ...

  2. JS模块化开发:使用SeaJs高效构建页面

    一.扯淡部分 很久很久以前,也就是刚开始接触前端的那会儿,脑袋里压根没有什么架构.重构.性能这些概念,天真地以为前端===好看的页面,甚至把js都划分到除了用来写一些美美的特效别无它用的阴暗角落里,就 ...

  3. iOS关于模块化开发解决方案(纯干货)

    关于iOS模块化开发解决方案网上也有一些介绍,但真正落实在在具体的实例却很少看到,计划编写系统文章来介绍关于我对模块化解决方案的理解,里面会有包含到一些关于解耦.路由.封装.私有Pod管理等内容:并编 ...

  4. .NET/ASP.NET MVC(模块化开发AraeRegistration)

    阅读目录: 1.开篇介绍 2.AreaRegistration注册路由(传递路由上下文进行模块化注册) 1]开篇介绍 ASP.NET Routing 路由功能非常强大,设计的也很巧妙:如果说ASP.N ...

  5. Mvc 模块化开发

    在Mvc中,标准的模块化开发方式是使用Areas,每一个Area都可以注册自己的路由,使用自己的控件器与视图.但是在具体使用上它有如下两个限制 1.必须把视图文件放到主项目的Areas文件夹下才能生效 ...

  6. 详解JavaScript模块化开发

    什么是模块化开发? 前端开发中,起初只要在script标签中嵌入几十上百行代码就能实现一些基本的交互效果,后来js得到重视,应用也广泛起来了,jQuery,Ajax,Node.Js,MVC,MVVM等 ...

  7. Javascript模块化开发,使用模块化脚本加载工具RequireJS,提高你代码的速度和质量。

    随着前端JavaScript代码越来越重,如何组织JavaScript代码变得非常重要,好的组织方式,可以让别人和自己很好的理解代码,也便于维护和测试.模块化是一种非常好的代码组织方式,本文试着对Ja ...

  8. Asp.net Mvc模块化开发之分区扩展框架

    对于一个企业级项目开发,模块化是非常重要的. 默认Mvc框架的AreaRegistration对模块化开发真的支持很好吗?真的有很多复杂系统在使用默认的分区开发的吗?我相信大部分asp.net的技术团 ...

  9. Asp.net Mvc模块化开发系列(目录)

    模块化开发是非常重要的,模块化开发是个系统性问题,为此我觉得有必须要写一个系列的文章才能基本说的清楚 那又为什么要写一个目录呢? 其一.是对我昨天承诺写一个系列新的文章的回应 其二.是先写出一个大纲, ...

  10. Javascript 模块化开发上线解决方案

    最近又换部门了,好频繁地说...于是把这段时间搞的小工具们简单整理了一下,作了一个小的总结.这次用一个简单业务demo来向大家介绍一下Javascript模块化开发的方式和自动化合并压缩的一些自己的处 ...

随机推荐

  1. httpd-vhosts.conf的配置

    <VirtualHost *:80> DocumentRoot "D:\product\web\Public" ServerName demo.web.com Dire ...

  2. android listview Caused by: java.lang.ArrayIndexOutOfBoundsException: length=3; index=3

    android listview 适配器在多种类型viewType报错: Caused by: java.lang.ArrayIndexOutOfBoundsException: length=3; ...

  3. VM11里安装ubuntukylin-16.04-desktop-amd64遇到问题

    一.ubuntu linux的地址 http://www.ubuntu-china.cn/ 这个地址是中国站,点击下载菜单后,有两个版本,一个是ubuntu,一个是kylin.后者是专门加了中文程序的 ...

  4. Windows10 磁盘活动时间百分之百导致系统卡顿解决方法

    最近电脑边的特别慢,打开任务管理器发现是磁盘活动时间时不时的就会变成100%.起初是以为硬盘出问题了,后来网上查了一下才发现很多人都遇到过这个问题,其原因就是Windows的SuperFetch和家庭 ...

  5. $_FILES系统函数

    PHP编程语言中的常见的$_FILES系统函数用法有: $_FILES['myFile']['name'] 显示客户端文件的原名称. $_FILES['myFile']['type'] 文件的 MIM ...

  6. Catch That Cow(BFS)

    Catch That Cow Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  7. How to use Request js (Node js Module) pools

    Can someone explain how to use the request.js pool hash? The github notes say this about pools: pool ...

  8. QT 4.87 changes

    http://blog.qt.io/blog/2015/05/26/qt-4-8-7-released/ Qt 4.8.7 is a bug-fix release. It maintains bot ...

  9. Qt仿Android带特效的数字时钟源码分析(滑动,翻页,旋转效果)

    这个数字时钟的源码可以在Qt Demo中找到,风格是仿Android的,不过该Demo中含有三种动画效果(鉴于本人未曾用过Android的系统,因此不知道Android的数字时钟是否也含有这三种效果) ...

  10. C# 反射_基础

    反射用于在程序运行过程中,获取类里面的信息或发现程序集并运行的一个过程.通过反射可以获得.dll和.exe后缀的程序集里面的信息.使用反射可以看到一个程序集内部的类,接口,字段,属性,方法,特性等信息 ...