前端模块规范有三种: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(); });
相关推荐
在前端模块化开发中,Node.js用于搭建开发环境,安装和管理依赖,以及构建和打包工具。 4. **Webpack**:Webpack是一个现代JavaScript应用程序的静态模块打包工具。它的工作原理是将项目视为一个模块依赖图,...
Web前端模块化开发教程课件(完整版).pptx
"Web前端模块化开发教程全套ppt课件最全电子讲义完整版教学教程整套全书课件ppt.pptx" 本资源是一个关于Web前端模块化开发的教程,全套ppt课件包括了从ES6基础到模块化开发的各个方面的知识点。下面是从标题、描述...
前端模块化设计是一种高效、可复用的编程思想,它旨在优化前端开发流程,提高代码组织的清晰性和可维护性。模块化的核心理念是减少循环依赖和耦合,通过合理划分模块,使得每个模块专注于自己的功能,从而提高设计...
标题提到的"用于前端模块化使用的jq"指的是经过特殊处理的jQuery版本,这个版本是为前端模块化开发优化的,能够帮助开发者更高效、更灵活地在项目中引入jQuery。 在传统的前端开发中,jQuery通常通过 `<script>` ...
前端模块化.xmind
前端模块化是现代Web开发中不可或缺的一部分,它允许开发者将复杂的应用程序分解为多个独立的模块,从而提高代码的可读性、可维护性和复用性。模块化的核心思想是将一个大型程序划分为若干个模块,每个模块都有自己...
【前端模块化webpack1】 前端模块化是现代Web开发中不可或缺的一部分,它使得代码组织更加有序,便于维护和复用。随着技术的发展,模块化的规范也在不断演进,包括CommonJS、AMD(Asynchronous Module Definition)...
编写BrowserRequire目的不在于统一前后端模块使用,而是做一款更适合Web前端开发需求的模块化框架; 更好的处理了模块与非模块间的使用; 更像是LABjs requireJS的结合增强版,但打包源文件只有7kb左右; ...
在现代Web开发中,前端模块化已经成为不可或缺的一部分,它能够帮助开发者组织代码,提高代码复用性和可维护性。这个名为“前端模块化脚手架”的工具,旨在为前端开发者提供一个类似于Java语言的封装、继承和多态...
前端模块化开发是互联网前端领域的一项重要技术,它的主要目的是将复杂的程序分解成一系列容易管理和维护的模块。在网页开发的早期阶段,JavaScript主要用于做一些简单的表单验证或动画实现,代码量较少,可以直接写...
前端模块化开发解决方案详解 前端模块化开发解决方案详解是指在前端开发中,为了提高代码的可维护性、可读性和可扩展性,而采用的一系列技术和规范的集合。这些解决方案的核心价值都是让 JavaScript 的模块化开发变...
在本文中,我们将深入探讨如何在 Ionic 项目中利用 RequireJS 进行前端模块化开发。RequireJS 是一个流行的 JavaScript 模块加载器和构建工具,它使得代码组织更加有序,便于维护和优化。Ionic 是一个基于 AngularJS...
requirejs seajs amd cmd,该PPT主要用于讲解前端模块化的前世今身。 requirejs seajs amd cmd,该PPT主要用于讲解前端模块化的前世今身。
yuanjs,基于react的前端模块化框架.zip
除了解决命名冲突和依赖管理,使用 Sea.js 进行模块化开发还可以带来很多好处: 模块的版本管理。...直到最近两三年,随着 Dojo、YUI3、Node.js 等社区的推广和流行,前端的模块化开发理念才逐步深入人心。
Web前端模块化开发教程(ES6+Node.pptx
FEZ是面向前端模块化工程的开发框架。主要目的是统一前端开发模式和项目开发结构,自动化前端工作流,提高开发效率和开发质量.zip