seaJs 使用

开始使用seajs的时候折磨了我好一阵。光是各种概念就让新手难理解。现在弄清楚了,上个实践以备忘。目录结构如图。

1.文件 sea.html   main.js  a.js  b.js  c.js 最后还要一个seajs,其中main.js是入口文件,a.js b.js c.js 都是模块文件(注意模块文件是怎么定义的,要注重规范哟)

sea.html 的内容

<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no,initial-scale=1" />
    <link href="http://cdn.bootcss.com/lightgallery/1.1.0/css/lightGallery.css" rel="stylesheet">
</head>

<body>
seajs学习
</body>
<script src="../js/sea.js" ></script>
<script src="../js/main.js"></script>
</html>

main.js 的内容

console.log("this is main.js");
seajs.config({
    /*这里是做配置*/
   /* base: "../res/",
    alias: {
        "jquery": "js/jquery-2.1.4.min",
        "lightGallery":"js/lightGallery",
        "a":"js/a",
    }*/
});
seajs.use("a",function(main){
    main.a_fun();
});

a.js的内容(注意模块的定义格式)

define(function(require, exports, module) {
    console.log("this is a.js");
    var b = require("./b");//这里就是依赖,看看怎么写的
    exports.a_fun = function() {
        console.log("这是a.js暴露的接口");
    }
    //调用b的接口
    b.b_fun();
})

b.js的内容

define(function(require, exports, module) {
    console.log("this is b.js");
    var c = require("./c");
    //暴露接口给被依赖者
    exports.b_fun = function() {
        console.log("这是b.js暴露的接口");
    }
    c.c_fun();
})

c.js的内容

define(function(require, exports, module){
    console.log("this is c.js");
    exports.c_fun=function(){
        console.log("这是c.js暴露的接口");
    }
})

2.在sea.html中引入sea.js 和main.js(这相当于c语言的main函数,程序的入口文件,通过依赖关系找到所有需要的文件);

3.运行sea.html看看控制台效果

4.就这么简单,跟着我的走一遍,你再去看详细的接口文档,在这个基础上继续学习,比起你直接去摸那些高大上的概念会轻松很多

时间: 2024-10-08 18:42:25

seaJs 使用的相关文章

简单的使用Seajs

什么是Seajs Seajs是一个加载器 http://yslove.net/seajs/ 遵循 CMD 规范模块化开发,依赖的自动加载.配置的简洁清晰. 兼容性 Chrome 3+ Firefox 2+ Safari 3.2+ Opera 10+ IE 5.5+ 基本应用 导入Seajs库 去官网下载最新的seajs文件, http://seajs.org/docs/#downloads 在页尾引入seajs: <script src="/site/script/sea.js"

seajs

seajs 与jQuery等JavaScript框架不同,SeaJS不会扩展封装语言特性,而只是实现JavaScript的模块化及按模块加载.SeaJS的主要目的是令JavaScript开发模块化并可以轻松愉悦进行加载,将前端工程师从繁重的JavaScript文件及对象依赖处理中解放出来,可以专注于代码本身的逻辑.SeaJS可以与jQuery这类框架完美集成.使用SeaJS可以提高JavaScript代码的可读性和清晰度,解决目前JavaScript编程中普遍存在的依赖关系混乱和代码纠缠等问题,

自己动手写快速开发框架1【EF+WEBAPI+EASYUI+SEAJS+...】大概想法

自己动手写个框架,大约周期为半年,作为5年.net工作的积累及思考,构想是蛮大的,先看架构图(貌似什么都想做...): 已经开始了大概半个月时间,大概的更新记录如下: 20160715: 1.后端加入EF 的Code First 2.前端引用easyui 3.加入log4net日志管理 4.日志管理加入txt记录管理页面 20160727: 1.引入seajs,管理所有前前端接口 2.加入日志支持数据库记录 3.引入signalr 支持消息推送 20160801: 1.修正了清除日志功能 2.将

JS模块化库seajs体验

seajs http://seajs.org/docs/en.html#intro https://github.com/seajs/seajs/releases Extremely simple experience of modular development Why use Sea.js ? Sea.js's pursuit of a simple, natural coding and organization,has the following key aspects: The def

SeaJS与RequireJS最大的区别

1. 对于依赖的模块,AMD 是提前执行,CMD 是延迟执行.不过 RequireJS 从 2.0 开始,也改成可以延迟执行(根据写法不同,处理方式不同).CMD 推崇 as lazy as possible. 2. CMD 推崇依赖就近,AMD 推崇依赖前置. 3. AMD 的 API 默认是一个当多个用,CMD 的 API 严格区分,推崇职责单一.比如 AMD 里,require 分全局 require 和局部 require,都叫 require.CMD 里,没有全局 require,而是

seajs的使用

写在前面 seajs是什么? Seajs是一个js文件加载器. 遵循 CMD 规范模块化开发,依赖的自动加载.配置的简洁清晰. 用于Web开发的模块加载工具,提供简单.极致的模块化体验 一:使用 文件目录: demo_1.html <!DOCTYPE html> <html> <head> <title></title> <script src="seajs/sea.js"></script> <

seajs加载jquery时提示$ is not a function该怎么解决

这篇文章主要介绍了seajs加载jquery时提示$ is not a function该怎么解决的相关资料,需要的朋友可以参考下 jquery1.7以上的都支持模块化加载,只是jquery默认的是支持amd,不支持cmd.所以要用seajs加载jquery时,我们需要稍微做下改动,需要把以下内容做下修改,具体修改方式如下: 把 ? 1 2 3 4 5 if (typeof define === "function" && (define.amd)) {   defin

seajs在jquery多个版本下引用jquery的插件的方案

好多插件是依赖jquery的特定版本的,用的jQuery全局对象,而项目有时候用的是jquery的其他版本,例如:项目默认用的jquery1.7.2,而插件用的jquery1.2.6 假如用1.7.2就不正常怎么处理呢? 这个属于jquery插件的兼容问题…… tickwudi commented on Jul 17, 2014 是的,现在已经通过seajs包装解决了!define(function(require,exports,module){//使用插件指定版本var jQuery=req

新版seajs 如何把 jquery 1.11.x 暴露到全局

define jquery的地方,module.exports = window.$ = window.jQuery = $ 因为seajs的延迟执行策略,单是在define后是不能保证jQuery一定在全局中的吧?应该还需要一次seajs.use或者require吧? army8735 commented on Jun 25, 2014 正确 semious commented on Jun 25, 2014 个人觉得 像jquery这样的基础组件没必要再用什么东东包裹一次,直接引用放出全局$

seajs模块压缩问题

在优化整理项目代码时,想使用seajs来把代码模块化.看了下官方5分钟上手教程,觉得很不错,也没多想就一直开发下去了,也没出什么问题.等一同事说把代码打包个放到设备上去测试一下,发现怎么也跑不起来,郁闷了. 于是单步调试一把,发现模块一直加不进来.看了一下seajs的原码,明白了是怎么回事. define模块解析依赖有两种途径,一种是从define(id, deps, factory)中的deps来:还有一种是解析define代码,从require中来.来看一下代码: 1 Module.defi