seajs

js模块化的两种规范AMD和CMD

懵懂的女人 提交于 2020-01-21 03:24:35
AMD 规范在这里: https:// github.com/amdjs/amdjs- api/wiki/AMD CMD 规范在这里: https:// github.com/seajs/seajs/ issues/242 AMD 是 RequireJS 在推广过程中对模块定义的规范化产出。 CMD 是 SeaJS 在推广过程中对模块定义的规范化产出。 区别: 1. 对于依赖的模块,AMD 是提前执行,CMD 是延迟执行。不过 RequireJS 从 2.0 开始,也改成可以延迟执行(根据写法不同,处理方式不同)。CMD 推崇 as lazy as possible. 2. CMD 推崇依赖就近,AMD 推崇依赖前置,例如: // CMD 默认推荐的是 define(function(require, exports, module) { var a = require('./a') a.doSomething() // 此处略去 100 行 var b = require('./b') // 依赖可以就近书写 b.doSomething() ... }) // AMD 默认推荐的是 define(['./a', './b', 'require', 'exports'], function(a, b, require, exports) { // 依赖必须一开始就写好 a

AMD与CMD区别(玉伯) - 2015

我怕爱的太早我们不能终老 提交于 2020-01-17 02:05:09
原话 学习下 AMD 规范在这里: https:// github.com/amdjs/amdjs- api/wiki/AMD CMD 规范在这里: https:// github.com/seajs/seajs/ issues/242 AMD 是 RequireJS 在推广过程中对模块定义的规范化产出。 CMD 是 SeaJS 在推广过程中对模块定义的规范化产出。 类似的还有 CommonJS Modules/2.0 规范,是 BravoJS 在推广过程中对模块定义的规范化产出。 还有不少⋯⋯ 这些规范的目的都是为了 JavaScript 的模块化开发,特别是在浏览器端的。 目前这些规范的实现都能达成 浏览器端模块化开发的目的 。 区别: 1. 对于依赖的模块,AMD 是 提前执行 ,CMD 是 延迟执行 。不过 RequireJS 从 2.0 开始,也改成可以延迟执行(根据写法不同,处理方式不同)。CMD 推崇 as lazy as possible. 2. CMD 推崇 依赖就近 ,AMD 推崇 依赖前置 。看代码: // CMD define(function(require, exports, module) { var a = require('./a') a.doSomething() // 此处略去 100 行 var b = require('./b') //

通用前端开发框架(一)

◇◆丶佛笑我妖孽 提交于 2020-01-09 04:19:29
前言 最近在几个spa的项目中都使用前后端完全分离,后端只提供数据接口的方式。慢慢总结了一套前端的通用框架。这个框架没有语法限制,没有特别的规则,可接任何语言的后台。一切以快速开发为准则。 技术总览 技术上来说,使用seajs做模块调度。 核心模块有:jquery、jquery-ui、backbone(一个前端MVC框架)、less(一个是css能用变量等编程特性来编写的js库)。 已经包括的可用模块有:contextMenu(jquery右键菜单插件)、bootstrap(来自twitter的通用的css和js库)、uploadify(jquery文件上传插件)、qtip(jquery提示插件)。 后续可能加入:kindeditor(富文本插件)。 文件结构 根目录: core : 存放的是核心的库文件,如jquery。 module : 中存放的是可选的模块和用户自己创建的模块。 index.php : 是示例的页面模板,这个模板可以是任何文件,html或者jsp等都行。如果你的应用中有多个页面,都放在根目录下就行了。 init.js : 你的应用的初始化文件,可以在里面指定模块的别名。可以在里面启动默认的模块。一切初始化的工作都可以放在这里。 sea.js : seajs核心文件,勿动。 示例 :快速构建一个基础的应用 观看本示例时,你需要了解基本的seajs用法。 1

Vue.js + Seajs 实例(包含vue-router使用)

你。 提交于 2019-12-24 02:08:36
这个Demo 相关JS:   Sea.js : Version 2.3.0   seajs-text : Version 2.3.0   vue.js : Version 1.0.24   vue-router: Version 0.7.10   jquery: Version 1.0.24 特别是 seaj-text,一定需要引用,否则,require 相关HTML文件会报错。 结构图如下:   index.html 核心代码如下 <div id="app"> <menu> </menu> <router-view> </router-view> </div> <script type="text/javascript"> seajs.config({ base:"./static", charset:'utf-8', map:[], paths:{} }); $(function(){ seajs.use(["js/app.js"]); }); </script>  app.js 设定路由,默认启动的js. define(function(require,exports,module){ require("js/components/menu.js"); /* 路由器需要一个根组件*/ var App=Vue.extend({}); //创建一个路由器实例 var router

JS3 -- 模块(cmd amd)

浪尽此生 提交于 2019-12-23 21:23:34
Amd和Cmd的代表分别是require.js以及sea.js AMD (amd 提前读取并加载(前置读取并加载)) 是 RequireJS 在推广过程中对模块定义的规范化产出。https://github.com/amdjs/amdjs-api/wiki/AMD CMD (cmd 提前读取后加载) 是 SeaJS 在推广过程中对模块定义的规范化产出。https://github.com/seajs/seajs/issues/242 (NodeJS是CommonJS规范的实现,webpack 也是以CommonJS的形式来书写。) 1.cmd 提前读取后加载,而是在需要时加载 “懒加载”==as lazy as possible 2.一个模块就是一个文件(崇尚简单) 参考: js模块化编程之彻底弄懂CommonJS和AMD/CMD! 【面试系列】之一:关于Cmd和Amd AMD 和 CMD 的区别有哪些? SeaJS与RequireJS最大的区别 原生js window 好像没有define方法,这应该是SeaJS框架里的 你要用首先要导入SeaJS包 以妓会友,评赞走起 来源: https://www.cnblogs.com/lgyong/p/8586283.html

Seajs 简易文档

北战南征 提交于 2019-12-22 22:53:20
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> seajs.config Object alias Object 别名配置,配置之后可在模块中使用require调用 require('jquery'); seajs.config({ alias: { 'jquery': 'jquery/jquery/1.10.1/jquery' } }); define(function(require, exports, module) { //引用jQuery模块 var $ = require('jquery'); }); paths Object 设置路径,方便跨目录调用。通过灵活的设置path可以在不影响 base 的情况下指定到某个目录。 seajs.config({ //设置路径 paths: { 'gallery': 'https://a.alipayobjects.com/gallery' }, // 设置别名,方便调用 alias: { 'underscore': 'gallery/underscore' } }); define(function(require, exports, module) { var _ = require('underscore'); //=> 加载的是 https://a.alipayobjects.com/gallery

seajs如何整合jquery

纵然是瞬间 提交于 2019-12-22 22:13:11
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 转自:http://www.tuicool.com/articles/bmuaEb 今天早上初尝seajs,发现一个非常蛋疼的事情,使用官方demo中的jquery是没有问题, 下载官方最新版jquery 2.1.1发现console.log($)返回null,百思不得其解!只能求助度娘! 在GitHub发现了玉伯的说明 《 直接调用 jQuery 插件等非标准模块的方法 》 不过这方法在2.3版本貌似已经不行,seajs.modify方法已在这版本移除! https://github.com/seajs/seajs/issues/286 这里的标准模块指的是AMD和CMD的定义 引用玉伯在知乎的详细回答 http://www.zhihu.com/question/20351507/answer/14859415 以下引用玉伯的回复大家会更加深入了解 @lifesinger 昨天折腾得太累了,不好意思。后来还是用 RequireJs 解决问题。 另外,我想问问:1. AMD 是不是容易卡死UI? 2. 为什么采用与 SeaJs同样采用 CMD 规范编写的 NodeJs 模块 不能直接调用——我大概观察了下,好像定义格式不太一样,这也是问题啊,既然遵循同样的规范为什么格式又不一样,3.

seajs初尝 加载jquery返回null解决学习日志

你。 提交于 2019-12-22 22:12:55
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 今天早上初尝seajs,发现一个非常蛋疼的事情,使用官方demo中的jquery是没有问题, 下载官方最新版jquery 2.1.1发现console.log($)返回null,百思不得其解!只能求助度娘! 在GitHub发现了玉伯的说明 《 直接调用 jQuery 插件等非标准模块的方法 》 不过这方法在2.3版本貌似已经不行,seajs.modify方法已在这版本移除! https://github.com/seajs/seajs/issues/286 这里的标准模块指的是AMD和CMD的定义 引用玉伯在知乎的详细回答 http://www.zhihu.com/question/20351507/answer/14859415 以下引用玉伯的回复大家会更加深入了解 @lifesinger 昨天折腾得太累了,不好意思。后来还是用 RequireJs 解决问题。 另外,我想问问: 1. AMD 是不是容易卡死UI? 2. 为什么采用与 SeaJs同样采用 CMD 规范编写的 NodeJs 模块 不能直接调用——我大概观察了下,好像定义格式不太一样,这也是问题啊,既然遵循同样的规范为什么格式又不一样, 3. 用常规全局变量写法写的脚本经过 shim 配置,在 var ejs = require('ejs')

seajs学习日志 简单尝试模板+数据合并、模块异步加载、非标准CMD模式定义define模块

二次信任 提交于 2019-12-22 21:39:09
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 今天继续尝试seajs 2.3的版本,那做点什么demo好呢,就来一个简单是数据模板吧,然后通过其他一些细节深入学习 先看看目录结构,按照官方demo架设 index.html只是简单入口 文件和seajs的配置项,最下面有一个seajs.use加载crontroller模块,然后回调暴露的combine方法 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>halo sea.js</title> <script type="text/javascript" src="../sea-modules/sea.js"></script> </head> <body> <div id="hello"></div> </body> </html> <script type="text/javascript"> seajs.config({ base : "../sea-modules/", alias : { "jquery" : "jquery.js" } }); seajs.use("../static/crontroller", function(c){ console.log(c.combine()); }); </script>

学习 Sea.js 笔记(二)

只谈情不闲聊 提交于 2019-12-22 21:38:47
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 写模块: define(function(require, exports, module) { 使用 require(...) 引入模块. 通过 exports.something = ... 对外提供接口 或通过 module.exports = ... 提供整个接口 ? }); 构建部署: 需要使用 spm 或 Grunt 工具. spm 标准构建工具(已经发布版本3): http://spmjs.io/ 项目标准目录结构: dist 构建之后的文件夹 src 存放源码 package.json 模块信息. (类似于 grunt 使用的模块信息文件) 安装 spm: npm install spm@2.x -g npm install spm-build@0.x -g 执行 spm (执行后文件构建到 dist 目录中): spm build 辅助使用 make 工具 (对应要写 makefile) 如果(简单的) spm 构建不能满足需要, 则使用 Grunt: http://gruntjs.com/ 需处理 CMD 的模块: grunt-cmd-transport, grunt-cmd-concat (关于 Grunt 有社区文章) == API 快速参考 == seajs.config({ ...