JavaScript模块化开发笔记

1.Seajs库

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

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

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

官方网站 http://seajs.org

2.seajs如何解决?

有以下四个步骤:

①通过script引入sea.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();  //100
});

3.构建部署

对于正式项目,在发布上线前,还需要对源码进行压缩、合并等操作。
这可以通过 spm 或 Grunt 等工具来实现。

时间: 2024-08-25 12:06:03

JavaScript模块化开发笔记的相关文章

Javascript模块化开发 – AMD规范

通行的Javascript模块规范共有两种:CommonJS和AMD. 2009年,美国程序员Ryan Dahl创造了node.js项目,将javascript语言用于服务器端编程.这标志"Javascript模块化编程"正式诞生.因为老实说,在浏览器环境下,没有模块也不是特别大的问题,毕竟网页程序的复杂性有限:但是在服务器端,一定要有模块,与操作系统和其他应用程序互动,否则根本没法编程. node.js的模块系统,就是参照CommonJS规范实现的.在CommonJS中,有一个全局性

JavaScript模块化开发小谈

在网上已经有很多关于模块化开发的文章了,这里还是按照自己的理解来整理一下. 随着项目文件的越来越大和需求的越来越贴近现实(我发现现在客户不如:一个领导说我要审批你们报上来的资料,系统发布以后用的还不错,可能是有那个新鲜感,等领导烦了说:每个文件我都这么操作太累了,能不能一次报,到最后说能不能自动判断对不对……),以后的需求估计要让做个人工智能出来……借着上面继续,需求的内容越来越复杂,一个人开发时间长,多个人开发这样那样的问题一堆等等这时候Javascript模块化开发诞生了. 先说说发展历程

Javascript 模块化开发上线解决方案

最近又换部门了,好频繁地说...于是把这段时间搞的小工具们简单整理了一下,作了一个小的总结.这次用一个简单业务demo来向大家介绍一下Javascript模块化开发的方式和自动化合并压缩的一些自己的处理. 模块化开发已经有一些标准(AMD/CMD)而且现在也算比较普及了,其为开发人员提供了很大的方便.模块化开发可以按结构整理代码,将一些功能分小颗粒来实现,这样的代码维护起来会方便很多,也更灵活,更容易在一定程度上去满足各种需求的变更. 比如这是demo中的代码结构: 先说page目录,这里的每一

JavaScript模块化开发的那些事

模块化开发在编程开发中是一个非常重要的概念,一个优秀的模块化项目的后期维护成本可以大大降低.本文主要介绍了JavaScript模块化开发的那些事,文中通过一个小故事比较直观地阐述了模块化开发的过程. 小A是某个创业团队的前端工程师,负责编写项目的Javascript程序. 全局变量冲突 根据自己的经验,小A先把一些常用的功能抽出来,写成函数放到一个公用文件base.js中: var _ = { $: function(id) { return document.getElementById(id

Javascript模块化开发-轻巧自制

Javascript模块化开发-轻巧自制 一.前言现在javascript的流行,前端的代码越来越复杂,所以我们需要软件工程的思想来开发前端.模块化是必不可少的,这样不仅能够提高代码的可维护性.可扩展性以及鲁棒性,更大的好处就是能够提升整个团队的开发效率,也能够让新进的程序员更快的接手工作.今天晚上根据前辈们的经验,写啦一个简单的模块定义的封装组件,当是练手吧.不过感觉还是蛮好用的.二.学习模块化前我们应该先了解点什么呢?其实突然就学习模块化的javascript开发,那还是比较丈二和尚,摸不着

2.精通前端系列技术之JavaScript模块化开发

在使用seajs模块化开发之前,直接在页面引用js会容易出现冲突及依赖相关的问题,具体问题如下 问题1:多人开发脚本的时候容易产生冲突(比如全局参数冲突,方法名冲突),可以使用命名空间降低冲突,不能完全避免冲突 // JavaScript Document /*var a = 10; function tab(){} function drag(){} function dialog(){}*/ var miaov = {}; //名字比较长 , 只能降低冲突,不能完全避免 miaov.a =

JavaScript模块化开发实例

最近接触了一些JavaScript开发的例子,在这里与大家一起分享一下: 例子:当我们一个团队在写Js文件的时候,你一个人写的JS代码自己可以看懂也可以维护,但是别人想对你的JS进行扩展的话,如果都在同一个JS文件上写的话,那样可能会很乱,造成维护上极其不方便,这时我们可以通过JS模块化开发 1.假如这是   JsHelperOne.js //沙箱模式 防止污染外部变量 ; (function (window) { //定义一个对象 假如这个对象已存在与window下,那么我们就可以直接使用 v

JavaScript模块化编程(笔记)

一直对JS都是一知半解,最近遇到这方面问题,所以在网上学习了一下,现在还没有完全明白,先贴出笔记; 1 第一章 JavaScript模块化编程(一):模块的写法 2 3 一 原始写法 4 // 模块就是实现特定功能的一组方法;只要把不同的函数(以及记录状态的变量)简单地放在一起,就算是一个模块; 5 function m1(){ 6 // ... 7 } 8 function m2(){ 9 // ... 10 } 11 // 上面的函数m1()和m2(),组成一个模块;使用时直接调用就行; 1

javascript模块化开发编程

随着网站的不断迭代更新,js代码越来越多,那么问题来了 代码比较乱 命名出现冲突 文件依赖比较繁杂 为了解决以上问题,模块化开发出现了 1.一个简单的demo,维护和扩展模块 模块的维护和扩展一定要遵守一个约定:开闭原则 对添加开放,对修改封闭 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>扩展和维护模块</