最近打算整理一下项目的前端代码,将js代码模块化。RequireJS/SeaJS使我选型的对象。
SeaJS是国人写的基于CommonJS规范的javascript模块管理工具,由于有一手的中文档,并且和node.js是统一模块标准,自然而然就选他了。
简单的概念:
- SeaJS中所有js代码都应该被模块化,未模块化的代码不能用SeaJS API进行引用
- 通常一个文件一个模块,文件名即模块名
- 如果要通过SeaJS引用jquery,ExtJS等库,你需要先对它们进行改造(暂时定为高级内容,本文不涉及)
SeaJS中的模块API:
文件main.js, 定义模块:
define(function (require, exports, module) {
exports.sum = function(x, y) {
return x + y;
}
})
关键字define, 以及匿名函数的参数一个都不能少, 注意: require, exports, module 参数名称也不能改.
exports: 用于声明该模块的对外接口, main.js的对外接口为 sum function
module: 用于表示当前模块的信息,具有如下属性:
id: 模块的唯一表示, require方法需要用到他
exports: 当前模块开放的接口, Object, main.js中是 sum
dependencies: 当前模块的依赖列表, Array, 下面increment.js的是: ["math"]
文件increment.js, 引用(require)模块:
define(function (require, exports, module) {
var add = require('math').sum;
exports.increment = function (val) {
return add(val, 1)
}
})
require用于引用一个模块,上面代码引用了 math 模块, 并且用 add 变量来保存 sum 方法的引用.
概念完了,开始实战
我平时做java,对tomcat最熟,本片就以tomcat为主.
1. 创建工程结构:
在tomcat\webapps创建如下目录结构, 当然你也可以用eclipse创建 Dynamic Web Project
2. 下载SeaJS
http://modules.seajs.com/seajs/1.0.1/sea-debug.js
下载好后将sea-debug.js文件复制到lib下, 同时可以吧你喜欢的第三方库放这里。
关于如后引用第三方库,请稍后... 后面会提到
3. 安装SeaJS
在index.html中的head节点下加入script标签:
<script src="lib/sea-debug.js" type="text/javascript" charset="utf-8" data-main="./javascripts/main"></script>
期中 data-main用于指定初始加载的模块, ./javascripts/main 只的是 javascripts/main.js 文件
完整的index.html代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>index</title>
<meta name="generator" content="TextMate http://macromates.com/">
<meta name="author" content="吕健">
<!-- Date: 2011-09-05 -->
<script src="lib/sea-debug.js" type="text/javascript" charset="utf-8" data-main="./javascripts/main"></script>
<script src="lib/jquery-1.4.2.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
</body>
</html>
4. 构建main.js:
seajs.config({
// 只定base目录,类似java中的src目录
base: './javascripts/',
// 目录长的可以声明别名, 这点十分人性化
alias: {
},
// 下面配置自己理解
charset: 'utf-8',
timeout: 20000,
debug: 0
});
define(function(require, exports, module) {
// 如果没有配置base, 需要用 require('./javascripts/increment')
var inc = require('increment').increment;
var a = 1;
console.log(inc(a));
})
5. 启动tomcat
访问 http://localhost:8080/seajs_demo/index.html 看看控制台数据(看输出请远离IE)
到这里估计你已经知道如何使用SeaJS了.
最后一个问题, 如何引用lib/下的jquery ?
jQuery是我从官方站点下的,没有模块化,无法通过SeaJS的require进行引用。如果要用SeaJS管理jquery, 你需要对jquery源码进行改造(SeaJS团队是这么做的).
我采用的方式是直接在html中引用, 不将其纳入SeaJS的模块管理。
<script src="lib/jquery-1.4.2.js" type="text/javascript" charset="utf-8"></script>
SeaJS 提供了一个类似于npm的管理工具,里面有他们改造好的第三方库,你可以在这里找找是否有适合的:
参考资料
这两天在做模块工作时,在GitHub Wiki中找到了不少文档:
https://github.com/seajs/seajs/wiki/Community
Blogs and tutorials
初级入门
中级使用
高级探索
修订历史
## 2011-09-07
1. 删除了不少废话,修改了不少手误造成的错别字
2. 为直接引用jquery的方式添加了代码描述
## 2011-09-09
1. 去掉了前面对文档不足的乱喷(发泄的言论,不值得保留)
2. 添加参考资料
- 大小: 14.6 KB
- 大小: 17.9 KB
- 大小: 22 KB
- 大小: 19.4 KB
- 大小: 154.5 KB
分享到:
相关推荐
JavaScript模块化编程是现代Web开发中的重要组成部分,它有助于组织代码、提高可维护性和复用性。本篇文章将深入探讨JavaScript模块化编程的实战应用,特别是通过试用SeaJS这一工具来实现。SeaJS是一款专注于浏览器...
JavaScript模块化开发库之SeaJS 在Web开发中,JavaScript代码的组织和管理是一个重要的问题。随着项目的复杂性增加,代码的模块化变得至关重要。SeaJS便是一个专注于JavaScript模块化开发的库,它提供了一种在...
基于seajs模块化的合并压缩###合并压缩前--Gruntfile.js--打包脚本--pagekage.json--依赖的npm配置--node-modules/--下载的npm--app/ //存放页面--src/ //打包前目录------seaConfig.js //Seajs配置文件------page/ ...
随着Web应用的复杂度不断提升,JavaScript代码的组织和依赖管理变得至关重要,SeaJS 提供了一种有效的解决方案,使得开发者能够按照模块化的思想来编写代码,提高代码的可维护性和复用性。 SeaJS 的核心概念是模块...
Seajs是中国开源社区推出的一款浏览器端的模块加载器,它借鉴了CommonJS的规范,但针对浏览器环境进行了优化,使得JavaScript在浏览器端也能实现模块化的开发。本教程将带你快速了解并掌握Seajs的使用,让你在5分钟...
首先,Seajs的核心功能是解决JavaScript的异步加载问题,它允许开发者按照模块化的方式来编写代码,每个模块都有自己的作用域,避免了全局变量污染。在Seajs中,模块通过`define`定义,通过`require`来引用和加载。...
- **seajs-css.js**:这是一个加载CSS资源的插件,它可以让Seajs自动加载CSS文件,与JavaScript模块一起管理。 - **seajs-debug.js**:提供调试功能,通过设置环境变量`seajs.debug = true`,可以在浏览器中开启...
seajs-css.js 用于seajs加载css文件,上课用的课件资源,大家有需要的可以随时下载。版本是非常好用的,作为一个学习模块化我们必须的知识插件
Seajs-2.2.3 是一个开源的 JavaScript 模块加载器,旨在为开发者提供简单、极致的模块化开发体验。它强调的是简洁、自然的代码书写和组织方式,使得项目管理和协同工作变得更加高效。Seajs 在JavaScript社区中扮演着...
这是自己编写的模仿seajs模块加载的模块加载器,用于学习交流之用。大致模仿seajs的模块化加载实现。
1. **模块化开发**:Seajs 提供了类似于 Node.js 的模块加载机制,允许开发者将代码分解为多个模块,每个模块都有自己的作用域,避免全局变量污染,提高代码可维护性。 2. **CMD(Common Module Definition)规范**...
Seajs是中国开源社区非常受欢迎的一款JavaScript模块加载器,它的出现为Web开发引入了CommonJS规范,使得前端开发更加模块化,便于代码管理和维护。Seajs 2.3.0是该库的一个稳定版本,提供了丰富的功能和优化。 一...
模块化可以让每个文件的职责单一,非常有利于代码的维护。Sea.js 还提供了 nocache、debug 等插件,拥有在线调试等功能,能比较明显地提升效率。 前端性能优化。Sea.js 通过异步加载模块,这对页面性能非常有益。...
Seajs的核心理念是让JavaScript模块化变得简单,帮助开发者解决在大型Web项目中代码组织、依赖管理以及加载性能等问题。 ## Seajs的下载与安装 要在项目中使用Seajs,首先需要从官方网站或者其他可靠的源获取最新...
SeaJS的核心理念是模块化,它借鉴了CommonJS标准,使得JavaScript代码可以像Node.js中那样进行模块化编写。CommonJS是一个为服务器端JavaScript设计的一套API,但SeaJS将其应用到了浏览器环境,使得前端开发也能享受...
而SeaJS则是一款遵循CommonJS规范的前端模块加载器,它让JavaScript模块化变得简单,尤其在浏览器环境里。 Grunt是一个基于Node.js的任务自动化构建工具,它可以帮助开发者执行一系列预定义的任务,如编译、测试、...
【前端项目-seajs.zip】是一个包含前端开发工具的压缩包,主要关注的是Seajs模块加载器,这是一个专为Web设计的模块化解决方案。Seajs在前端开发领域扮演着重要角色,因为它提供了一种组织和管理JavaScript代码的...
Seajs 是一个轻量级的前端模块加载器,它的出现是为了在浏览器环境中实现模块化开发,使得JavaScript代码的组织更加有序,便于维护和协作。Seajs 的设计思想深受CommonJS的影响,但考虑到浏览器环境的特性,它并没有...
Seajs是一款轻量级的JavaScript模块加载器,它遵循CommonJS规范,旨在解决浏览器环境中的模块化问题。在深入理解seajs源代码之前,我们首先需要了解模块化的基本概念和CommonJS规范。 模块化是软件开发中的一种组织...