New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

API 快速参考 #266

Closed
lifesinger opened this Issue Jul 10, 2012 · 83 comments

Comments

Projects
None yet
@lifesinger
Member

lifesinger commented Jul 10, 2012

API 快速参考

该页面列举了 Sea.js 的常用 API。只要掌握这些用法,就可以娴熟地进行模块化开发。


seajs.config

用来对 Sea.js 进行配置。

seajs.config({

  // 设置路径,方便跨目录调用
  paths: {
    'arale': 'https://a.alipayobjects.com/arale',
    'jquery': 'https://a.alipayobjects.com/jquery'
  },

  // 设置别名,方便调用
  alias: {
    'class': 'arale/class/1.0.0/class',
    'jquery': 'jquery/jquery/1.10.1/jquery'
  }

});

更多配置项请参考:#262

seajs.use

用来在页面中加载一个或多个模块。

// 加载一个模块
seajs.use('./a');

// 加载一个模块,在加载完成时,执行回调
seajs.use('./a', function(a) {
  a.doSomething();
});

// 加载多个模块,在加载完成时,执行回调
seajs.use(['./a', './b'], function(a, b) {
  a.doSomething();
  b.doSomething();
});

更多用法请参考:#260

define

用来定义模块。Sea.js 推崇一个模块一个文件,遵循统一的写法:

define(function(require, exports, module) {

  // 模块代码

});

也可以手动指定模块 id 和依赖,详情请参考:#242
require, exportsmodule 三个参数可酌情省略,具体用法如下。

require

require 用来获取指定模块的接口。

define(function(require) {

  // 获取模块 a 的接口
  var a = require('./a');

  // 调用模块 a 的方法
  a.doSomething();
});

注意,require 只接受字符串直接量作为参数,详细约定请阅读:#259

require.async

用来在模块内部异步加载一个或多个模块。

define(function(require) {

  // 异步加载一个模块,在加载完成时,执行回调
  require.async('./b', function(b) {
    b.doSomething();
  });

  // 异步加载多个模块,在加载完成时,执行回调
  require.async(['./c', './d'], function(c, d) {
    c.doSomething();
    d.doSomething();
  });

});

详细说明请参考:#242

exports

用来在模块内部对外提供接口。

define(function(require, exports) {

  // 对外提供 foo 属性
  exports.foo = 'bar';

  // 对外提供 doSomething 方法
  exports.doSomething = function() {};

});

详细说明请参考:#242

module.exports

exports 类似,用来在模块内部对外提供接口。

define(function(require, exports, module) {

  // 对外提供接口
  module.exports = {
    name: 'a',
    doSomething: function() {};
  };

});

module.exportsexports 的区别,以及详细说明请参考:#242


以上 7 个接口是最常用的,要牢记于心。

这里提供一个不错的社区贡献的 API 文档:http://yslove.net/seajs/

@lifesinger

This comment has been minimized.

Show comment
Hide comment
@lifesinger

lifesinger Jul 10, 2012

Member

有任何问题,欢迎留言交流。
注意:已解决的问题,会在整理后删除掉。

Member

lifesinger commented Jul 10, 2012

有任何问题,欢迎留言交流。
注意:已解决的问题,会在整理后删除掉。

@lifesinger lifesinger closed this Jul 10, 2012

@LeToNode LeToNode referenced this issue Mar 20, 2013

Closed

shim 插件 #579

@lifesinger lifesinger referenced this issue Apr 1, 2013

Closed

发布 Sea.js 2.0.0 #451

45 of 45 tasks complete

@lifesinger lifesinger referenced this issue Jun 28, 2013

Closed

Sea.js 2.1 发布计划 #755

8 of 8 tasks complete
@deng19891006

This comment has been minimized.

Show comment
Hide comment
@deng19891006

deng19891006 Aug 1, 2013

在开发阶段时候,我们是一个js文件代表一个模块,然后在demo页面上通过seajs.use([],function(){}很容易的做出测试案例。
问题:开发阶段是通过use()参数配置模块,我用grunt部署后压缩合并成一个文件后怎么去找到每个模块ID呢(已经成功的通过transport抽出模块ID)?我在您的seajs官网上没看到类似的案例,这里麻烦您了...

deng19891006 commented Aug 1, 2013

在开发阶段时候,我们是一个js文件代表一个模块,然后在demo页面上通过seajs.use([],function(){}很容易的做出测试案例。
问题:开发阶段是通过use()参数配置模块,我用grunt部署后压缩合并成一个文件后怎么去找到每个模块ID呢(已经成功的通过transport抽出模块ID)?我在您的seajs官网上没看到类似的案例,这里麻烦您了...

@lifesinger

This comment has been minimized.

Show comment
Hide comment
@lifesinger

lifesinger Aug 5, 2013

Member

@deng19891006 直接用 transport 后的模块 id 加载模块就好,比如

seajs.use('path/to/a+b+c.js', function() {

  var a = seajs.require('a')
  var b = seajs.require('b')

  ...
})

或者通过命名空间来做

combo.js

define(function(require, exports) {
  exports.a = require('./a')
  exports.b = require('./b')
  exports.c = require('./c')
})
seajs.use('combo', function(combo) {

  var a = combo.a
  var b = combo.b
  var c = combo.c

  // ...
})
Member

lifesinger commented Aug 5, 2013

@deng19891006 直接用 transport 后的模块 id 加载模块就好,比如

seajs.use('path/to/a+b+c.js', function() {

  var a = seajs.require('a')
  var b = seajs.require('b')

  ...
})

或者通过命名空间来做

combo.js

define(function(require, exports) {
  exports.a = require('./a')
  exports.b = require('./b')
  exports.c = require('./c')
})
seajs.use('combo', function(combo) {

  var a = combo.a
  var b = combo.b
  var c = combo.c

  // ...
})
@panxuepeng

This comment has been minimized.

Show comment
Hide comment

panxuepeng commented Aug 13, 2013

@w3cpress

This comment has been minimized.

Show comment
Hide comment
@w3cpress

w3cpress Aug 26, 2013

<script src="xxx/sea.js" id="seajsnode" data-main="abc"></script>

这种使用方式在2.1版本里面去掉了么?怎么abc的模块找不到呢?

w3cpress commented Aug 26, 2013

<script src="xxx/sea.js" id="seajsnode" data-main="abc"></script>

这种使用方式在2.1版本里面去掉了么?怎么abc的模块找不到呢?

@w3cpress

This comment has been minimized.

Show comment
Hide comment
@w3cpress

w3cpress Aug 26, 2013

src="assets/scripts/seajs/sea.js" id="seajsnode" data-main="application/dist/abc"

w3cpress commented Aug 26, 2013

src="assets/scripts/seajs/sea.js" id="seajsnode" data-main="application/dist/abc"

@lizzie

This comment has been minimized.

Show comment
Hide comment
@lizzie

lizzie Aug 26, 2013

Member

@lovexiaobai seajs 2.1.0 已经去除 data-main 的支持. 请看相关 issue: #753#813

Member

lizzie commented Aug 26, 2013

@lovexiaobai seajs 2.1.0 已经去除 data-main 的支持. 请看相关 issue: #753#813

@onmouseover

This comment has been minimized.

Show comment
Hide comment
@onmouseover

onmouseover Sep 3, 2013

上面说到concat后.入口模块的调用.我发现如果我将主模块的id命名为concat后的文件名称的话是可以执行的。我用transport提取,并且用concat打包。最后需要到a+b+c.js中取修改我的主模块id为a+b+c。我觉得很痛苦。有没有其他方法?

onmouseover commented Sep 3, 2013

上面说到concat后.入口模块的调用.我发现如果我将主模块的id命名为concat后的文件名称的话是可以执行的。我用transport提取,并且用concat打包。最后需要到a+b+c.js中取修改我的主模块id为a+b+c。我觉得很痛苦。有没有其他方法?

@lifesinger

This comment has been minimized.

Show comment
Hide comment
@lifesinger

lifesinger Sep 3, 2013

Member

@onmouseover 也可以这样,比如 concat 后的文件名是 combo.js,里面有

define('a', ...)
define('b', ...)
define('c', ...)

然后通过下面的方式可调用到

seajs.use('path/to/combo', function(){

  // 这样来拿已经下载好的模块
  var a = seajs.require('a')

})
Member

lifesinger commented Sep 3, 2013

@onmouseover 也可以这样,比如 concat 后的文件名是 combo.js,里面有

define('a', ...)
define('b', ...)
define('c', ...)

然后通过下面的方式可调用到

seajs.use('path/to/combo', function(){

  // 这样来拿已经下载好的模块
  var a = seajs.require('a')

})
@onmouseover

This comment has been minimized.

Show comment
Hide comment
@onmouseover

onmouseover Sep 3, 2013

@lifesinger 但是这样的话,我拿到的模块是null,模块的状态是2.就是说还没有被seajs执行.对象也没有暴露出去。比较纠结。

onmouseover commented Sep 3, 2013

@lifesinger 但是这样的话,我拿到的模块是null,模块的状态是2.就是说还没有被seajs执行.对象也没有暴露出去。比较纠结。

@lifesinger

This comment has been minimized.

Show comment
Hide comment
@lifesinger

lifesinger Sep 3, 2013

Member

这样

seajs.use('path/to/combo', function(){

  // 执行已下载的模块
  seajs.use(['a', 'b', 'c'])

  // 拿模块接口
  var a = seajs.require('a')

})

最好的方式还是,保持 id 和 uri 的一致哦。

Member

lifesinger commented Sep 3, 2013

这样

seajs.use('path/to/combo', function(){

  // 执行已下载的模块
  seajs.use(['a', 'b', 'c'])

  // 拿模块接口
  var a = seajs.require('a')

})

最好的方式还是,保持 id 和 uri 的一致哦。

@onmouseover

This comment has been minimized.

Show comment
Hide comment
@onmouseover

onmouseover Sep 4, 2013

@lifesinger 其实这样还是不能用,我尝试了使用seajs2.1.在2.1中玉伯重新加入了define(id,factory);的写法,于是我在定义入口函数之初就将我的模块id定义为打包后的文件名称(即path/a+b+c)。这样可以解决问题,但是我使用的提取插件是"grunt-cmd-transport":"0.1.1"。不支持手写id的时候提取依赖.于是我修改了作者的插件代码.在有id的情况下继续依赖.可以解决我说的不执行的问题。不过也因此从seajs2.0升级为2.1.

onmouseover commented Sep 4, 2013

@lifesinger 其实这样还是不能用,我尝试了使用seajs2.1.在2.1中玉伯重新加入了define(id,factory);的写法,于是我在定义入口函数之初就将我的模块id定义为打包后的文件名称(即path/a+b+c)。这样可以解决问题,但是我使用的提取插件是"grunt-cmd-transport":"0.1.1"。不支持手写id的时候提取依赖.于是我修改了作者的插件代码.在有id的情况下继续依赖.可以解决我说的不执行的问题。不过也因此从seajs2.0升级为2.1.

@huanghm

This comment has been minimized.

Show comment
Hide comment
@huanghm

huanghm Sep 11, 2013

为什么我用了seajs之后它会发起一个/seajs/sea.js.map的文件请求?

huanghm commented Sep 11, 2013

为什么我用了seajs之后它会发起一个/seajs/sea.js.map的文件请求?

@lizzie

This comment has been minimized.

Show comment
Hide comment
@lizzie

lizzie Sep 11, 2013

Member

@huanghm

原因:

这是 Chrome 等浏览器对 sourceMap 调试的支持.

解决办法:

在 Chrome 开发者工具的配置里,关闭掉 sourceMap 支持。如下图

pastedgraphic-1

将 Sources 栏下 Enable source maps 前面的勾去掉。

这个错误不会影响线上环境下的普通用户。

Member

lizzie commented Sep 11, 2013

@huanghm

原因:

这是 Chrome 等浏览器对 sourceMap 调试的支持.

解决办法:

在 Chrome 开发者工具的配置里,关闭掉 sourceMap 支持。如下图

pastedgraphic-1

将 Sources 栏下 Enable source maps 前面的勾去掉。

这个错误不会影响线上环境下的普通用户。

@beijingme

This comment has been minimized.

Show comment
Hide comment
@beijingme

beijingme Sep 17, 2013

请问,seajs是否支持原版的第三方插件,比如jquery,如果我不模块化是否可以?目前我看到的都是模块化的;如果是jquery.ui 或者是 knockout.mapping这类插件,我该怎么做?

beijingme commented Sep 17, 2013

请问,seajs是否支持原版的第三方插件,比如jquery,如果我不模块化是否可以?目前我看到的都是模块化的;如果是jquery.ui 或者是 knockout.mapping这类插件,我该怎么做?

@lizzie

This comment has been minimized.

Show comment
Hide comment
@lizzie

lizzie Sep 18, 2013

Member

@beijingme 需要模块化的. 具体如何模块话, 请看 这里 的封装例子. PS: 如果就只是依赖 jquery 的话, 基本上按格式:

define(function(require, exports) {
    var $ = require("jquery");
    // 替换 全局 jquery 为 $
});

就可以了.

Member

lizzie commented Sep 18, 2013

@beijingme 需要模块化的. 具体如何模块话, 请看 这里 的封装例子. PS: 如果就只是依赖 jquery 的话, 基本上按格式:

define(function(require, exports) {
    var $ = require("jquery");
    // 替换 全局 jquery 为 $
});

就可以了.

@daiwei

This comment has been minimized.

Show comment
Hide comment
@daiwei

daiwei Oct 29, 2013

我自己开发的模块中使用了socketio,所以我在模块开始的部位进行了require操作
var io = require('http://localhost:8000/socket.io/socket.io.js');
不过在使用的时候却报错了
socket = io.connect(url);
Uncaught TypeError: Cannot call method 'connect' of null
请问require支持socket.io吗?
谢谢

daiwei commented Oct 29, 2013

我自己开发的模块中使用了socketio,所以我在模块开始的部位进行了require操作
var io = require('http://localhost:8000/socket.io/socket.io.js');
不过在使用的时候却报错了
socket = io.connect(url);
Uncaught TypeError: Cannot call method 'connect' of null
请问require支持socket.io吗?
谢谢

@afc163

This comment has been minimized.

Show comment
Hide comment
@afc163

afc163 Oct 29, 2013

Member

socket.io 文件长啥样?

Member

afc163 commented Oct 29, 2013

socket.io 文件长啥样?

@daiwei

This comment has been minimized.

Show comment
Hide comment
@daiwei

daiwei Oct 29, 2013

是直接npm install的,nodejs做server建在8000端口上

daiwei commented Oct 29, 2013

是直接npm install的,nodejs做server建在8000端口上

@afc163

This comment has been minimized.

Show comment
Hide comment
@afc163

afc163 Oct 29, 2013

Member

你的文件格式需要符合 CMD 规范才行。#242

Member

afc163 commented Oct 29, 2013

你的文件格式需要符合 CMD 规范才行。#242

@edokeh

This comment has been minimized.

Show comment
Hide comment
@edokeh

edokeh Oct 29, 2013

Contributor

socket.io 的 JS 文件是由他的 npm 包提供的,所以不能自己修改(除非你拷贝出来)
建议就不要 CMD 化了

Contributor

edokeh commented Oct 29, 2013

socket.io 的 JS 文件是由他的 npm 包提供的,所以不能自己修改(除非你拷贝出来)
建议就不要 CMD 化了

@daiwei

This comment has been minimized.

Show comment
Hide comment
@daiwei

daiwei Oct 29, 2013

@edokeh 我现在是拷贝一份出来的,有什么好的方法可以在我的模块中引入socketio呢?谢谢

daiwei commented Oct 29, 2013

@edokeh 我现在是拷贝一份出来的,有什么好的方法可以在我的模块中引入socketio呢?谢谢

@afc163

This comment has been minimized.

Show comment
Hide comment
@afc163

afc163 Oct 29, 2013

Member

script 标签。

Member

afc163 commented Oct 29, 2013

script 标签。

@edokeh

This comment has been minimized.

Show comment
Hide comment
@edokeh

edokeh Oct 29, 2013

Contributor

script 标签

👍

Contributor

edokeh commented Oct 29, 2013

script 标签

👍

@daiwei

This comment has been minimized.

Show comment
Hide comment
@daiwei

daiwei commented Oct 29, 2013

@afc163 @edokeh thx! :)

@afc163

This comment has been minimized.

Show comment
Hide comment
@afc163
Member

afc163 commented Nov 6, 2013

@ccwq

This comment has been minimized.

Show comment
Hide comment
@ccwq

ccwq Nov 9, 2013

“md”是说明问文件老兄

ccwq commented Nov 9, 2013

“md”是说明问文件老兄

@zero7u

This comment has been minimized.

Show comment
Hide comment
@zero7u

zero7u Nov 10, 2013

居高临下,藐视新手,文档无入口,轻飘浮躁:这是国内开源环境的缩影么?

zero7u commented Nov 10, 2013

居高临下,藐视新手,文档无入口,轻飘浮躁:这是国内开源环境的缩影么?

@jiangyuan

This comment has been minimized.

Show comment
Hide comment
@jiangyuan

jiangyuan Nov 10, 2013

@zero7u
凡事淡定。
吐槽只会让自己越来越糟糕。

jiangyuan commented Nov 10, 2013

@zero7u
凡事淡定。
吐槽只会让自己越来越糟糕。

@lifesinger

This comment has been minimized.

Show comment
Hide comment
@lifesinger

lifesinger Nov 12, 2013

Member

淡定,大家都会有不平静的时候,Sea.js 绝大部分代码和社区支持都是靠激情在支撑,有时很累,如有得罪大家,抱歉。

Member

lifesinger commented Nov 12, 2013

淡定,大家都会有不平静的时候,Sea.js 绝大部分代码和社区支持都是靠激情在支撑,有时很累,如有得罪大家,抱歉。

@afc163

This comment has been minimized.

Show comment
Hide comment
@afc163

afc163 Nov 12, 2013

Member

真想在所有 issue 下都贴上这篇文章:https://github.com/seajs/seajs/blob/master/CONTRIBUTING.md

Member

afc163 commented Nov 12, 2013

真想在所有 issue 下都贴上这篇文章:https://github.com/seajs/seajs/blob/master/CONTRIBUTING.md

@gyf19

This comment has been minimized.

Show comment
Hide comment
@gyf19

gyf19 Nov 12, 2013

@zero7u 淡定。 开源不容易,很累, 我们都是开源受益者。 我们应该多多支持他们。
@afc163 吐槽很多情况,因为我们渴望seajs项目可以做得更好。
最后还是谢谢所有开源者。 世界在进步, 我们还要努力

gyf19 commented Nov 12, 2013

@zero7u 淡定。 开源不容易,很累, 我们都是开源受益者。 我们应该多多支持他们。
@afc163 吐槽很多情况,因为我们渴望seajs项目可以做得更好。
最后还是谢谢所有开源者。 世界在进步, 我们还要努力

@foxling

This comment has been minimized.

Show comment
Hide comment
@foxling

foxling Dec 6, 2013

@kaizhuQin 同一个文件只会引用一次,故入口处的 setTimeout 只执行一次,是这个意思?又或者你把 setTimeout 和 setInterval 搞混了?

foxling commented Dec 6, 2013

@kaizhuQin 同一个文件只会引用一次,故入口处的 setTimeout 只执行一次,是这个意思?又或者你把 setTimeout 和 setInterval 搞混了?

@rebornvip

This comment has been minimized.

Show comment
Hide comment
@rebornvip

rebornvip Dec 14, 2013

我遇到一个奇怪的问题~~
sea.js,jquery配置完毕后,能够正常运~~~
但页面刷新的过程后,jquery不是每次都能够加载成功~~请指点~

rebornvip commented Dec 14, 2013

我遇到一个奇怪的问题~~
sea.js,jquery配置完毕后,能够正常运~~~
但页面刷新的过程后,jquery不是每次都能够加载成功~~请指点~

@kaizhuQin

This comment has been minimized.

Show comment
Hide comment
@kaizhuQin

kaizhuQin Dec 16, 2013

@foxling 我以前是利用setTimeout()来构造了一个循环的函数。后来,改写为模块后,就执行了一次。应该是我改写的问题。

kaizhuQin commented Dec 16, 2013

@foxling 我以前是利用setTimeout()来构造了一个循环的函数。后来,改写为模块后,就执行了一次。应该是我改写的问题。

@foxling

This comment has been minimized.

Show comment
Hide comment
@foxling

foxling Dec 16, 2013

这得贴代码了

在 2013年12月16日 下午4:56,kaizhu_Qin notifications@github.com写道:

@foxling https://github.com/foxling我以前是利用setTimeout()来构造了一个循环的函数。后来,改写为模块后,就执行了一次。应该是我改写的问题。


Reply to this email directly or view it on GitHubhttps://github.com/seajs/seajs/issues/266#issuecomment-30644636
.

祝好
凌晔 (i.foxling@gmail.com)

foxling commented Dec 16, 2013

这得贴代码了

在 2013年12月16日 下午4:56,kaizhu_Qin notifications@github.com写道:

@foxling https://github.com/foxling我以前是利用setTimeout()来构造了一个循环的函数。后来,改写为模块后,就执行了一次。应该是我改写的问题。


Reply to this email directly or view it on GitHubhttps://github.com/seajs/seajs/issues/266#issuecomment-30644636
.

祝好
凌晔 (i.foxling@gmail.com)

@kaizhuQin

This comment has been minimized.

Show comment
Hide comment
@kaizhuQin

kaizhuQin Dec 16, 2013

@foxling
//这是个普通的js,如何封装为模块,又能实现其循环执行
// 时间走动效果
function clock() {
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth();
var day = date.getDate();
var hour = date.getHours();
var minute = date.getMinutes();
var second = date.getSeconds();
var months = new Array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12");
var monthname = months[month];
if (minute < 10) {
minute = "0" + minute
}
if (second < 10) {
second = "0" + second
}
var week = ['日','一','二','三','四','五','六'];
sys_time.innerHTML= year +"年"+monthname+"月"+day+"日 "+hour+":" +minute+":"+ second+" 星期"+week[date.getDay()];
setTimeout("clock()", 1000)
}
clock();

kaizhuQin commented Dec 16, 2013

@foxling
//这是个普通的js,如何封装为模块,又能实现其循环执行
// 时间走动效果
function clock() {
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth();
var day = date.getDate();
var hour = date.getHours();
var minute = date.getMinutes();
var second = date.getSeconds();
var months = new Array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12");
var monthname = months[month];
if (minute < 10) {
minute = "0" + minute
}
if (second < 10) {
second = "0" + second
}
var week = ['日','一','二','三','四','五','六'];
sys_time.innerHTML= year +"年"+monthname+"月"+day+"日 "+hour+":" +minute+":"+ second+" 星期"+week[date.getDay()];
setTimeout("clock()", 1000)
}
clock();

@afc163

This comment has been minimized.

Show comment
Hide comment
@afc163

afc163 Dec 16, 2013

Member

setInterval ...

Member

afc163 commented Dec 16, 2013

setInterval ...

@foxling

This comment has been minimized.

Show comment
Hide comment
@foxling

foxling Dec 16, 2013

不用 setInterval 的话
setTimeout(clock, 1000)

2013/12/16 kaizhu_Qin notifications@github.com

@foxling https://github.com/foxling
//这是个普通的js,如何封装为模块,又能实现其循环执行
// 时间走动效果 start
function clock() {
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth();
var day = date.getDate();
var hour = date.getHours();
var minute = date.getMinutes();
var second = date.getSeconds();
var months = new Array("01", "02", "03", "04", "05", "06", "07", "08",
"09", "10", "11", "12");
var monthname = months[month];
if (minute < 10) {
minute = "0" + minute
}
if (second < 10) {
second = "0" + second
}
var week = ['日','一','二','三','四','五','六'];
sys_time.innerHTML= year +"年"+monthname+"月"+day+"日 "+hour+":" +minute+":"+
second+" 星期"+week[date.getDay()];
setTimeout("clock()", 1000)
}
clock();


Reply to this email directly or view it on GitHubhttps://github.com/seajs/seajs/issues/266#issuecomment-30646725
.

祝好
凌晔 (i.foxling@gmail.com)

foxling commented Dec 16, 2013

不用 setInterval 的话
setTimeout(clock, 1000)

2013/12/16 kaizhu_Qin notifications@github.com

@foxling https://github.com/foxling
//这是个普通的js,如何封装为模块,又能实现其循环执行
// 时间走动效果 start
function clock() {
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth();
var day = date.getDate();
var hour = date.getHours();
var minute = date.getMinutes();
var second = date.getSeconds();
var months = new Array("01", "02", "03", "04", "05", "06", "07", "08",
"09", "10", "11", "12");
var monthname = months[month];
if (minute < 10) {
minute = "0" + minute
}
if (second < 10) {
second = "0" + second
}
var week = ['日','一','二','三','四','五','六'];
sys_time.innerHTML= year +"年"+monthname+"月"+day+"日 "+hour+":" +minute+":"+
second+" 星期"+week[date.getDay()];
setTimeout("clock()", 1000)
}
clock();


Reply to this email directly or view it on GitHubhttps://github.com/seajs/seajs/issues/266#issuecomment-30646725
.

祝好
凌晔 (i.foxling@gmail.com)

@rebornvip

This comment has been minimized.

Show comment
Hide comment
@rebornvip

rebornvip Jan 15, 2014

我将raphael-min.js导入后报错,不知道是什么原因,屏蔽sea.js后就不会报错了,麻烦帮忙看看~~
image
image
image

rebornvip commented Jan 15, 2014

我将raphael-min.js导入后报错,不知道是什么原因,屏蔽sea.js后就不会报错了,麻烦帮忙看看~~
image
image
image

@afc163

This comment has been minimized.

Show comment
Hide comment
Member

afc163 commented Jan 15, 2014

@hooray

This comment has been minimized.

Show comment
Hide comment
@hooray

hooray Mar 22, 2014

exports是用来在模块内部对外提供接口,那有没有什么是用在在模块外部提供的接口?
比如我原先有个function a(){},在模块内部会使用,在模块外部也会使用,比如在页面里有个iframe,iframe里通过window.parent.a()调用,但改用seajs之后,在iframe里要如何调用到这个方法

hooray commented Mar 22, 2014

exports是用来在模块内部对外提供接口,那有没有什么是用在在模块外部提供的接口?
比如我原先有个function a(){},在模块内部会使用,在模块外部也会使用,比如在页面里有个iframe,iframe里通过window.parent.a()调用,但改用seajs之后,在iframe里要如何调用到这个方法

@lifesinger

This comment has been minimized.

Show comment
Hide comment
@lifesinger

lifesinger Mar 24, 2014

Member

@hooray 需要时,暴露全局变量就好,该怎么调还怎么调

Member

lifesinger commented Mar 24, 2014

@hooray 需要时,暴露全局变量就好,该怎么调还怎么调

@sbfkcel

This comment has been minimized.

Show comment
Hide comment
@sbfkcel

sbfkcel Mar 25, 2014

//require放在判断内无效?
if(false){
    require('./test');  //test会被引入
    seajs.use('./test');    //test不会被引入
}

sbfkcel commented Mar 25, 2014

//require放在判断内无效?
if(false){
    require('./test');  //test会被引入
    seajs.use('./test');    //test不会被引入
}
@army8735

This comment has been minimized.

Show comment
Hide comment
@army8735

army8735 Mar 25, 2014

Member

require是依赖,加载时会分析。虽然引入但没有被初始化。
use是入口,不分析依赖,false更不会进入加载逻辑。

Member

army8735 commented Mar 25, 2014

require是依赖,加载时会分析。虽然引入但没有被初始化。
use是入口,不分析依赖,false更不会进入加载逻辑。

@afc163

This comment has been minimized.

Show comment
Hide comment
@afc163
Member

afc163 commented Mar 26, 2014

@ekinwei

This comment has been minimized.

Show comment
Hide comment
@ekinwei

ekinwei Jul 22, 2014

seajs.use和seajs.require,use是用在页面里,require是用在模块定义里,还有什么别的区别吗。?

ekinwei commented Jul 22, 2014

seajs.use和seajs.require,use是用在页面里,require是用在模块定义里,还有什么别的区别吗。?

@lancejchen lancejchen referenced this issue Jul 27, 2014

Closed

模块系统 #240

@chinakids

This comment has been minimized.

Show comment
Hide comment
@chinakids

chinakids Aug 4, 2014

require引入css输出路径是.css.js?

chinakids commented Aug 4, 2014

require引入css输出路径是.css.js?

@wxlworkhard

This comment has been minimized.

Show comment
Hide comment
@wxlworkhard

wxlworkhard Aug 16, 2014

【代码段1】
define(function(require) {
// 获取模块 a 的接口
var a = require('./a');
// 调用模块 a 的方法
a.doSomething();
});
这里require是请求a.js文件(代码不继续执行,等a.js文件加载并且执行完了之后,才继续下一行代码的执行),所以a的doSomething()方法不会报错(如:没定义)!
既然是这样那么
【代码段2】
require.async('./b', function(b) {
b.doSomething();
});代码段1和代码段2的效果一样的,那require.async这个方法有什么意义?

wxlworkhard commented Aug 16, 2014

【代码段1】
define(function(require) {
// 获取模块 a 的接口
var a = require('./a');
// 调用模块 a 的方法
a.doSomething();
});
这里require是请求a.js文件(代码不继续执行,等a.js文件加载并且执行完了之后,才继续下一行代码的执行),所以a的doSomething()方法不会报错(如:没定义)!
既然是这样那么
【代码段2】
require.async('./b', function(b) {
b.doSomething();
});代码段1和代码段2的效果一样的,那require.async这个方法有什么意义?

@wxlworkhard

This comment has been minimized.

Show comment
Hide comment
@wxlworkhard

wxlworkhard Aug 16, 2014

1.require()是同步加载js文件,同步加载就是同步阻塞加载,加载执行完成之后才执行下一行代码。
2.
require('jquery');
require('bootstrap');
是“同时”去加载两个js文件,这俩文件是同时加载,谁先加载完谁先执行。
3.所以问:为什么说require()是同步加载?
同步是阻塞加载,这里根本没阻塞。
难道是说这里的“同步”和一般的引入js文件方式的“同步”不是一个意思?

wxlworkhard commented Aug 16, 2014

1.require()是同步加载js文件,同步加载就是同步阻塞加载,加载执行完成之后才执行下一行代码。
2.
require('jquery');
require('bootstrap');
是“同时”去加载两个js文件,这俩文件是同时加载,谁先加载完谁先执行。
3.所以问:为什么说require()是同步加载?
同步是阻塞加载,这里根本没阻塞。
难道是说这里的“同步”和一般的引入js文件方式的“同步”不是一个意思?

@afc163

This comment has been minimized.

Show comment
Hide comment
@afc163

afc163 Aug 16, 2014

Member

require 不是同步加载。

Member

afc163 commented Aug 16, 2014

require 不是同步加载。

@afc163

This comment has been minimized.

Show comment
Hide comment
@afc163

afc163 Aug 16, 2014

Member

require.async 是在运行时异步加载异步执行。

require 是提前异步加载,同步执行。

Member

afc163 commented Aug 16, 2014

require.async 是在运行时异步加载异步执行。

require 是提前异步加载,同步执行。

@wxlworkhard

This comment has been minimized.

Show comment
Hide comment
@wxlworkhard

wxlworkhard Aug 17, 2014

异步执行??是用了多个线程吗???
require.async('./b', function(b) {
b.doSomething();
});如果异步执行,那b的方法doSomething();在调用时很可能出现没定义的情况

wxlworkhard commented Aug 17, 2014

异步执行??是用了多个线程吗???
require.async('./b', function(b) {
b.doSomething();
});如果异步执行,那b的方法doSomething();在调用时很可能出现没定义的情况

@afc163

This comment has been minimized.

Show comment
Hide comment
@afc163

afc163 Aug 17, 2014

Member

不要想当然,建议研究下 seajs 和 requirejs 的源码。

Member

afc163 commented Aug 17, 2014

不要想当然,建议研究下 seajs 和 requirejs 的源码。

@MissZhou12345

This comment has been minimized.

Show comment
Hide comment
@MissZhou12345

MissZhou12345 Oct 10, 2014

@lifesinger

var follow1 = null;
seajs.use(['jquery','follow'],function($,follow1){
var config = {
'list_id':'#v-follow-users',
'type':'{$vals.type}'
};
follow1 = new follow1(config);
follow1.getFollow();

});

var follow2 = null;
seajs.use(['jquery','follow'],function($,follow2){
var config = {
'list_id':'#v-follow-shops',
'type':'{$vals.type}'
};
follow2 = new follow2(config);
follow2.getFollow();

});

Follow.prototype.getFollow = function(){
var _this = this;
var $data = {};
console.log(_this.config);//这个地方能把配置打印出来,不同的
$.ajax({
type:'POST',
url:U('Home/Public/followInfo'),
data:$data,
dataType:"html",
success: function(content, textStatus, errorThrown){
console.log(_this.config);//这个地方就是最后一次配置信息
$(_this.config.list_id).html(content);
},
error: function(xhr, ajaxOptions, thrownError){
vthink.ajaxError(xhr, ajaxOptions, thrownError,null);
}
});
};
是作用域的问题吗????
我像其他js对象一样在构造函数里面增加配置
但是在getFollow方法里面总是最后一次配置
我用了new的啊

MissZhou12345 commented Oct 10, 2014

@lifesinger

var follow1 = null;
seajs.use(['jquery','follow'],function($,follow1){
var config = {
'list_id':'#v-follow-users',
'type':'{$vals.type}'
};
follow1 = new follow1(config);
follow1.getFollow();

});

var follow2 = null;
seajs.use(['jquery','follow'],function($,follow2){
var config = {
'list_id':'#v-follow-shops',
'type':'{$vals.type}'
};
follow2 = new follow2(config);
follow2.getFollow();

});

Follow.prototype.getFollow = function(){
var _this = this;
var $data = {};
console.log(_this.config);//这个地方能把配置打印出来,不同的
$.ajax({
type:'POST',
url:U('Home/Public/followInfo'),
data:$data,
dataType:"html",
success: function(content, textStatus, errorThrown){
console.log(_this.config);//这个地方就是最后一次配置信息
$(_this.config.list_id).html(content);
},
error: function(xhr, ajaxOptions, thrownError){
vthink.ajaxError(xhr, ajaxOptions, thrownError,null);
}
});
};
是作用域的问题吗????
我像其他js对象一样在构造函数里面增加配置
但是在getFollow方法里面总是最后一次配置
我用了new的啊

@hongxiyu

This comment has been minimized.

Show comment
Hide comment
@hongxiyu

hongxiyu Nov 7, 2014

我觉得官方文档可以有 导航 之类的,方便速查。

hongxiyu commented Nov 7, 2014

我觉得官方文档可以有 导航 之类的,方便速查。

@jack-Lo

This comment has been minimized.

Show comment
Hide comment
@jack-Lo

jack-Lo Jan 29, 2015

还是希望能够提供一些其他的压缩合并代码方案,比如提供一些api,结合后台(java/php)实现线上动态压缩。在本地实现压缩再迁移到服务器上,比较适合那些改动少且由个人维护的网站,对于改动频繁或者多人协作的的网站,这一操作实在是无法忍受。毕竟不是所有项目都是跑在nodejs下的,如果能够提供一套java/php下的压缩方案,对seajs的推广应该是很有帮助的。

jack-Lo commented Jan 29, 2015

还是希望能够提供一些其他的压缩合并代码方案,比如提供一些api,结合后台(java/php)实现线上动态压缩。在本地实现压缩再迁移到服务器上,比较适合那些改动少且由个人维护的网站,对于改动频繁或者多人协作的的网站,这一操作实在是无法忍受。毕竟不是所有项目都是跑在nodejs下的,如果能够提供一套java/php下的压缩方案,对seajs的推广应该是很有帮助的。

@mozackye

This comment has been minimized.

Show comment
Hide comment
@mozackye

mozackye May 23, 2015

我按模块化jquery的方法模块化 zepto 会出现undefined is not a function的问题
define(function () {
//zepto源码
return $.noConflict();
}); 并且如果引入的第三方js插件都要手动模块化 是不是太繁琐 能写个通用方法解决不

mozackye commented May 23, 2015

我按模块化jquery的方法模块化 zepto 会出现undefined is not a function的问题
define(function () {
//zepto源码
return $.noConflict();
}); 并且如果引入的第三方js插件都要手动模块化 是不是太繁琐 能写个通用方法解决不

@zouchengzhuo

This comment has been minimized.

Show comment
Hide comment
@zouchengzhuo

zouchengzhuo Oct 20, 2015

有个建议,在文档里边能否注明一下各个配置生效的版本? 我们的项目以前用的是2.2.1,paths配置就无法使用。这个配置到2.3.0才可以用吧。 担心还遇到其他的这样的问题,给开发者看文档造成困扰...

zouchengzhuo commented Oct 20, 2015

有个建议,在文档里边能否注明一下各个配置生效的版本? 我们的项目以前用的是2.2.1,paths配置就无法使用。这个配置到2.3.0才可以用吧。 担心还遇到其他的这样的问题,给开发者看文档造成困扰...

@JohnsonHuang94

This comment has been minimized.

Show comment
Hide comment
@JohnsonHuang94

JohnsonHuang94 Apr 25, 2016

调用某个模块后不能立即得到其属性,可是为什么可以立即执行其函数

JohnsonHuang94 commented Apr 25, 2016

调用某个模块后不能立即得到其属性,可是为什么可以立即执行其函数

@ericyin168

This comment has been minimized.

Show comment
Hide comment
@ericyin168

ericyin168 May 11, 2016

看着官网的5分钟入门,我居然真的信了,但是接下来花费的不仅仅是一个5分钟,而是成百上千的5分钟!下载的案例看起来千奇百怪,我就不明白为什么不能用一个简单的功能来做案例,里面放的文件一层嵌套一层,以至于找不到自己想要的。而且并没有考虑不是所有人都能熟练的或者编写过NODE,往上搜索到的教程也是千奇百怪,好像拥有各种写法,然后让人无从下手,特别是官网的文档,根本就不清楚需要表达什么内容。并不是不尊敬大神,初学者本身就没接触过这个东西,案例还做得那么复杂,又没有比较清晰明了的说明,真的感觉无从下手

ericyin168 commented May 11, 2016

看着官网的5分钟入门,我居然真的信了,但是接下来花费的不仅仅是一个5分钟,而是成百上千的5分钟!下载的案例看起来千奇百怪,我就不明白为什么不能用一个简单的功能来做案例,里面放的文件一层嵌套一层,以至于找不到自己想要的。而且并没有考虑不是所有人都能熟练的或者编写过NODE,往上搜索到的教程也是千奇百怪,好像拥有各种写法,然后让人无从下手,特别是官网的文档,根本就不清楚需要表达什么内容。并不是不尊敬大神,初学者本身就没接触过这个东西,案例还做得那么复杂,又没有比较清晰明了的说明,真的感觉无从下手

@SorrowX

This comment has been minimized.

Show comment
Hide comment
@SorrowX

SorrowX Jul 20, 2016

大神,我另一个js页面使用了这段代码

SorrowX commented Jul 20, 2016

大神,我另一个js页面使用了这段代码

@SorrowX

This comment has been minimized.

Show comment
Hide comment
@SorrowX

SorrowX Jul 20, 2016

//载入手势
var Hamme = require('./hamm');
var hamObj = new Hamme();

SorrowX commented Jul 20, 2016

//载入手势
var Hamme = require('./hamm');
var hamObj = new Hamme();

@SorrowX

This comment has been minimized.

Show comment
Hide comment
@SorrowX

SorrowX Jul 20, 2016

页面就白屏了

SorrowX commented Jul 20, 2016

页面就白屏了

@SorrowX

This comment has been minimized.

Show comment
Hide comment
@SorrowX

SorrowX Jul 20, 2016

被调用的js页面是把一个类抛出去了
module.exports = Hamm;

SorrowX commented Jul 20, 2016

被调用的js页面是把一个类抛出去了
module.exports = Hamm;

@SorrowX

This comment has been minimized.

Show comment
Hide comment
@SorrowX

SorrowX Jul 20, 2016

然后另一个js页面载入
Uploading image.png…
就白屏了,除非不引人,就好了

SorrowX commented Jul 20, 2016

然后另一个js页面载入
Uploading image.png…
就白屏了,除非不引人,就好了

@gonmin

This comment has been minimized.

Show comment
Hide comment
@gonmin

gonmin Dec 22, 2016

var $ = require('jquery');
  var Spinning = require('./spinning');

引入模块时,什么有时候是直接require+名称就可以了,什么时候要加./ @lifesinger

gonmin commented Dec 22, 2016

var $ = require('jquery');
  var Spinning = require('./spinning');

引入模块时,什么有时候是直接require+名称就可以了,什么时候要加./ @lifesinger

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment