参考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. String与string的区别(注意大小写)

    在C#编程过程中经常见到string和String,下面来看看它们之间的区别: 1. string是C#中的类, String是.net Framework的类. string是String的别名,S ...

  2. Flexible 弹性盒子模型之CSS justify-content 属性

    实例 在弹性盒对象的 <div> 元素中的各项周围留有空白: div { display: flex; justify-content: space-around; } 复制 效果预览 浏 ...

  3. C#Redis字符串

    上周六通宵打牌周日白天只睡3小时累成狗,从今天起以后不能玩太大的了,小赌怡情大赌伤身,和同事朋友有空玩玩还是好的.今天公司外面马路上有人挂灯笼时死了一个人,哎,快过年了悲剧又发生了,真是生命是脆弱的. ...

  4. Jquery下控制backgroundPosition位置的问题/jquery查找data id相等的元素

    1:想通过控制backgroundPosition 来实现动态效果: $(this).animate({"background-positionY":-13},1); //但是火狐 ...

  5. (二)Python是一门什么样的语言?

    在学习python是一门什么样的语言之前首先需要知道什么是编译和解释? 编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快; 而 ...

  6. iOS 水波效果

    将水波效果放在子视图上,主控制器只负责加载 #import "WaveProgress.h" @interface WaveProgress () @property (nonat ...

  7. ASP.NET Core: Getting Started with ASP.NET MVC Core

    1. ASP.NET Core the Unified Framework ASP.NET Core的统一框架 2. New Solution Project 新的解决方案项目 src folder: ...

  8. [读书笔记]telnet与http服务器一次直接对话

    1.打开电脑telnet客户端应用 控制面板 >程序和功能 > 打开或者关闭windows功能 > telnet客户端 勾选,并确认. 2.执行telnet命令 a:cmd进入控制台 ...

  9. Java 彩色图转灰度图

    1. 方法1 BufferedImage grayImage = new BufferedImage(width, height, colorImage.TYPE_BYTE_GRAY); Graphi ...

  10. Linux软件安装管理 - CentOS

    ---恢复内容开始--- 1. 软件包管理简介 1.1 源码包 - 脚本安装包 1.2 二进制包(RPM包,系统默认包) - 依赖性 2. rpm命令管理(Redhat Package Manager ...