Ⅰ jquery layer插件,拓展模块layer.ext.js如何正确加载
jquery layer插件,拓展模块layer.ext.js正确加载需要进行全局配置。
解决方法如下:
layer.config(options)- 初始化全局配置
这是一个可以重要也可以不重要的方法,重要的是,它的权利真的很大,尤其是在模块化加载layer时,你会发现你必须要用到它。它不仅可以配置一些诸如路径、加载的模块,甚至还可以决定整个弹层的默认参数。而说它不重要,是因为多数情况下,你会发现,你似乎不是那么十分需要它。但你真的需要认识一下这位伙计。
如果您是采用seajs或者requirejs加载layer,你需要执行该方法来完成初始化的配置。
如果你是采用<script src="?a.js&layer.js">这种合并的方式引入layer,那么您需要在script标签上加一个自定义属性merge="true"。
layer.ready(path, callback)- 初始化就绪
由于我们的layer内置了轻量级加载器,所以你根本不需要单独引入css等文件。但是加载总是需要过程的。当你在页面一打开就要执行弹层时,layer.ready()会是一个不错的帮手。它也可以做一些layer.config可以做的事,比如指向layer.js所在目录。但是如果你已经通过layer.config配置了path,你在使用layer.ready时,是不需要path的
Ⅱ jquery layer插件 ,拓展模块layer.ext.js没正确加载 不能调用layer.prompt方法。到底要怎么正确加载啊
jquery layer插件,拓展模块layer.ext.js正确加载需要进行全局配置。
解决方法如下:
layer.config(options)- 初始化全局配置
这是一个可以重要也可以不重要的方法,重要的是,它的权利真的很大,尤其是在模块化加载layer时,你会发现你必须要用到它。它不仅可以配置一些诸如路径、加载的模块,甚至还可以决定整个弹层的默认参数。而说它不重要,是因为多数情况下,你会发现,你似乎不是那么十分需要它。但你真的需要认识一下这位伙计。
如果您是采用seajs或者requirejs加载layer,你需要执行该方法来完成初始化的配置。
如果你是采用<script src="?a.js&layer.js">这种合并的方式引入layer,那么您需要在script标签上加一个自定义属性merge="true"。
layer.ready(path, callback)- 初始化就绪
由于我们的layer内置了轻量级加载器,所以你根本不需要单独引入css等文件。但是加载总是需要过程的。当你在页面一打开就要执行弹层时,layer.ready()会是一个不错的帮手。它也可以做一些layer.config可以做的事,比如指向layer.js所在目录。但是如果你已经通过layer.config配置了path,你在使用layer.ready时,是不需要path的
Ⅲ seajs加载jquery时提示$is not a function该怎么解决
将js插件cmd模块化(define封装成seajs模块,返回匿名函数,包含插件的源码)。
/**
* Created with JetBrains PhpStorm.
* User: ph
* Date: 13-3-11
* Time: 上午9:24
* To change this template use File | Settings | File Templates.
*/
define(function(require,exports,moudles){
return function(jquery){
(function($) {
$.fn.pri= function() {
alert($("a").attr("href"))
// 代码区域。
};
})(jquery);
}
})
jquery库在总js文件(调用该插件的文件)中加载。通过require("t1/jquery_pligun")()来传递jquery变量(参数) ,保证了jquery在调用js插件模块之前加载
/**
* Created with JetBrains PhpStorm.
* User: ph
* Date: 13-3-11
* Time: 上午9:40
* To change this template use File | Settings | File Templates.
*/
define(function (require, exports, moudles) {
var $=require("jquery")
require("t1/jquery_pligun")($)
$(document).ready(function () {
$("a").pri()
})
})
补
充:SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制。与
jQuery等JavaScript框架不同,SeaJS不会扩展封装语言特性,而只是实现JavaScript的模块化及按模块加载。SeaJS的主要
目的是令JavaScript开发模块化并可以轻松愉悦进行加载,将前端工程师从繁重的JavaScript文件及对象依赖处理中解放出来,可以专注于代
码本身的逻辑。SeaJS可以与jQuery这类框架完美集成。使用SeaJS可以提高JavaScript代码的可读性和清晰度,解决目前
JavaScript编程中普遍存在的依赖关系混乱和代码纠缠等问题,方便代码的编写和维护。
Ⅳ seaJS怎么根据IE判断使用jquery版本
jQuery插件本质上是将命名空间挂在全局的jQuery或jQuery.fn上而非使用define定义的模块。
JQuery的这种扩展机制同模块化要求模块的独立性,以及模块互相隔离有点冲突。
jQuery插件数目众多,我们不打算做大量的转换工作,为模块化而模块化,甚至改变插件的调用方式,
这样对开发带来的价值不大。只希望通过模块加载器实现自动的依赖管理,按需加载,并且使用方式自然。
1.常见的jQuery插件的模块化方式
把jquery插件作为一个函数返回,带一个jquery参数,由调用者完成插件的初始化。
以jquery-themeswitch插件为例子,该插件依赖jquery.cookie插件。
/* jquery-themeswitch.js */
define(function(require) {
return function(jQuery) {
//先初始化依赖的模块
require('./jquery.cookie')(jQuery);
//put plugin code here
}//end of function
});
2.jquery模块化后调用方式
下面的demo对模块的引用采用相对路径,实际的业务开发中可以通过seajs提供的alias来重命名
(1)模块内部使用
var $ = require('./libs/jquery');
require('./libs/jquery-themeswitch')($);
require('./libs/jquery-ui')($); //demo涉及jquery ui组件
$(document).ready(function(){ //在DOM加载完成时运行代码
$('#elem').themeswitcher();
...
}
...
(2)在script代码片段中
seajs.use(['./libs/jquery','./libs/jquery-themeswitcher', './lib/jquery-ui'],
function ($, themeswitcher,jqueryui){
themeswitcher($); //init jquery plugin
jqueryui($);
$(function(){ //dom ready调用的另外一种方式
$('#elem').themeswitcher()
...
});
});
优缺点对比:
优点:
* 依赖管理自动化
* 支持多个版本的jQuery使用。(需要这个优点吗?)
缺点:
* 每次调用一次require('plugin')($),会重新初始化一次插件
* 调用方式也不是很方便,调用代码不是很直观
提示:可以在jQuery中添加一个cachedPlugins对象来保存加载过的插件模块id来防止重复加载
3.另外一种插件模块化方式
假定我们去掉jquery多版本的支持,让每个jquery插件模块返回$,看看代码调用方式是否会更自然一些。
另外每个模块只能被编译一次,利用该特性,我们还可以做到让每个插件只会被初始化一次。
说明:模块编译过程就是构建模块的exports的过程。
还以themeswitcher为例子:
jquery-theme-switcher.js
define(function (require, exports, mole) {
var jQuery = require('./jquery');
require('./jquery-cookie');
//put plugin in code here
return jQuery;
});
(1)模块内部使用
require('./libs/jquery-ui'); //可以不处理返回值
var $ = require('./libs/jquery-themeswitch') //返回的还是$
$(function(){
$('#elem').themeswitcher();
});
...
(2)在script代码片段中
seajs.use(['./libs/jquery-themeswitcher', './lib/jquery-ui'],function ($){
$(function(){
$('#elem').themeswitcher()
...
});
});
4.简化jquery插件的引用
如果你使用的插件比较多,还可以通过这样的方式来简化jquery插件的引用。
定义一个myjquery.js
define(function(require) {
require('some-plugin1'); //会自动加载相关的依赖插件
require('some-plugin2'); //如果记不清依赖关系,重复require也没有影响。
require('some-plugin3');
return require('some-plugin'); //每个插件模块都会返回$,取最后一个返回就可以了。
});
在其他的业务代码中,你只需要引入自己定制好的myjquery.js即可。
注意不要在该文件中引入过多的模块,避免影响性能,其他不常用的插件可以按需加载。
main.js
define(function(require) {
var $ = require('./myjquery'); //所有你定制加载的插件都已经初始化好了
//do something
Ⅳ Seajs的使用
seajs.config
alias
别名配置,配置之后可在模块中使用require调用 require('jquery');
paths
设置路径,方便跨目录调用。通过灵活的设置path可以在不影响base的情况下指定到某个目录。
vars
变量配置。有些场景下,模块路径在运行时才能确定,这时可以使用 vars变量来配置。
vars 配置的是模块标识中的变量值,在模块标识中用 {key}来表示变量。
map
该配置可对模块路径进行映射修改,可用于路径转换、在线调试等。
preload
使用preload配置项,可以在普通模块加载前,提前加载并初始化好指定模块。
注:preload中的空字符串会被忽略掉。
注:preload中的配置,需要等到 use 时才加载。比如:
注:preload 配置不能放在模块文件里面:
debug
值为true时,加载器不会删除动态插入的 script 标签。插件也可以根据debug配置,来决策 log 等信息的输出。
base
Sea.js 在解析顶级标识时,会相对 base 路径来解析。
charset
获取模块文件时,<script> 或 <link> 标签的charset属性。 默认是utf-8
charset还可以是一个函数:
seajs.use
用来在页面中加载一个或多个模块。seajs.use(id, callback?)
注意:seajs.use 与 DOM ready 事件没有任何关系。如果某些操作要确保在 DOM ready 后执行,需要使用 jquery 等类库来保证。比如
注意:use方法第一个参数一定要有,但是可以是null,也可以是一个变量
seajs.cache
通过 seajs.cache,可以查阅当前模块系统中的所有模块信息。
比如,打开 seajs.org,然后在 WebKit Developer Tools 的 Console 面板中输入 seajs.cache,可以看到:
seajs.reslove
类似require.resolve,会利用模块系统的内部机制对传入的字符串参数进行路径解析。
seajs.data
通过 seajs.data,可以查看 seajs 所有配置以及一些内部变量的值,可用于插件开发。当加载遇到问题时,也可用于调试。
Ⅵ seajs怎么调用jquery的插件
方法一,将js插件cmd模块化(define封装成seajs模块,返回匿名函数,包含插件的源码)。
/**
* Created with JetBrains PhpStorm.
* User: ph
* Date: 13-3-11
* Time: 上午9:24
* To change this template use File | Settings | File Templates.
*/
define(function(require,exports,moudles){
return function(jquery){
(function($) {
$.fn.pri= function() {
alert($("a").attr("href"))
// 代码区域。
};
})(jquery);
}
})
jquery库在总js文件(调用该插件的文件)中加载。通过require("t1/jquery_pligun")()来传递jquery变量(参数) ,保证了jquery在调用js插件模块之前加载
/**
* Created with JetBrains PhpStorm.
* User: ph
* Date: 13-3-11
* Time: 上午9:40
* To change this template use File | Settings | File Templates.
*/
define(function (require, exports, moudles) {
var $=require("jquery")
require("t1/jquery_pligun")($)
$(document).ready(function () {
$("a").pri()
})
})
补充:SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制。与jQuery等JavaScript框架不同,SeaJS不会扩展封装语言特性,而只是实现JavaScript的模块化及按模块加载。SeaJS的主要目的是令JavaScript开发模块化并可以轻松愉悦进行加载,将前端工程师从繁重的JavaScript文件及对象依赖处理中解放出来,可以专注于代码本身的逻辑。SeaJS可以与jQuery这类框架完美集成。使用SeaJS可以提高JavaScript代码的可读性和清晰度,解决目前JavaScript编程中普遍存在的依赖关系混乱和代码纠缠等问题,方便代码的编写和维护。
Ⅶ 使用seajs后,jquery的扩展怎么办
将js插件cmd模块化(define封装成seajs模块,返回匿名函数,包含插件的源码)。专