`

前端模块化

阅读更多

                                        前端模块规范有三种:CommonJs,AMD和CMD

 

首先了解下模块定义:
模块就是实现特定功能的文件,把几个函数放在一个文件里就构成了一个模块。
模块写成一个对象,模块成员都封装在对象里,通过调用对象属性,访问使用模块成员。但同时也暴露了模块成员,外部可以修改模块内部状态。外部无法访问内部私有变量。

 

CommonJs是服务器端,而AMD和CMD则是浏览器环境

 

异同点:
AMD  :  RequireJS 在推广过程中对模块定义的规范化产出,提前执行(异步加载:依赖先执行)+延迟执行
CMD  :  SeaJS 在推广过程中对模块定义的规范化产出,延迟执行(运行到需加载,根据顺序执行)

最近主要学seajs,所以了解了下,做下笔记:

CMD(翻译Common Module Definition通用模块定义)有个浏览器的实现SeaJS,SeaJS要解决的问题和requireJS一样

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

define(function(require, exports, module) {
   //require是可以把其他模块导入进来的一个参数;
   //exports是可以把模块内的一些属性和方法导出的;
   //module 是一个对象,上面存储了与当前模块相关联的一些属性和方法
});

 先写个简单例子:

// 定义模块  
myModule.js define(function(require, exports, module) { 
    var $ = require('jquery.js') 
    $('div').addClass('active'); 
    exports.data = 1; 
});
// 加载模块 
seajs.use(['myModule.js'], function(my){ 
    var star= my.data; 
    console.log(star); 
});

 

 

接下来是sea.js的使用:
1 .引入sea.js的库
2. 定义模块
      - define
3.调用模块
      -exports
      -sea.js.use
4.依赖模块
      -require

以下是我最近做的一个例子:前提引入所需文件--sea.js,jquery.js,这些官方文档可以下载

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script src="sea-modules/seajs/seajs/2.2.0/sea.js"></script>
    <link rel="stylesheet" href="./hello.css">
    <script>
        seajs.config({
//设置路径
//            paths: {
//                '1.01.1': './sea-modules/jquery/jquery/1.10.1/'
//            },
 // 设置别名,方便调用
            alias: {
                'jquery': './sea-modules/jquery/jquery/1.10.1/jquery'
            }
        });
        seajs.use(['./head'], function (header) {
            new header()
        });
    </script>
</head>
<body>

</body>
</html>

 这里的path是设置路径,方便跨目录调用。可以省略掉,和alias写到一起。

 接下来是head模块

 

define(function(require, exports, module) {
    // 别名配置,配置之后可在模块中使用require调用 require('jquery');
    // alias
    var $ = require('jquery')
    function header(){
        this.render()
    }
    header.prototype.render = function(){
        $('<h1 style="display:none;">Hello SeaJS !</h1>' +
            '<div class="show"></div>')
            .appendTo('body').fadeIn(0)
    }

    return header

});

  

当然也可以加载多个模块:

用来在页面中加载一个或多个模块。
seajs.use(id, callback?)

// 加载一个模块
seajs.use('./a');

// 加载一个模块,在加载完成时,执行回调
seajs.use('./a', function(a) {
  a.doSomething();
});

// 加载多个模块,在加载完成时,执行回调
seajs.use(['./a', './b'], function(a, b) {
  a.doSomething();
  b.doSomething();
});

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Web前端模块化开发教程(ES6+Node.js+Webpack)_源代码.zip

    在前端模块化开发中,Node.js用于搭建开发环境,安装和管理依赖,以及构建和打包工具。 4. **Webpack**:Webpack是一个现代JavaScript应用程序的静态模块打包工具。它的工作原理是将项目视为一个模块依赖图,...

    Web前端模块化开发教程课件(完整版).pptx

    Web前端模块化开发教程课件(完整版).pptx

    Web前端模块化开发教程全套ppt课件最全电子讲义完整版教学教程整套全书课件ppt.pptx

    "Web前端模块化开发教程全套ppt课件最全电子讲义完整版教学教程整套全书课件ppt.pptx" 本资源是一个关于Web前端模块化开发的教程,全套ppt课件包括了从ES6基础到模块化开发的各个方面的知识点。下面是从标题、描述...

    前端模块化设计思路

    前端模块化设计是一种高效、可复用的编程思想,它旨在优化前端开发流程,提高代码组织的清晰性和可维护性。模块化的核心理念是减少循环依赖和耦合,通过合理划分模块,使得每个模块专注于自己的功能,从而提高设计...

    用于前端模块化使用的jq

    标题提到的"用于前端模块化使用的jq"指的是经过特殊处理的jQuery版本,这个版本是为前端模块化开发优化的,能够帮助开发者更高效、更灵活地在项目中引入jQuery。 在传统的前端开发中,jQuery通常通过 `&lt;script&gt;` ...

    前端模块化.xmind

    前端模块化.xmind

    前端模块化1

    前端模块化是现代Web开发中不可或缺的一部分,它允许开发者将复杂的应用程序分解为多个独立的模块,从而提高代码的可读性、可维护性和复用性。模块化的核心思想是将一个大型程序划分为若干个模块,每个模块都有自己...

    前端模块化webpack1

    【前端模块化webpack1】 前端模块化是现代Web开发中不可或缺的一部分,它使得代码组织更加有序,便于维护和复用。随着技术的发展,模块化的规范也在不断演进,包括CommonJS、AMD(Asynchronous Module Definition)...

    Web前端模块化框架BrowserRequire.zip

    编写BrowserRequire目的不在于统一前后端模块使用,而是做一款更适合Web前端开发需求的模块化框架; 更好的处理了模块与非模块间的使用; 更像是LABjs requireJS的结合增强版,但打包源文件只有7kb左右; ...

    前端模块化脚手架,可实现类似java的封装继承多态特性

    在现代Web开发中,前端模块化已经成为不可或缺的一部分,它能够帮助开发者组织代码,提高代码复用性和可维护性。这个名为“前端模块化脚手架”的工具,旨在为前端开发者提供一个类似于Java语言的封装、继承和多态...

    05-前端模块化.pdf

    前端模块化开发是互联网前端领域的一项重要技术,它的主要目的是将复杂的程序分解成一系列容易管理和维护的模块。在网页开发的早期阶段,JavaScript主要用于做一些简单的表单验证或动画实现,代码量较少,可以直接写...

    前端模块化开发解决方案详解.docx

    前端模块化开发解决方案详解 前端模块化开发解决方案详解是指在前端开发中,为了提高代码的可维护性、可读性和可扩展性,而采用的一系列技术和规范的集合。这些解决方案的核心价值都是让 JavaScript 的模块化开发变...

    ionic项目应用requireJs前端模块化 示例

    在本文中,我们将深入探讨如何在 Ionic 项目中利用 RequireJS 进行前端模块化开发。RequireJS 是一个流行的 JavaScript 模块加载器和构建工具,它使得代码组织更加有序,便于维护和优化。Ionic 是一个基于 AngularJS...

    前端模块化进程-requirejs seajs

    requirejs seajs amd cmd,该PPT主要用于讲解前端模块化的前世今身。 requirejs seajs amd cmd,该PPT主要用于讲解前端模块化的前世今身。

    yuanjs,基于react的前端模块化框架.zip

    yuanjs,基于react的前端模块化框架.zip

    Web前端模块化组件seajs-3.0.0版

    除了解决命名冲突和依赖管理,使用 Sea.js 进行模块化开发还可以带来很多好处: 模块的版本管理。...直到最近两三年,随着 Dojo、YUI3、Node.js 等社区的推广和流行,前端的模块化开发理念才逐步深入人心。

    Web前端模块化开发教程(ES6+Node.pptx

    Web前端模块化开发教程(ES6+Node.pptx

    FEZ是面向前端模块化工程的开发框架 主要目的是统一前端开发模式和项目开发结构,自动化前端工作流,提高开发效率和开发质量.zip

    FEZ是面向前端模块化工程的开发框架。主要目的是统一前端开发模式和项目开发结构,自动化前端工作流,提高开发效率和开发质量.zip

Global site tag (gtag.js) - Google Analytics