参考seajs快速入门

一、前端模块化的价值

  1. 解决命名冲突
  2. 摆脱文件依赖
  3. 性能优化
  4. 提高可维护性
  5. seajs.use方法调用
    通过exports暴露接口
    通过require引入依赖

二、Sea.js 的常用 API

  1. seajs.config

    base string    Sea.js 在解析顶级标识时,会相对 base 路径来解析

  2. seajs.use

    用来在页面中加载模块

  3. require

    是一个方法,接受 模块标识 作为唯一参数,用来获取其他模块提供的接口
    require 的参数值 必须 是字符串直接量

  4. require.async

    require.async 方法用来在模块内部异步加载模块,并在加载完成后执行指定回调。callback 参数可选

     define(function(require) {
    
       // 异步加载一个模块,在加载完成时,执行回调
    require.async('./b', function(b) {
    b.doSomething();
    }); // 异步加载多个模块,在加载完成时,执行回调
    require.async(['./c', './d'], function(c, d) {
    c.doSomething();
    d.doSomething();
    }); });
  5. exports

    exports 是一个对象,用来向外提供模块接口

    可以直接将方法赋给接口,也可以将其添加到对象里面赋给接口

     define(function(require, exports) {
    
       // 对外提供 foo 属性
    exports.foo = 'bar'; // 对外提供 doSomething 方法
    exports.doSomething = function() {}; });
     define(function(require, exports, module) {
    
       // 对外提供接口
    module.exports = {
    name: 'a',
    doSomething: function() {};
    }; });

三、模块

  1. 系统
    构建:a. 定义系统成员     b. 约定系统通讯
  2. 模块
    a. js代码,统一固定的格式      b. 通过基本交互规则,能彼此引用协同工作
  3. 模块标识
    相对标识:相对标识以 . 开头,只出现在模块环境中(define 的 factory 方法里面)。
    顶级标识:顶级标识不以点(.)或斜线(/)开始, 会相对模块系统的基础路径(即 Sea.js 的 base 路径)来解析

四、 使用步骤

    1. 引入sea.js文件(方法与引用jQuery相同)
    2. 配置信息
      在<script>中,方式与写jQuery代码相同
       seajs.config({
      
         // 别名配置
      alias: {
      'es5-safe': 'gallery/es5-safe/0.9.3/es5-safe',
      'json': 'gallery/json/1.0.2/json',
      'jquery': 'jquery/jquery/1.10.1/jquery'
      }, // 路径配置
      paths: {
      'gallery': 'https://a.alipayobjects.com/gallery'
      }, // 变量配置
      vars: {
      'locale': 'zh-cn'
      }, // 映射配置
      map: [
      ['http://example.com/js/app/', 'http://localhost/js/app/']
      ], // 预加载项
      preload: [
      Function.prototype.bind ? '' : 'es5-safe',
      this.JSON ? '' : 'json'
      ], // 调试模式
      debug: true, // Sea.js 的基础路径
      base: 'http://example.com/path/to/base/', // 文件编码
      charset: 'utf-8'
      });
    3. 配置sea.js的基础路径  及加载模块
       通过 use 方法,可以在页面中加载任意模块:
      
       // 加载模块 main,并在加载完成时,执行指定回调
      seajs.use('./main', function(main) {
      main.init();
      });
      use 方法还可以一次加载多个模块: // // 并发加载模块 a 和模块 b,并在都加载完成时,执行指定回调
      seajs.use(['./a', './b'], function(a, b) {
      a.init();
      b.init();
      });
    4. 写基础模块
    5. 写引用模块(main)

seajs简记的更多相关文章

  1. 常用样式制作思路 自定义按钮~自适应布局~常见bug seajs简记 初学者必知的HTML规范 不容忽略的——CSS规范

    常用样式制作思路   学习常用样式总结参考来自这里 带点文字链接列表利用:before实现 1 <!DOCTYPE html> 2 <html lang="en" ...

  2. vue—你必须知道的 js数据类型 前端学习 CSS 居中 事件委托和this 让js调试更简单—console AMD && CMD 模式识别课程笔记(一) web攻击 web安全之XSS JSONP && CORS css 定位 react小结

    vue—你必须知道的   目录 更多总结 猛戳这里 属性与方法 语法 计算属性 特殊属性 vue 样式绑定 vue事件处理器 表单控件绑定 父子组件通信 过渡效果 vue经验总结 javascript ...

  3. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  4. 初学seaJs模块化开发,利用grunt打包,减少http请求

    原文地址:初学seaJs模块化开发,利用grunt打包,减少http请求 未压缩合并的演示地址:demo2 学习seaJs的模块化开发,适合对seajs基础有所了解的同学看,目录结构 js — —di ...

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

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

  6. RangePartitioner 实现简记

    摘要: 1.背景 2.rangeBounds 上边界数组源码走读 3.RangePartitioner的sketch 源码走读 4.determineBounds 源码走读 5.关于RangePart ...

  7. seajs的使用

    写在前面 seajs是什么? Seajs是一个js文件加载器. 遵循 CMD 规范模块化开发,依赖的自动加载.配置的简洁清晰. 用于Web开发的模块加载工具,提供简单.极致的模块化体验 一:使用 文件 ...

  8. 用spm2构建seajs项目的过程

    前言 Javascript模块化规范有CommonJs规范,和主要适用于浏览器环境的AMD规范,以及国内的CMD规范,它是SeaJs遵循的模块化规范.因为以前项目中用SeaJs做过前端的模块管理工具, ...

  9. jquery插件封装成seajs模块

    jquery直接在html中引入. jquery插件修改为: define(function (require, exports, moudles) { return function (jquery ...

随机推荐

  1. Java 设计模式(二)-六大原则

    Java 设计模式(二)-六大原则 单一职责原则(Single Responsibility Principle) 定义: 不要存在多余一个原因导致类变更,既一个类只负责一项职责. 问题由来: 当类A ...

  2. <span>什么意思

    <span> 在CSS定义中属于一个行内元素,在行内定义一个区域,也就是一行内可以被 <span> 划分成好几个区域,从而实现某种特定效果. <span> 本身没有 ...

  3. 运行Google 官方zxing二维码扫描器

    首先,要去下载Zxing的源码,由于Zxing 的服务内容比较广,我们先把所有的源码都下载下来,使用的时候根据需要加载. 或者从开源中国下载https://www.oschina.net/questi ...

  4. 仿qq的侧拉菜单效果

    自定义控件 import android.animation.ArgbEvaluator; import android.animation.FloatEvaluator; import androi ...

  5. static const readonly

    C#中的static 和Java中的static 简单,两者用法完全是一致的.从两方面讨论: 1. 变量是属于类的,不是实例级别的.只能通过类名调用,不能通过实例调用. 2. 如果在定义时就赋值了,那 ...

  6. 跨线程传递栈变量带来异常指针Crash

    在手Q动漫的一份古老的代码中,现网发现少数crash,错误代码示例: char str[100] = "hello"; dispatch_async(dispatch_get_ma ...

  7. http缓存协议详解

    Cache-control策略(重点关注):Cache-Control与Expires的作用一致,都是指明当前资源的有效期,控制浏览器是否直接从浏览器缓存取数据还是重新发请求到服务器取数据 no-ca ...

  8. js在关闭页面前弹出确认提示【转载】

    最近项目中出现个bug,就是导出数据后,会提示确认导航,其实实际需求并不需要这个提示,可能是之前遗留的问题.查了下资料是在触发了onbeforeunload事件,那么剩下的就是代码组织问题了. 众所周 ...

  9. CODE[VS]-蛇形矩阵-模拟-天梯白银

    题目描述 Description 小明玩一个数字游戏,取个n行n列数字矩阵(其中n为不超过100的奇数),数字的填补方法为:在矩阵中心从1开始以逆时针方向绕行,逐圈扩大,直到n行n列填满数字,请输出该 ...

  10. CSS3 六边形绘制

    把一个104px的div放在它们之间,设置一个背景颜色: width: 0; border-bottom: 30px solid #6C6; border-left: 52px solid trans ...