SeaJS之use函数】的更多相关文章

有了 define 等模块定义规范的实现,我们可以开发出很多模块.但光有一堆模块不管用,我们还得让它们能跑起来.在 SeaJS 里,要启动模块系统很简单: <script src=”path/to/sea.js”></script><script>seajs.use(‘./main’);</script> seajs.use 用来在页面中加载模块.通过 use 方法,可以在页面中加载任意模块.语法:seajs.use seajs.use(id, callba…
seajs主要做了2件事 1.定义什么是模块,如何声明模块:id.deps.factory.exports ----define=function(id,deps,factory){return exports} 2.管理模块依赖,解决自动加载.本质其实是个加载器loader:id配上路径规则,factory可以提取依赖模块,递归遍历后自动加载js文件 核心的代码是util-path.js和module.js 发现seajs已经修订到3.0.0部分实现有改动,有些地方随手写的,也没求证过估计误人…
seajs.use 用来在页面中加载模块.通过 use 方法,可以在页面中加载任意模块. 实例地址:http://www.android100.org/html/201405/23/12807.html 实例中有BUG,修复后的代码见附件  附件下载地址 --------------------------------------------------- 关于seajs.use的用法如下: SeaJS之use函数  原文地址:http://www.cnblogs.com/ada-zheng/p…
模块化(之SeaJS) 刚接触的童鞋可能会有很多疑惑,比喻:什么是模块?模块的目的是干嘛呀?怎么样实现模块化呢? 不要急,博主正是带着这三个问题来写这篇文章的. 一,什么是模块化? 在前端开发领域,一个模块,可以是JS 模块,也可以是 CSS 模块,或是 Template 等模块.在 Sea.js 里,我们专注于 JS 模块(其他类型的模块可以转换为 JS 模块):模块是一段 JavaScript 代码,具有统一的基本书写格式.模块之间通过基本交互规则,能彼此引用,协同工作(怎么书写以及交互规则…
seajs与requirejs在模块的加载方面是没有差异的,无论是requirejs在定义模块时定义的依赖模块,还是seajs在factory函数中require的依赖模块,在会在加载当前模块时被载入,异步,并且顺序不可控.差异在于factory函数执行的时机. 为了增强对比,我们在定义依赖模块的时候,故意让它们的factory函数要执行相当长的时间,比如1秒: // dep_A.js定义如下,dep_B.dep_C定义同理 define(function(require, exports, m…
1. 模块化 ①常用模块化规范 CommonJS + nodejs AMD(Asynchronous Module Definition) + RequireJS CMD(Common Module Definition) + SeaJS UMD ECMAScript 2015 Module ② CMD规范seajs (1)seajs的基础语法: 引入sea.js插件包 创建一个test.js文件,在其中写如下代码: define(function( require , exports , mo…
原文地址:初学seaJs模块化开发,利用grunt打包,减少http请求 未压缩合并的演示地址:demo2 学习seaJs的模块化开发,适合对seajs基础有所了解的同学看,目录结构 js — —dist   //压缩后的目标文件夹 —lib   //各个模块 —drag    //拖拽模块 —scale   //缩放模块 —seajs    //seajs库 —seajs_drag    //入口的主文件main.js —main.js /*——————————————————————————…
一.扯淡部分 很久很久以前,也就是刚开始接触前端的那会儿,脑袋里压根没有什么架构.重构.性能这些概念,天真地以为前端===好看的页面,甚至把js都划分到除了用来写一些美美的特效别无它用的阴暗角落里,就更别说会知道js还有面向对象,设计模式,MVC,MVVM,模块化,构建工具等等这些高大上的概念了.现在想想还真是Too young too naive.前两天某大神在群里分享他招聘前端的心得的时候就说,就是那些以为能写两个页面就可以自称前端的人拉低了行业水平.这样看来前两年我还真的扯了不少后腿呢………
前言 Javascript模块化规范有CommonJs规范,和主要适用于浏览器环境的AMD规范,以及国内的CMD规范,它是SeaJs遵循的模块化规范.因为以前项目中用SeaJs做过前端的模块管理工具,所以这里总结一下自己的使用心得. 在试用SeaJs和官方推荐的CMD包管理工具——Spm2.x的过程中,遇到了很多高低版本不兼容和配置参数没弄明白的问题,后来在网上各处找资料才大概弄懂.这里我强调一下版本,是因为可能有的同学项目开始较早,用了以前版本的Seajs,再去看Seajs官网的API有些地方…
快速上手seajs——简单易用Seajs   原文  http://www.cnblogs.com/xjchenhao/p/4021775.html 主题 SeaJS 简易手册 http://yslove.net/seajs/ 背景 一个网站必然会涉及很多功能,tab选项卡.slide轮播图.pop弹出层.美化alert.paging分页等等等等,如果是企业网站那整合成一个js文件就够了,即 插件库 . 但是对于一个大的网站平台来说需要的功能可能会有很多,而且随着平台的发展,功能会越来越多.到最…
公司项目最近需要将js文件迁移到seajs来进行模块化管理,由于我以前主要接触模块化开发是接触的AMD规范的requireJS,没有接触过CMD规范,而且在实际项目中还没有用过类似技术.于是,我非常兴奋的开始了seajs的学习,正好对模块化开发仰慕已久,终于有机会大展身手了! 一开始总是有点曲折的,我照着玉伯的github上的教程一步步来,然后发现在我引入jquery的时候,require到的jquery竟然是undefined,经过一番摸索,我发现原来jquery是基于amd规范的,seajs…
grunt与seajs grunt是前端流行的自定义任务的脚手架工具,我们可以使用grunt来为我们做一些重复度很高的事情,如压缩,合并,js语法检查等.通过定义grunt的配置文件Gruntfile.js,配置并注册grunt的任务,最终我们可以通过命令行来执行任务. seajs主要用于模块化,通过define定义一个模块,可以通过require加载模块,exports导出模块.具体的seajs实现可通过本博客的系列博文--Seajs源码解析系列来进一步了解. 在实际生产中,如果紧紧定义一系列…
入口方法 每个程序都有个入口方法,类似于c的main函数,seajs也不例外.系列一的demo在首页使用了seajs.use(),这便是入口方法.入口方法可以接受2个参数,第一个参数为模块名称,第二个为回调函数.入口方法定义了一个新的模块,这个新定义的模块依赖入参提供的模块.然后设置新模块的回调函数,用以在loaded状态之后调用.该回调函数主要是执行所有依赖模块的工厂函数,最后在执行入口方法提供的回调. // Public API // 入口地址 seajs.use = function(id…
模块类和状态类 参照上文的demo,我们结合源码分析在简单的API调用的背后,到底使用了什么技巧来实现各个模块的依赖加载以及模块API的导出. 首先定义了一个Module类,对应与一个模块 function Module(uri, deps) { this.uri = uri this.dependencies = deps || [] this.exports = null this.status = 0 // Who depends on me this._waitings = {} //…
简述 前端开发模块化已经是大势所趋,目前模块化的规范有很多,众所周知的有commonJS,Module/Wrappings和AMD等,而且ES6也着手开始制定模块化机制的实现.类似于c/c++的include,java中的import关键字,在js中也定义了require关键字,用以引进依赖模块. 由于规范的多样性,模块化的实现也是各有各的不同.nodejs遵从的就是commonJS规范,它有着一些形式上的约定: require为函数,该函数接受一个字符串作为模块标示符 require函数返回值…
一.seajs 1. 使用seajs的一般步骤 a)在主页面引入sea.js b)写模块 c)在主页面使用模块 2.模块的写法 math.js define(function(require, exports, module){ var squareObj=require("square"); module.exports={ add:function(a,b){ return a+b; }, cube:function(a){ return squareObj.square(a)*a…
seajs实现了JavaScript 的 模块开发及按模块加载.用来解决繁琐的js命名冲突,文件依赖等问题,其主要目的是令JavaScript开发模块化并可以轻松愉悦进行加载. 官方文档:http://seajs.org/docs/#docs 首先看看seajs是怎么进行模块开发的.使用seajs基本上只有一个函数"define" fn.define = function(id, deps, factory) { //code of function- } 使用define函数来进行定…
1. seajs是用来进行模块化管理,将每一个功能当做是一个功能模块,在模块之间运用require进行连接,类似于java/C++/C等语言中的类. 2. 在文件html 的尾部引入入seajs的文件,调用seajs.use("main.js");main.js时文件的主功能模块的js文件部分.     define(require,exports,module);     require("**.js")引用路径     exports 提供单个接口exports…
seajs.config Obj alias Obj 别名配置,配置之后可在模块中使用require调用require('jQuery'); seajs.config({ alias:{ 'jquery' : 'jquery/jquery/1.10.1/jquery' } }) defined(function( require , exports , module ){ //引用jQuery var $ = require('jquery'); }); paths Obj 设置路径,方便跨目录…
我们用模块化的思想进行网页的编写是为了更好的管理我们的项目 模块与模块之间是独立存在的,每个模块可以独立的完成一个子功能. 模块化所涉及的规范commonjs,AMD,CMD,UMD 其中的commonjs是服务器规范,用到的是同步加载,适用于nodejs后台的操作 由于commonjs的特性是同步加载,并不适用于前端,人们想解决前端异步加载的问题,AMD就应运而生了. AMD将commonjs的思想全部推翻,产生了一套新的规范,它是专门为前端定制的规范,实现了异步加载. CMD和AMD的区别是…
之前有一篇博客非常详细的介绍了sea.js的加载流程,以及源代码实现,链接地址:http://www.cnblogs.com/chaojidan/p/4123980.html 这篇博客我主要讲下sea.js的介绍和使用. 首先,先介绍下sea.js的CMD规范,以及跟其他规范的区别. CommonJS 原来叫 ServerJS,推出 Modules/1.0 规范后,在 Node.js 等环境下取得了很不错的实践. 09年下半年这帮充满干劲的小伙子们想把 ServerJS 的成功经验进一步推广到浏…
seajs模块的六个状态. var STATUS = {  'FETCHING': 1, // The module file is fetching now. 模块正在下载中  'FETCHED': 2, // The module file has been fetched. 模块已下载  'SAVED': 3, // The module info has been saved. 模块信息已保存  'READY': 4, // All dependencies and self are r…
代码概览 src目录文件列表如下: 代码以模块化的方式来组织,构建的时候会合并为一个js文件(sea.js 或 sea-debug.js),其中,intro.js和 outro.js 分别是这个js文件的头部和尾部. 如果习惯看一个文件的代码,可以直接阅读dist目录下的 sea-debug.js , 这个是 所有模块合并后的代码 . sea.js 记录了当前的版本,“@VERSION”在构建的时候应该会被替换为具体的版本号. util 开头的文件是一些工具方法,比如 路径的转换.语法的增强.事…
seajs是一个起辅助作用的库,所以它可以更方便开发,而它可以解决以下问题: 1.命名问题,就是冲突 2.性能问题,就是只要一个功能,但却使用一个大插件中的一个小功能,所以要手动拆分出这个功能 3.js依赖问题,要引入多个js文件,而且顺序也要排好,要手动去调节,要根据需求不断调节这些问题,修改BUG seajs推荐一个功能就是一个模块,所以一个功能一个js文件. 一般流程都是以下代码: <script> /*seajs的目录路径要搞清楚,你的文件在哪使用seajs,那个就是根目录*/ /*配…
//方法一:将函数绑定到原型上 define(function(require, exports, module) { $.fn.tab = function(option, callback) { function bootstrap() { console.log('djsakhdkj'); } bootstrap(); } $(function(){ $().tab();//因为将tab绑定到$原型上,所以要使用$().tab()去调用 }) }) //方法一(2):将函数绑定到jquer…
回顾 上一篇讲解了引入bootstrap构建一个简单的登录页面,如何让angularjs自动启动并绑定视图,操作过程当中如何使用ui-bootstrap,继而完成简单功能后如何引入seajs后如何使ng手动启动.我会尽量把自己在学习当中遇到的问题以及如何解决分享给各位,如果大家有什么疑问或者想要达到的功能可以告诉我,我可以尝试去把效果做出来然后再下一篇文章分享给各位. 需要解决的问题 1.实现ajax form 2.构建菜单 实现ajax form 首先给$scope定义一个formData的对…
简介 Bootstrap是Twitter推出的一个用于前端开发的开源工具包,它由Twitter的设计师Mark Otto和Jacob Thornton合作开,是一个CSS/HTML框架. AngularJS是Google 开源出来的一套 js 工具,为了克服HTML在构建应用上的不足而设计的,试图成为WEB应用中的一种端对端的解决方案,通过为开发者呈现一个更高层次的抽象来简化应用的开发,后面简称"ng". Seajs是一款优秀的模块开发插件,可以实现按需加载. Bootstrap有自己…
背景 seajs是一款优秀的模块开发插件,但是当我们使用它来进行模块化开发的时候,由于它的每个模块的加载都会进行一次http请求,那么当模块数量倍增的时候,会拖慢页面的加载速度. 通常我们为了能加快页面的加载速度,都会对js进行压缩并把关联的模块打包为一个独立的js文件,这样可以大大减少js的文件大小并且减少http请求的次数,这样可以提升到页面的加载速度. 我们可以是用spm来对js文件进行打包.压缩(使用spm-build),但是当我们编写兼容多种环境的js的时候(既可以直接用script引…
SeaJS 是一个遵循 CMD 规范的模块化加载框架 CommonJS,CMD,AMD等规范后文会提到,这里主要先了解如何在代码中使用. 如果你有使用过nodejs ,那么理解起来就容易多了. 我们通过sea.js来加载我们定义的模块(这会儿遵循CMD规范)并使用相应的数据. 首先,当然是要下载sea.js,可以直接去http://seajs.org/docs/#downloads 直接下载代码包,解压后 在 /dist/目录下可以 找到 sea.js CMD规范是懒加载,按需加载,也就是在re…
seajs配置 seajs.config({ //别名配置 alias:{ 'es5-safe':'gallery/es5-safe/0.9.3/es5-safe', 'jquery':'jquery/jquery/1.10.1/jquery', 'json':'gallery/json/1.0.2/json', }, //配置路径 path:{ 'gallery':'https://a.alipayobjects.com/gallery' }, //变量配置 vars:{ 'locale':'…