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

模块系统 #240

Closed
lifesinger opened this Issue Jul 2, 2012 · 28 comments

Comments

Projects
None yet
@lifesinger
Member

lifesinger commented Jul 2, 2012

什么是系统

在生活和工作中,我们会接触到大量系统:自然界生态系统、计算机操作系统、软件办公系统,还有教育系统、金融系统、网络系统、理论系统等等。究竟什么是系统呢?

来看下维基百科的解释:

系统泛指由一群有关连的个体组成,根据预先编排好的规则工作,能完成个别元件不能单独完成的工作的群体。系统分为自然系统与人为系统两大类。

简言之,系统有两个基本特性:

  1. 系统由个体组成。
  2. 个体之间有关连,按照规则协同完成任务。

系统中的个体可称之为系统成员,这样,要构建一个系统,最基本层面需要做两件事:

  1. 定义系统成员:确定成员是什么。
  2. 约定系统通讯:确定成员之间如何交互,遵循的规则是什么。

只要把这两个问题描述清楚,我们就可以构建出系统。

模块系统

Sea.js 是一个适用于 Web 浏览器端的模块加载器。在 Sea.js 里,一切皆是模块,所有模块协同构建成模块系统。Sea.js 首要要解决的是模块系统的基本问题:

  1. 模块是什么?
  2. 模块之间如何交互?

在前端开发领域,一个模块,可以是JS 模块,也可以是 CSS 模块,或是 Template 等模块。在 Sea.js 里,我们专注于 JS 模块(其他类型的模块可以转换为 JS 模块):

  1. 模块是一段 JavaScript 代码,具有统一的基本书写格式。
  2. 模块之间通过基本交互规则,能彼此引用,协同工作。

把上面两点中提及的基本书写格式和基本交互规则描述清楚,就能构建出一个模块系统。对书写格式和交互规则的详细描述,就是模块定义规范(Module Definition Specification)。比如 CommonJS 社区的 Modules 1.1.1 规范,以及 NodeJS 的 Modules 规范,还有 RequireJS 提出的 AMD 规范等等。

Sea.js 遵循的是 CMD 规范,会在接下来的文档中详细阐述。

延伸阅读

@lifesinger

This comment has been minimized.

Show comment
Hide comment
@lifesinger

lifesinger Jul 2, 2012

Member

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

Member

lifesinger commented Jul 2, 2012

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

@jiuyuehe

This comment has been minimized.

Show comment
Hide comment
@jiuyuehe

jiuyuehe Oct 24, 2013

50分钟都没有入门,泪奔啊

jiuyuehe commented Oct 24, 2013

50分钟都没有入门,泪奔啊

@lizzie

This comment has been minimized.

Show comment
Hide comment
Member

lizzie commented Oct 24, 2013

@zhiyi10

This comment has been minimized.

Show comment
Hide comment
@zhiyi10

zhiyi10 Oct 30, 2013

学习一下~

zhiyi10 commented Oct 30, 2013

学习一下~

@shingchi

This comment has been minimized.

Show comment
Hide comment
@shingchi

shingchi Nov 6, 2013

@rebornvip 你所使用依赖JQ的模块里,定义的依赖是不是['$']?如果是这样,很可能获取不到。

shingchi commented Nov 6, 2013

@rebornvip 你所使用依赖JQ的模块里,定义的依赖是不是['$']?如果是这样,很可能获取不到。

@dxq613

This comment has been minimized.

Show comment
Hide comment
@dxq613

dxq613 Nov 9, 2013

控制台里面输出:Found circular dependencies,但是我没有发现对应模块的循环引用,这是怎么回事儿,1.30的版本

dxq613 commented Nov 9, 2013

控制台里面输出:Found circular dependencies,但是我没有发现对应模块的循环引用,这是怎么回事儿,1.30的版本

@Cleam

This comment has been minimized.

Show comment
Hide comment
@Cleam

Cleam Mar 4, 2014

学习一下~~正在准备入门中~~~

Cleam commented Mar 4, 2014

学习一下~~正在准备入门中~~~

@yanyinxi

This comment has been minimized.

Show comment
Hide comment
@yanyinxi

yanyinxi commented Apr 13, 2014

学习中

@fully100

This comment has been minimized.

Show comment
Hide comment
@fully100

fully100 May 29, 2014

要想深入还是挺难的啊。。。

fully100 commented May 29, 2014

要想深入还是挺难的啊。。。

@Lucici

This comment has been minimized.

Show comment
Hide comment
@Lucici

Lucici Jun 19, 2014

必须掌握,最近写JS稍微复杂一些的功能居然要写400多行JS代码,而且是引用了JQuery库的情况下,我想我该静心深入的学习学习。

Lucici commented Jun 19, 2014

必须掌握,最近写JS稍微复杂一些的功能居然要写400多行JS代码,而且是引用了JQuery库的情况下,我想我该静心深入的学习学习。

@lancejchen

This comment has been minimized.

Show comment
Hide comment
@lancejchen

lancejchen Jul 27, 2014

@jiuyuehe 个人理解,使用级别就是知道seajs就是做cmd的调用器,能起到管理module(片段及函数调用不污染全局变量的作用,module看起来更系统)。使用的话主要会用 seajs.use(./filename), config, define(require, export, module)。
之后改下已有js文件们使他们符合define(require,export,module)标准,就完成了seajs化。
看下作者的api上手文章:#266

lancejchen commented Jul 27, 2014

@jiuyuehe 个人理解,使用级别就是知道seajs就是做cmd的调用器,能起到管理module(片段及函数调用不污染全局变量的作用,module看起来更系统)。使用的话主要会用 seajs.use(./filename), config, define(require, export, module)。
之后改下已有js文件们使他们符合define(require,export,module)标准,就完成了seajs化。
看下作者的api上手文章:#266

@ekinwei

This comment has been minimized.

Show comment
Hide comment
@ekinwei

ekinwei Aug 13, 2014

请问下,我加载一个dialog模块,会引用很多依赖模块,那请求是不是太多了?

ekinwei commented Aug 13, 2014

请问下,我加载一个dialog模块,会引用很多依赖模块,那请求是不是太多了?

@wtsoftware

This comment has been minimized.

Show comment
Hide comment
@wtsoftware

wtsoftware Nov 4, 2014

感觉水还是挺深的,快速入手好多关键点没提出来,简单点可能为了一步步吸引开发者吧!最好把一个例子完整的介绍一下吧,东西不错大家都会认真学习的!

wtsoftware commented Nov 4, 2014

感觉水还是挺深的,快速入手好多关键点没提出来,简单点可能为了一步步吸引开发者吧!最好把一个例子完整的介绍一下吧,东西不错大家都会认真学习的!

@1129778586

This comment has been minimized.

Show comment
Hide comment
@1129778586

1129778586 Mar 20, 2015

看了3天才入门。。

1129778586 commented Mar 20, 2015

看了3天才入门。。

@lizzie

This comment has been minimized.

Show comment
Hide comment
@lizzie

lizzie Mar 20, 2015

Member

@1129778586 好吧。如果跟你说这都快过时了,会打击你更多么?😭

Member

lizzie commented Mar 20, 2015

@1129778586 好吧。如果跟你说这都快过时了,会打击你更多么?😭

@beckgoal23

This comment has been minimized.

Show comment
Hide comment
@beckgoal23

beckgoal23 May 27, 2015

支持支持

beckgoal23 commented May 27, 2015

支持支持

@janryWang

This comment has been minimized.

Show comment
Hide comment
@janryWang

janryWang commented May 27, 2015

@beckgoal23 看看我的kvm吧,简单,强大https://github.com/janryWang/kvm

@selenium888

This comment has been minimized.

Show comment
Hide comment
@selenium888

selenium888 commented Nov 26, 2015

订单

@JamesSky

This comment has been minimized.

Show comment
Hide comment
@JamesSky

JamesSky Mar 7, 2016

开始使用中...

JamesSky commented Mar 7, 2016

开始使用中...

@wangguozheng

This comment has been minimized.

Show comment
Hide comment
@wangguozheng

wangguozheng Mar 14, 2016

还是没搞明白啊,如何搭建环境啊,没有更详细的入门讲解吗?

wangguozheng commented Mar 14, 2016

还是没搞明白啊,如何搭建环境啊,没有更详细的入门讲解吗?

@ianguyue

This comment has been minimized.

Show comment
Hide comment
@ianguyue

ianguyue Mar 24, 2016

没搞明白define(function(require,exports,module){
var a = require('./jquery')
})

seajs.config({
base: "../sea-modules/",
alias: {
"jquery": "jquery/jquery/1.10.1/jquery.js"
}
});
中 require('./jquery') 与 alias: { "jquery": "jquery/jquery/1.10.1/jquery.js"} 这两者有什么关系

ianguyue commented Mar 24, 2016

没搞明白define(function(require,exports,module){
var a = require('./jquery')
})

seajs.config({
base: "../sea-modules/",
alias: {
"jquery": "jquery/jquery/1.10.1/jquery.js"
}
});
中 require('./jquery') 与 alias: { "jquery": "jquery/jquery/1.10.1/jquery.js"} 这两者有什么关系

@chrisma2012

This comment has been minimized.

Show comment
Hide comment
@chrisma2012

chrisma2012 Jul 6, 2016

@ianguyue jquery是“jquery/jquery/1.10.1/jquery.js”这一大串的别名

chrisma2012 commented Jul 6, 2016

@ianguyue jquery是“jquery/jquery/1.10.1/jquery.js”这一大串的别名

@clywind

This comment has been minimized.

Show comment
Hide comment
@clywind

clywind Aug 26, 2016

50天都没入门,血奔。。。

clywind commented Aug 26, 2016

50天都没入门,血奔。。。

@jiajinning

This comment has been minimized.

Show comment
Hide comment
@jiajinning

jiajinning Feb 4, 2017

一天了都还没有入门,云里雾里哈!这都是给高手看的

jiajinning commented Feb 4, 2017

一天了都还没有入门,云里雾里哈!这都是给高手看的

@JackieDark

This comment has been minimized.

Show comment
Hide comment
@JackieDark

JackieDark Mar 10, 2017

这个确实挺好的,个人感觉比requireJs更适合模块化开发的新手。

JackieDark commented Mar 10, 2017

这个确实挺好的,个人感觉比requireJs更适合模块化开发的新手。

@liuch0228

This comment has been minimized.

Show comment
Hide comment
@liuch0228

liuch0228 Jun 23, 2018

看到有人评论3天才入门,我就放心了。。。五分钟入门,那是对高手来说的~

liuch0228 commented Jun 23, 2018

看到有人评论3天才入门,我就放心了。。。五分钟入门,那是对高手来说的~

@kimmieIS

This comment has been minimized.

Show comment
Hide comment
@kimmieIS

kimmieIS Jul 17, 2018

我就想问问这个现在还有人在用seajs嘛,公司新开的项目要用这个来开发,我……

kimmieIS commented Jul 17, 2018

我就想问问这个现在还有人在用seajs嘛,公司新开的项目要用这个来开发,我……

@chenxuyaun

This comment has been minimized.

Show comment
Hide comment
@chenxuyaun

chenxuyaun Jul 27, 2018

大神,我想请问一下,我bootstrap-table怎么使用

chenxuyaun commented Jul 27, 2018

大神,我想请问一下,我bootstrap-table怎么使用

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