seajs进行模块化开发

seajs进行模块化开发

模块化前端开发入门指南(二)

2015-08-26 15:23 by paseo, 370 阅读, 0 评论, 收藏编辑

概览

使用seajs模块化加载器进行模块化开发,以及它的一些弊端。

使用seajs进行模块化开发

项目目录

  1. 新建新项目
  2. 引入sea.js,文件路径modules/sea.js
  3. 引入公共库jquery。
  4. 新建index.html,index.js

项目目录如下:

关于sea.js的公共模块路径
sea.js加载时,会自动获取sea.js所在的路径,将sea.js文件存放的路径做为公共模块的根目录。
以modules/sea.js为例,require(‘a‘)加载的是modules/a.js模块,require(‘a/b‘)加载的是modules/a/b.js模块。

index.html内容如下:

<!--index.html-->

<!doctype html>
<html>
	<head>
		<title>使用seajs进行模块化开发</title>
		<!--引入公共库-->
		<script src="libs/jquery.js"></script>
	</head>
	<body>
		<div id="container"></div>

		<!--引入seajs-->
		<script src="modules/sea.js"></script>		

		<!--引入index.html业务脚本-->
		<script>
			seajs.use(‘./scripts/index‘)
		</script>
	</body>
</html>

创建模块

创建文件modules/moduleA.js。接上篇三种封装形式,使用CMD规范后,分别是这样:


// 创建jquery插件形式,不需要返回值
// 使用方法require(‘moduleA‘),返回为null
define(function(require, exports, module) {

	//$为公共模块
	$.fn.moduleA = function(options) {

	};
});

//Object字面量方式
define(function(require, exports, module) {

	module.exports = {
		fn1: function() {},
		fun2: functdion() {}
	};
});

//prototype继承,new Function方式
define(function(require, exports, module) {
	function moduleA() {
		//constructor
	}

	moduleA.prototype.fn1 = function() {};
	moduleA.prototype.fn2 = function() {};

	module.exports = moduleA;
});

模块的使用


/*
	jquery插件形式的模块加载方式
	*/
define(function(require, exports, module) {

	//加载模块
	require(‘moduleA‘); 

	//使用
	$(‘body‘).moduleA();
});

/*
Object形式
*/
define(function(require, exports, module) {

	//加载模块
	var moduleA = require(‘moduleA‘);

	//使用
	moduleA.fn1();
	moduleA.fn2();

});

/*
原型链继承, new Function形式
*/
define(function(require, exports, module) {

	//加载模块
	var ModuleA = require(‘moduleA‘);

	//使用
	var moduleA = new ModuleA();
	moduleA.fn1();
	moduleA.fn2();

});

总结

seajs作为一款国人创造的一个工具库,一直是被放在与requirejs齐平的地位上探讨,个人觉得非常不易。使用方式也简单易懂。而且有配套的打包和构建工具,做工程化也不是问题。不足之处是文档不足,提供的工程化产品在国外的grunt、gulp、bower、browserify、components等工程化产品的生态和完整使用文档冲击下,受众不多。

延伸阅读

如何改造现有文件为CMD模块
玉伯回答seajs和其他模块加载器的异同
玉伯近期说要给seajs立碑悼念,知乎人的看法

时间: 2024-10-09 05:25:43

seajs进行模块化开发的相关文章

seajs的模块化开发--实践笔记

2017-04-02 SeaJS是一个遵循CMD规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制.有效的解决复杂项目中命名冲突.依赖.性能等问题. SeaJS中使用define函数定义一个模块.define可以接收三个参数:require, exports, module. require--模块加载函数,用于记载依赖模块. exports--接口点,将数据或方法定义在其上则将其暴露给外部调用. module--模块的元数据. SeaJS的基本用法有以下

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

原文地址:初学seaJs模块化开发,利用grunt打包,减少http请求 未压缩合并的演示地址:demo2 学习seaJs的模块化开发,适合对seajs基础有所了解的同学看,目录结构 js — —dist   //压缩后的目标文件夹 —lib   //各个模块 —drag    //拖拽模块 —scale   //缩放模块 —seajs    //seajs库 —seajs_drag    //入口的主文件main.js —main.js /*——————————————————————————

轻轻谈一下seaJs——模块化开发的利器

"仅做一件事,做好一件事." 这个应该就是seaJs的精髓了. 我在自己的一些项目中使用过seaJs,对其算是了解一二,现在就班门弄斧,轻轻地谈一下. 首先上一段度娘的话: "seaJs是一个遵循CommonJs规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制.与jQuery等JavaScript框架不同,SeaJS不会扩展封装语言特性,而只是实现JavaScript的模块化及按模块加载.SeaJS的主要目的是令JavaScript开

JS模块化开发(三)——seaJs+grunt

1.seaJs直接构建存在的问题 由于模块之间的依赖require引用的是模块名,当多个js模块被合并成一个时,会由于找不到模块名而报错 2.seaJs+grunt开发 用到的插件:grunt-cmd-transport和grunt-cmd-concat       (CMD规范) grunt-cmd-transport:提取本模块的ID和本模块所依赖的ID(数组格式),作为define函数的两个参数:define(ID,[依赖数组],function(require,exports,modul

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

一.扯淡部分 很久很久以前,也就是刚开始接触前端的那会儿,脑袋里压根没有什么架构.重构.性能这些概念,天真地以为前端===好看的页面,甚至把js都划分到除了用来写一些美美的特效别无它用的阴暗角落里,就更别说会知道js还有面向对象,设计模式,MVC,MVVM,模块化,构建工具等等这些高大上的概念了.现在想想还真是Too young too naive.前两天某大神在群里分享他招聘前端的心得的时候就说,就是那些以为能写两个页面就可以自称前端的人拉低了行业水平.这样看来前两年我还真的扯了不少后腿呢……

前端模块化开发的价值(seaJs)

随着互联网的飞速发展,前端开发越来越复杂.本文将从实际项目中遇到的问题出发,讲述模块化能解决哪些问题,以及如何使用 Sea.js 进行前端的模块化开发. 恼人的命名冲突 我们从一个简单的习惯出发.我做项目时,常常会将一些通用的.底层的功能抽象出来,独立成一个个函数,比如 function each(arr) { // 实现代码 } function log(str) { // 实现代码 } 并像模像样地把这些函数统一放在 util.js 里.需要用到时,引入该文件就行.这一切工作得很好,同事也很

使用seajs进行模块化前端开发

之前有一篇文章介绍了requireJS进行模块化开发,今天来说高大上的国产SeaJS的吧,是的SeaJS遵循的是CMD规范.作者是淘宝前端工程师,名字叫玉伯.此解决方案的宗旨是使前端工程师从繁重的js文件及对象依赖处理中解救出来,从而可以专注代码的逻辑本身. 要使用SeaJs,只要下载sea.js文件,然后直接包含在html文件中就可以了,那么如何定义能被seajs加载的模块呢?请看下面的这段源码: fn.define = function(id, deps, factory) { //code

使用SeaJS实现模块化JavaScript开发

前言 SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制.与jQuery等JavaScript框架不同,SeaJS不会扩展封装语言特性,而只是实现JavaScript的模块化及按模块加载.SeaJS的主要目的是令JavaScript开发模块化并可以轻松愉悦进行加载,将前端工程师从繁重的JavaScript文件及对象依赖处理中解放出来,可以专注于代码本身的逻辑.SeaJS可以与jQuery这类框架完美集成.使用SeaJS可

seaJs模块化开发简单入门

随着前端技术的日益成熟,功能越来越丰富强大,规范也越来越健全,在这样的背景环境下很快便有了CommonJs.AMD.CMD等一系列规范,使前端发开趋向模块化.规范化.CMD模块化的代表之一就是国内开发的seaJs,它有很多优点: 遵从CMD规范,代码模块化 中文文档通俗易懂,入门上手简单 兼容性好.配置简洁明了.提供插件接口 seajs模块化基本流程: 引入sea.js库 define定义模块 exports暴露模块 require导入模块 安装 npm安装 npm i seajs bower安