1.Seajs库

解决开发中的冲突依赖等问题,提供代码可维护性。

SeaJS 是由玉伯开发的一个遵循 CommonJS 规范的模块加载框架,可用来轻松愉悦地加载任意 JavaScript 模块和css模块样式。

SeaJS 就两个核心:模块定义和 模块的加载及依赖关系。

官方网站 http://seajs.org

2.seajs如何使用?
  主要有以下四个步骤:

①通过script引入sea.js的库

②把js文件变成模块  –define

③调用模块  –exports

④加载模块  –seajs.use

依赖模块   –require

例如:用define把普通模块变成sea的模块

function show(){
alert(1);
} //使用define改写model1.js
  define(function(require,exports,module){ 
//sea下的参数 : 不允许修改的 三个参数可以都写,可以都不写或者只写前两个或者只写前一个,只能省略后面的参数,不能省略前面的参数
//exports : 对外提供接口的对象
function show(){
alert(1);
}
exports.show = show; });

seajs.use两个参数 :

第一个参数 : 模块的地址--相对于sea.js的相对路径,后面的“.js”后缀可以省略 、

第二个参数 :callback回调函数 say.sayHello()就是调用sayHello模块的exports.sayHello方法,当然这callback函数中有个say参数。

seajs.use("sayHello/sayHello",function(say){
say.sayHello("out","Hello SeaJS!");
});
seajs.use('./js/module1.js',function(ex){
ex.show(); //1
});

模块的依赖关系

  模块的依赖其实在模块定义的时候就应该存在了。

例如在model2.js里面如果要弹出model3.js模块里面的一个参数

//model2.js
define(function(require,exports,module){
//require : 模块之间依赖的接口
var a = require('./module3.js').a; //当引入的是sea下面的模块的时候,那么require执行完的结果就是exports
function show(){
alert(a);
}
exports.show = show; }); //model3.js
define(function(require,exports,module){
var a = 100;
exports.a=a;
});

页面中调用

seajs.use('./js/module2.js',function(ex){
ex.show(); //
});

3.构建部署

对于正式项目,在发布上线前,还需要对源码进行压缩、合并等操作。
这可以通过 spm 或 Grunt 等构建工具来实现。这之前先了解下模块化历史。

  • nodeJS的出现(http://nodejs.org/)

-------commonJS规范(http://www.commonjs.org/)规定服务器模块化端开发规范的

  • 浏览器JS的模块化?有两个规范

——AMD规范(http://wiki.commonjs.org/wiki/Modules/AsynchronousDefinition)

》代表requireJS库(http://requirejs.org/)

——CMD规范

》代表Seajs采用的cmd规范 针对浏览器端的模块化开发

4.构建工具

gruntjs(http://www.gruntjs.net/ )

gruntjs是构建前端可维护性的项目,如自动化、文件压缩、合并及单元测试等等。

安装流程

  1. 先安装nodejs和npm(包管理工具)
  2. npm install -g grunt-cli  全局安装grunt
  3. npm install grunt --save-dev
  4. grunt -version  查看版本号安装成功
  5. npm install grunt --save-dev

参考资料:JavaScript 项目构建工具 Grunt 实践:安装和创建项目框架

Js模块化开发--seajs和gruntJs的更多相关文章

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

    一.扯淡部分 很久很久以前,也就是刚开始接触前端的那会儿,脑袋里压根没有什么架构.重构.性能这些概念,天真地以为前端===好看的页面,甚至把js都划分到除了用来写一些美美的特效别无它用的阴暗角落里,就 ...

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

    1.seaJs直接构建存在的问题 由于模块之间的依赖require引用的是模块名,当多个js模块被合并成一个时,会由于找不到模块名而报错 2.seaJs+grunt开发 用到的插件:grunt-cmd ...

  3. Js模块化开发的理解

    Js模块化开发的理解 模块化是一个语言发展的必经之路,其能够帮助开发者拆分和组织代码,随着前端技术的发展,前端编写的代码量也越来越大,就需要对代码有很好的管理,而模块化能够帮助开发者解决命名冲突.管理 ...

  4. JS模块化开发----require.js

    前言 前端开发中,起初只要在script标签中嵌入几十上百行代码就能实现一些基本的交互效果,后来js得到重视,应用也广泛起来了,jQuery,Ajax,Node.Js,MVC,MVVM等的助力也使得前 ...

  5. JS模块化开发(一)——seaJs

    模块化开发要解决的问题: 1.冲突 比如:多人协作开发时,不同js库中的函数重名问题 可以用命名空间解决: var module={} module.a=1; module.b=function(){ ...

  6. 2.精通前端系列技术之JavaScript模块化开发 seajs(一)

    在使用seajs模块化开发之前,直接在页面引用js会容易出现冲突及依赖相关的问题,具体问题如下 问题1:多人开发脚本的时候容易产生冲突(比如全局参数冲突,方法名冲突),可以使用命名空间降低冲突,不能完 ...

  7. js模块化开发——前端模块化

    在JavaScript发展初期就是为了实现简单的页面交互逻辑,寥寥数语即可:如今CPU.浏览器性能得到了极大的提升,很多页面逻辑迁移到了客 户端(表单验证等),随着web2.0时代的到来,Ajax技术 ...

  8. require.js模块化开发

    模块化开发的原因: 1.引入的js过多然后在加载的过程中容易出现假死的状态,导致页面会发生白屏 2.变量名的问题 在多人协作开发的时候容易出现变量名的冲突 面向对象 3.引入优先级的问题 模块化开发分 ...

  9. 2.精通前端系列技术之JS模块化开发-深入学习seaJs(四)

    深入学习seajs 配置信息 alias : 别名配置 paths : 路径配置 vars : 变量配置 map : 映射配置 preload : 预加载项 debug : 调试模式 base : 基 ...

随机推荐

  1. Codeforces 1239A. Ivan the Fool and the Probability Theory

    传送门 注意到连续两个格子如果有相同颜色那么一路过去的都可以确定 比如一开始染了这两个位置: 然后发现后面整片过去都可以确定: 对于横着的情况也是一样,然后就会发现不可能出现横着两个和竖着两个同时都有 ...

  2. spring-cloud 学习二 服务发现

    注册中心服务发现的例子 添加module pom文件如下 <?xml version="1.0" encoding="UTF-8"?> <pr ...

  3. VPS磁盘划分建立新磁盘

    今天我们来教下大家拿到VPS后,如何划分电脑内的磁盘空间.很多朋友可能遇到拿到VPS,为什么会打开电脑后在电脑盘那看到就一个C盘.还有些用户以为怎么只有那小的磁盘空间啊!怎么和卖的不一样啊!其实了我们 ...

  4. TCP/IP协议栈各个层次及分别的功能

    网络接口层:这是协议栈的最低层,对应OSI的物理层和数据链路层,主要完成数据帧的实际发送和接收.网络层:处理分组在网络中的活动,例如路由选择和转发等,这一层主要包括IP协议.ARP.ICMP协议等.传 ...

  5. PHP之50个开源项目

    GitHub上50个最受欢迎的PHP开源项目[2019] 1.Laravel Laravel是一个为Web开发者打造的PHP开发框架. GitHub Stars: 43.5k+ 网址: https:/ ...

  6. centos 查看ip

    1.现象: 通过ip addr 查找Ip时,发现ens33中没有inet属性,如下图: 2.解决方法 打开网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-ens ...

  7. hadoop-2.7.3安装kafka_2.11-2.1.0

    软件下载: http://mirrors.shu.edu.cn/apache/kafka/2.1.0/kafka_2.11-2.1.0.tgz 把下载好的包kafka_2.11-2.1.0.tgz 上 ...

  8. python3中OS模块

    os模块 OS模块简单的来说它是一个Python的系统编程的操作模块,可以处理文件和目录这些我们日常手动需要做的操作. 可以查看OS模块的帮助文档: import os:#导入os模块 help(os ...

  9. JavaMaven【五、Maven集成Eclipse使用】

    创建Maven项目 右键->new->other(Ctrl+n)->Maven Project->quickStart(catalog) 执行指令 右键->Run As- ...

  10. MySQL添加唯一索引

    1 语法如下 ALTER TABLE `t_user` ADD unique(`username`);