展开

关键词

模块系统

系统在生活和工作中,我们会接触到大量系统:自然界生态系统、计算机操作系统、软件办公系统,还有教育系统、金融系统、网络系统、理论系统等等。究竟系统呢? 系统中的个体可称之为系统成员,这样,要构建一个系统,最基本层面需要做两件事:定义系统成员:确定成员。约定系统通讯:确定成员之间如何交互,遵循的规则。 模块系统Sea.js 一个适用于 Web 浏览器端的模块加载器。在 Sea.js 里,一切皆模块,所有模块协同构建成模块系统。Sea.js 首要要解决的模块系统的基本问题:模块? 在 Sea.js 里,我们专注于 JS 模块(其他类型的模块可以转换为 JS 模块):模块一段 JavaScript 代码,具有统一的基本书写格式。模块之间通过基本交互规则,能彼此引用,协同工作。 Sea.js 遵循的 CMD 规范,会在接下来的文档中详细阐述。延伸阅读 function bind 的救赎 继承与混合,略谈系统的构建方式

12920

前端模块化开发的价值

这一切工作得很好,同事也很感激我提供了这便利的工具包。直到团队越来越大,开始有人抱怨。 小高:我自定义了一个 log 方法,为小明写的代码就出问题了呢?谁来帮帮我。抱怨越来越多。团队经过一番激烈的讨论,决定参照 Java 的方式,引入命名空间来解决。 org.CoolSite.Dialog.init({ * 传入配置 * }); 可无论我怎写文档,以及多郑重地发邮件宣告,时不时总会有同事来询问为 dialog.js 有问题。 …… 以上很多问题都因为文件依赖没有很好的管理起来。在前端页面里,大部分脚本的依赖目前依旧通过人肉的方式保证。当团队比较小时,这不会有问题。 使用 Sea.js 来解决Sea.js 一个成熟的开源项目,核心目标给前端开发提供简单、极致的模块化开发体验。这里不多做介绍,有兴趣的可以访问 seajs.org 查看官方文档。

11420
  • 广告
    关闭

    50+款云产品免费体验

    提供包括云服务器,云数据库在内的50+款云计算产品。打造一站式的云产品试用服务,助力开发者和企业零门槛上云。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    学习mockjs

    mockjs 前后端分离(让前端攻城师独立于后端进行开发) 增加单元测试的真实性(通过随机数据,模拟各种场景) 开发无侵入(不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据) 用法简单 支持自定义函数和正则) 安装 npm install mockjs 使用 Mockvar Mock = require(mockjs)var data = Mock.mock({ 属性 list 的值一个数组 { list|1-10: }) 输出结果 document.body.innerHTML += + JSON.stringify(data, null, 4) + }) ==>{ list: }Sea.js (CMD)因为 Sea.js 社区尚未提供 webpack 插件,所以 Mock.js 暂不完整支持通过 Sea.js 加载。 一种变通的方式,依然通过 Sea.js 配置和加载 Mock.js,然后访问全局变量 Mock。

    19120

    关于 JS 模块化的最佳实践总结

    sea.js 作为 AMD 规范的升级版,简化了使用方法,在使用上更加方便,值得推崇。但 sea.js 便浏览器开发中最佳的模块化解决方案吗?未必,还要看类型的项目,后面会讲到。 只将 counter 声明为一个 getter 存取器属性,调用便正常了,为?这由于 CommonJS 的拷贝机制造成的。 (2)CommonJS 规范运行时动态加载、拷贝值对象使用。每一个引用出去的模块对象,都一个独立的对象。结论所以综上所述,在模块化方案上最佳选择? 遇到 CommonJS 代码,v8 可能会怒骂:“有话能不能一次讲完,你这样猫拉屎式的做法只能让我更慢!” 2019年1月21日于北京----参考资料浏览器已原生支持 ES 模块,这对前端开发来说意味着?Node 9下importexport的丝般顺滑使用Sea.js

    28510

    关于 CommonJS AMD CMD UMD 规范的差异总结

    ------------------ main.js var Foo = require(.foo);var foo = new Foo();foo.req(http:www.baidu.com);这个异步法 Sea.js 更贴近 CommonJS Modules1.1 和 Node Modules 规范。 推广理念有差异。 Sea.js 不强推,采用自主封装的方式来“海纳百川”,目前已有较成熟的封装策略。 对开发调试的支持有差异。Sea.js 非常关注代码的开发调试,有 nocache、debug 等用于调试的插件。 RequireJS 采取的在源码中预留接口的形式,插件类型比较单一。Sea.js 采取的通用事件机制,插件类型更丰富。       总之,如果说 RequireJS Prototype 类库的话,则 Sea.js 致力于成为 jQuery 类库。”

    62910

    可能最详细的UMD模块入门指南

    UMD所谓UMD (Universal Module Definition),就一种javascript通用模块定义规范,让你的模块能在javascript所有运行环境中发挥作用。 那如何才能同时满足这几种规范呢?首先要想到,模块最终要导出一个对象,函数,或者变量。而不同的模块规范,关于模块导出这部分的定义完全不一样的。因此,我们需要一种过渡机制。 function factory() { return { name: 我一个umd模块 }} 全局对象挂载属性假设不考虑CommonJS, AMD, CMD,仅仅将这个模块作为全局对象的一个属性应该怎写呢 UMD依赖写法同理,各种规范要求你怎写模块依赖,你就怎写就行。 umd模块 }})) 给个sea.js调用的示例链接。

    24520

    17.12.4日报

    下面堆栈。 原因KURL输出的utf8,而Location::hash返回给js,js再设置到input里,blink会把这段字符串当成ascii的。 v=20170215:61) t.exec (sea.js:2) t.use.e.callback (sea.js:2) t.onload (sea.js:2) t.load (sea.js:2) d (sea.js:2) onload (seajs-css.js:110) ==== line:6272, , line:6257, , line:6109, , line:93, , line

    20520

    js的动态加载、缓存、更新以及复用(二)恼人的命名冲突

    有的推荐第三方框架,比如 In.js、requrieJS、sea.js、lab.js等。这个开阔了眼界,以前只知道sea.js,省去了自己搜索的麻烦。 因为我觉得虽然不知道原理也可以使用,但知道了原理后,可以用的更好。  主要看的sea.js,目前简单的理解:一个加载js的机制 + 模块化编程(CMD规范)的理念。 这个淘宝用的,肯定很强大、很结实了。那拿来用呢?这就要看看我到底想要,以及改动量大小。  那我想要啥呢?第一步只想要一个可以动态加载js的代码,越简单越好。为啥呢? 我用的第二个方法,你们呢?  突然想到一个问题,我们写js到底要达到目的(效果)?基础功能(jQuery、my97、editor等)、UI(easyUI等)、处理业务逻辑(做点判断了啥的)。 小高:我自定义了一个 log 方法,为小明写的代码就出问题了呢?谁来帮帮我。抱怨越来越多。团队经过一番激烈的讨论,决定参照 Java 的方式,引入命名空间来解决。

    51180

    seajs简记

    参考seajs快速入门 一、前端模块化的价值解决命名冲突摆脱文件依赖性能优化提高可维护性seajs.use方法调用通过exports暴露接口通过require引入依赖二、Sea.js 的常用 API seajs.config base string    Sea.js 在解析顶级标识时,会相对 base 路径来解析  seajs.use 用来在页面中加载模块 require 一个方法,接受 模块标识 作为唯一参数,用来获取其他模块提供的接口 require 的参数值 必须 字符串直接量 require.async require.async 方法用来在模块内部异步加载模块,并在加载完成后执行指定回调。 require.async(, function(c, d) {10 c.doSomething();11 d.doSomething();12 });13 14 }); exports exports 一个对象 顶级标识:顶级标识不以点(.)或斜线()开始, 会相对模块系统的基础路径(即 Sea.js 的 base 路径)来解析四、 使用步骤引入sea.js文件(方法与引用jQuery相同)配置信息在中,方式与写

    24620

    SeaJS 模块化加载框架使用

    SeaJS 一个遵循 CMD 规范的模块化加载框架CommonJS,CMD,AMD等规范后文会提到,这里主要先了解如何在代码中使用。如果你有使用过nodejs ,那理解起来就容易多了。 我们通过sea.js来加载我们定义的模块(这会儿遵循CMD规范)并使用相应的数据。 首先,当然要下载sea.js,可以直接去 http:seajs.orgdocs#downloads 直接下载代码包,解压后 在 dist目录下可以 找到 sea.jsCMD规范懒加载,按需加载,也就在 index.html主界面,main.js这里充当了主模块文件(一般需要 seajs.use(.main) 的方式来加载主模块),然后主模块main又调用main1,main2小模块,理解执行过程。 index.html:首先包含资源sea.js ,再包含主模块,这里因为要执行主模块中返回的数据,所以使用了回调函数的处理 Seajs 加载入口文件main.js,默认后缀js自动匹配 seajs.use

    38510

    js的动态加载、缓存、更新以及复用(三)

    (正在考虑要不要使用sea.js)5、  Js服务加载的js文件,不需要做任何修改。当然也不负责各个文件里的函数名称否冲突。  Sea.js追求自然编程,代码要写的自然。 很巧合我也推崇自然编程,我写的框架就叫做“自然框架”。只在加载js这块和sea.js的思路有点不同。   我用的命名空间的方式,C#写的比较多了,感觉命名空间挺好用的,就移植过来了。看了sea.js的介绍,里面也提到了命名空间的方式,yahoo用过。 Sea.js并不推荐,因为使用的时候要记住长长的命名空间。但我觉得这个不算事呀。不就长点吗,安装Resharper(R#)之后,点.也可以出提示的。 13、  为没有做延迟加载?    我把共用的js文件都加载到了top页面里,子页想用的话,直接用好了,完全没有再次加载的过程。虽然一开始需要加载更多的js,但一般可以忍受。

    87990

    JS模块化和使用

    JS模块化和使用 很久以前就知道js模块化开发可以使用require.js和sea.js,就一直没去看看。 sea.js,简单明了,上手容易多(主要别人写的博客文档好)。 模块化 模块化指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问题进行系统性的分解以之处理。模块化一种处理复杂系统分解为代码结构更合理,可维护性更高的可管理的模块的方式。 RequireJS 和 Sea.js模块加载器,倡导模块化开发理念,核心价值让 JavaScript 的模块化开发变得简单自然。 示例二2_math.js 注意define中引入其他模块地址,并不以当前文件作为参照,而2_require.html。

    18220

    带你快速熟悉 seajs 模块化开发

    模块化 seajs API 参考首先说明一下,这个已经老框架了,不建议使用,只当做了解一下过去的知识,或者学习一下源代码,知道过去的模块化开发样的,模块化开发的好处,API 快速参考该页面列举了 Sea.js 的常用 API。 seajs 的目的就将 js,css,html 文件变成一个模块,一个 .js,.css,.html 就一个模块。 有点像 es6 中的 import 关键字,就用来导入文件的 但 seajs.use 用来加载模块的。 Sea.js 推崇一个模块一个文件,遵循统一的写法: 比如创建 a.jsdefine(function(require, exports, module) { 模块代码 }); require这个有点像

    3310

    CommonJS,AMD,CMD和ES6的对比

    Sea.js 则专注于 Web 浏览器端,同时通过 Node 扩展的方式可以很方便跑在 Node 环境中。 遵循的规范不同。 Sea.js 不强推,采用自主封装的方式来“海纳百川”,目前已有较成熟的封装策略。 对开发调试的支持有差异。 Sea.js 非常关注代码的开发调试,有 nocache、debug 等用于调试的插件。 RequireJS 采取的在源码中预留接口的形式,插件类型比较单一。 Sea.js 采取的通用事件机制,插件类型更丰富。 执行机制不同。 对于依赖的模块,AMD 提前执行,CMD 延迟执行。 假如有一个B.js,想要通过import语法引用模块A.js,那可以这写: B.jsimport A from .A而上面的代码生效的前提,只有在如下A.js中有默认导出的export default const A = 42而且,在明确声明了命名导出后,那在另一个js中使用{}引用模块时,import时的模块命名有意义的,如下: B.jsimport { A } from .A 正确,因为A.js

    47310

    前端入门22-讲讲模块化

    ,也就执行模块内的代码,由于函数本身有三个参数,其中有两个分别:module 和 exports,这也内部为可以直接通过 module.exports 或 exports 来操作的原因。 require每个 JS 文件其实都被当做一个模块处理,也就文件内的代码都会被放入到一个函数内,那这个函数时候执行呢?也就说,模块时候应该被加载呢? ,所以文件内的代码也都放入一个函数内,还记得函数的第一个参数就 require ,这也就模块内可以直接使用 require() 的原因,require 其实本质上一个函数,具体的实现 Node.js 小结最后小结一下,AMD 规范的具体实现 Require.js 其实从使用上来看,已经比较容易明白它的原理了。 那会有这些规范技术的出现呢?无非就为了引入一个管理者的角色,没有管理者的角色,模块之间的依赖关系,哪个文件先加载,哪个后加载, 的书写顺序都只能依靠人工来维护、管理。

    10210

    Sea.js 进行配置 seajs.config

    配置可以对 Sea.js 进行配置,让模块编写、开发调试更方便。----seajs.config seajs.config(options)用来进行配置的方法。 a.alipayobjects.comgallery }, 变量配置 vars: { locale: zh-cn }, 映射配置 map: ], 预加载项 preload: , 调试模式 debug: true, Sea.js 详情请参阅 模块标识注意:一般请不要配置 base 路径,把 sea.js 放在合适的路径往往更简单一致。 默认 utf-8charset 还可以一个函数:seajs.config({ charset: function(url) { xxx 目录下的文件用 gbk 编码加载 if (url.indexOf 插件的配置插件可以给 Sea.js 添加配置项,请查看具体插件了解相关配置。配置文件配置可以直接写在 html 页面上,也可以独立出来成为一个文件。

    22620

    模块化开发那点历史

    前端模块化开发那点历史不谈:传统的模块化开发方式,比如文件拆分、全局变量、命名空间,以及 YUI3 式的模块化开发方式谈:关于 CommonJS、AMD、Node.js、CMD 等相关的故事与未来趋势 再后来,FlyScript 作者做了自我阉割,将 GitHub 上的项目和官网都清空了,官网上当时留了一句话,模糊中记得我会回来的,带着更好的东西。这中间究竟发生了,不得而知。 期间也在寻思着 FlyScript 离开时的那句话:“我会回来的,带着更好的东西”我没 FlyScript 的作者那伟大,在不断给 RequireJS 提建议,但不断不被采纳后,开始萌生了自己写一个 这就 Sea.jsSea.js 借鉴了 RequireJS 的不少东西,比如将 FlyScript 中的 module.declare 改名为 define 等。 Sea.js 更多地来自 Modules2.0 的观点,但尽可能去掉了学院派的东西,加入了不少实战派的理念。最后写着写着,有点沧桑感,不想写了。历史不过去,历史正在上演。

    10110

    前端科普系列(3):CommonJS 不前端却革命了前端

    那 CommonJS 又呢?先来看下,它在维基百科上的定义:CommonJS 一个项目,其目标为 JavaScript 在网页浏览器之外创建模块约定。 二、为需要模块化1、没有模块化时,前端样子在之前的《Web:一路前行一路忘川》中,我们提到过 JavaScript 诞生之初只作为一个脚本语言来使用,做一些简单的表单校验等等。 三、CommonJS 规范简介既然 JavaScript 需要模块化来解决上面的问题,那就需要制定模块化的规范,CommonJS 就解决上面问题的模块化规范,规范就规范,没有为,就和编程语言的语法一样 Sea.js 官网这介绍 Sea.js:Sea.js 追求简单、自然的代码书写和组织方式,具有以下核心特性:简单友好的模块定义规范:Sea.js 遵循 CMD 规范,可以像 Node.js 一般书写模块代码 也就说,一旦导出一个值,模块内部的变化就影响不到这个值。一起来看看,ES Module样的。

    11410

    前端科普系列(3):CommonJS 不前端却革命了前端

    那 CommonJS 又呢?先来看下,它在维基百科上的定义:CommonJS 一个项目,其目标为 JavaScript 在网页浏览器之外创建模块约定。 二、为需要模块化1、没有模块化时,前端样子在之前的《Web:一路前行一路忘川》中,我们提到过 JavaScript 诞生之初只作为一个脚本语言来使用,做一些简单的表单校验等等。 三、CommonJS 规范简介既然 JavaScript 需要模块化来解决上面的问题,那就需要制定模块化的规范,CommonJS 就解决上面问题的模块化规范,规范就规范,没有为,就和编程语言的语法一样 Sea.js 官网这介绍 Sea.js:Sea.js 追求简单、自然的代码书写和组织方式,具有以下核心特性:简单友好的模块定义规范:Sea.js 遵循 CMD 规范,可以像 Node.js 一般书写模块代码 也就说,一旦导出一个值,模块内部的变化就影响不到这个值。一起来看看,ES Module样的。

    27140

    RPC? RPC?

    写在前面: 技术,不要那复杂 RPC以下摘自百度百科 远程过程调用协议 RPC(Remote Procedure Call)—远程过程调用,它一种通过网络从远程计算机程序上请求服务,而不需要了解底 现在使用最普遍的模式和执行开放式软件基础的分布式计算环境(DCE)。 术语可能有复杂,那我们要怎去理解RPC呢? 我眼中的RPC服务提供者提供 —- 消费者消费 服务提供者在青岛捞海鲜,消费者坐在新疆的餐馆里点了一盘麻辣小龙虾 这中间的过程就RPC存在即合理,复杂的东西之所以能持续存在并发展不无缘无故的,更不因为高手们故弄玄虚 举个栗子将复杂的事情弄得粗浅易懂,说着简单,做着复杂.可以看看复杂度守恒定律远程调用简单说就发送一个请求给远程机器,远程机器返回一个结果回来的过程,为要这做,单台服务器的性能远远不能满足现在互联网这个体量的用户的需求 但假如不这做,点餐员直接做这些事情(又得点餐,又得炸薯条,炸鸡腿等等),两相比较,你就知道远程调用有好处了 简单来说就无法在一个进程内,甚至一个计算机内通过本地调用的方式完成的需求,比如比如不同的系统间的通讯

    44230

    相关产品

    • 云服务器

      云服务器

      腾讯云服务器(CVM)为您提供安全可靠的弹性云计算服务。只需几分钟,您就可以在云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭

      扫码关注云+社区

      领取腾讯云代金券