• Seajs是什么及sea.js 由来,特点以及优势


    Seajs是什么及sea.js 由来,特点以及优势

    这篇文章主要介绍了Seajs的相关知识和和学习心得,适合刚接触SeaJS的同学,需要的朋友可以参考下,有更好的新手教程或文档,欢迎推荐、分享
     

    1.Seajs简介
     
    Seajs,一个Web模块加载框架,追求简单、自然的代码书写和组织方式,:Sea.js 遵循 CMD 规范,模块化JS代码。依赖的自动加载、配置的简洁清晰,可以让程序员更多地专注编码。
     
    2.Seajs优缺点
     
    优点:
    1).提高可维护性。
    2).模块化编程。
    3).动态加载,前端性能优化
     
    缺点:
    1).学习文档偏少且混乱,会更改团队使用JS的编写习惯,必须使用模块化编程。
    2).不太适合团队目前的情况,多JS文件但少改动,动态加载优势和模块化优势不明显。
    3). 需要配套使用SPM工具,JS的打包和管理工具。
     
    2.什么是CMD 和AMD ?
     
    异步模块定义(AMD)是Asynchronous Module Definition的缩写,是 RequireJS 在推广过程中对模块定义的规范化产出。
    通用模块定义(CMD)是Common Module Definition的缩写,是SeaJS 在推广过程中对模块定义的规范化产出。
    RequireJS 和 SeaJS 都是模块化框架的代表,AMD和CMD,是他们各自定义模块化的方式,大同小异,主要是代码风格和API不同。
     
    3.Seajs如何使用?

    一段代码教新手一目了然,快速上手!
     
     代码如下:<script src="../js/examples-master/sea-modules/seajs/seajs/2.1.1/sea.js"></script>

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script>
      //配置js路径
     seajs.config({
      alias:{
       "jquery":"../examples-master/sea-modules/jquery/jquery/1.10.1/jquery.js"
      }
     });
      //加载模块
     seajs.use('../js/seajs/init',function($){
      $("#test_div").click(function(){alert(1);});
     });
    </script>

    代码如下:

    1
    2
    3
    4
    5
    //init.js
    define(function(require,exports,module){
    var $ = require('jquery');
    return $;
    });

    Seajs就是如此简单,快来深入学习吧!

    由来:

    在软件开发过程中,模块化编程思想已经习以为常了,模块化编程不仅仅给开发团队带来效率方面上的好处,还能够让开发的项目或者产品维护成本大大降低。
    那么,在WEB开发过程中JS脚本语言已经不可或缺了,通过JS脚本语言能够带来更加舒适的人机交互和用户体验。但是,JS脚本的使用过程中也会有出现引用依赖的混乱,那么JS脚本语言的模块化思想势必会得到大家广泛的认可,在这样的一个背景下,淘宝前端工程师玉伯带来了SeaJS脚本语言,让模块化编程思想进入到JS脚本的世界里。

    特点:

    SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制。与jQuery等JavaScript框架不同,SeaJS不会扩展封装语言特性,而只是实现JavaScript的模块化及按模块加载。SeaJS的主要目的是令JavaScript开发模块化并可以轻松愉悦进行加载,将前端工程师从繁重的JavaScript文件及对象依赖处理中解放出来,可以专注于代码本身的逻辑。SeaJS可以与jQuery这类框架完美集成。使用SeaJS可以提高JavaScript代码的可读性和清晰度,解决目前JavaScript编程中普遍存在的依赖关系混乱和代码纠缠等问题,方便代码的编写和维护。
    SeaJS本身遵循KISS(Keep It Simple, Stupid)理念进行开发,其本身仅有个位数的API,因此学习起来毫无压力。在学习SeaJS的过程中,处处能感受到KISS原则的精髓——仅做一件事,做好一件事。

    优势:从一个例子中来看SeaJS优势,

    传统模式:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    var M1={
    run:function(){
    alert('M1');
    M2.run();
    }
    }
      
    var M2={
      
    run:function(){
    alert('M2');
    }
    }
      
    <script src="./M2.js"></script>
    <script src="./M1.js"></script>

    使用SeaJS之后:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    //init.js
    define(function(require, exports, module) = {
      
    var m1=require('M1');
      
    exports.init=function(){
    m1.run();
    }
    });
      
    //M1.js
    define(function(require,exports,module)={
    var m2=require('M2');
      
    exports.run=function(){
    alert('M1');
    m2.run();
    }
    });
      
    define(function(require,exports,module)={
    exports.run=function(){
    alert('M2');
    }
    });
     
    <script src="./sea.js"></script>
    <script>
     seajs.use('./init', function(init) {
      init.init();
     });
    </script>

    通过两个简单的实例能够看出使用SeaJS之后代码的模块化非常清晰,并且在HTML页面中仅仅引用一个./sea.js文件并且仅仅调用init即可,具体init后面实现的逻辑对用户是透明的。

    转载:http://www.jb51.net/article/94666.htm

  • 相关阅读:
    异构网络中的并行传输问题
    如何编程实现快速获取一个整型数中的bit流中1的个数
    对单例模式的一个简单思考
    OsgEearh 中的 FeatureEditor的实现原理
    关于在osgearth 中 出现 arial.ttf : file not handled 的问题
    Qt 中 this->size() this->rect() event->size() 三者差异
    Qt 中QPainter 使用中出现的问题
    对c语言中static函数的理解
    对声明和定义的理解
    个人对头文件的理解
  • 原文地址:https://www.cnblogs.com/gh0408/p/6078773.html
Copyright © 2020-2023  润新知