sea.js的模块化开发
为什么使用sea.js?
Sea.js 追求简单、自然的代码书写和组织方式,具有以下核心特性:
- 简单友好的模块定义规范:Sea.js 遵循 CMD 规范,可以像Node.js 一般书写模块代码。
- 自然直观的代码组织方式:依赖的自动加载、配置的简洁清晰,可以让我们更多地享受编码的乐趣。
Sea.js 还提供常用插件,非常有助于开发调试和性能优化,并具有丰富的可扩展接口。
兼容性
Sea.js 具备完善的测试用例,兼容所有主流浏览器:
- Chrome 3+ ✔
- Firefox 2+ ✔
- Safari 3.2+ ✔
- Opera 10+ ✔
- IE 5.5+ ✔
Sea.js 可运行在 Mobile 端,包括 Hybrid 模式的 App 上。理论上,Sea.js 可以运行在任何浏览器引擎上。
下面我用一个简单示例来开启sea.js的模块化开发之旅:
目录结构:
hello.html文档代码:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>测试sea.js的API</title>
- <style>
- #container{
- width:200px;
- height: 200px;
- margin: 0 auto;
- border: 1px solid #669991;
- }
- .init{
- background-color: #ff6600;
- }
- </style>
- </head>
- <body>
- <div id="container"></div>
- <script src="../sea-modules/seajs/2.2.0/sea.js"></script>
- <script>
- // seajs 的简单配置
- seajs.config({
- // Sea.js 的基础路径
- base:"../sea-modules/",
- // 设置别名,方便调用
- alias:{
- "jquery":"jquery/jquery/1.10.1/jquery.js"
- }
- });
- //for 开发阶段
- if(location.href.indexOf("?dev")>0){
- //加载一个main.js模块
- seajs.use("../static/hello/src/main");
- }
- //for上线阶段
- else{
- //加载一个main.js模块
- seajs.use("examples/hello/1.0.0/main");
- }
- </script>
- </body>
- </html>
main.js的代码:
- //定义一个模块
- define(function(require){
- //获取start.js的接口
- var Start=require('./start');
- //生成Start的实例
- var s=new Start('#container');
- //调用Start的方法
- s.render();
- });
start.js的代码:
- define(function(require,exports,module){
- //获取jQuery的接口
- var $=require('jquery');
- //定义名为Start的构造函数对象
- function Start(container){
- this.container=$(container);
- }
- //对外提供接口
- module.exports=Start;
- //定义Start对象的原型方法
- Start.prototype.render=function(){
- this._init();
- this.container.css('border','5px solid #f00');
- };
- Start.prototype._init=function(){
- this.container.addClass('init');
- return this;
- }
- });
示例效果如下:
sea.js的模块化开发的更多相关文章
- 模块化开发(三)---通过node.js学习模块化开发
由于改文章有点大,部分代码格式有点问题,编辑之后博客园莫名其妙推出,有问题可以留言沟通. 什么是Node? 它是一个在浏览器之外可以解析和执行javascript代码的运行环 境,或者说是一个运行 ...
- JS利用 Sea.js 实现模块化:拖拽、缩放及范围限制
知识点总结: Sea.js的使用:define.export.seajs.use.require等方法: 参考:http://seajs.org/docs/ Sea.js与require.js的区 ...
- 关于require.js的模块化开发
先是自己打了一些demo,然后回过头来看阮大神的博客,感觉很多莫名其妙的问题,瞬间解决了:很舒服,放上链接,希望对其他人也有帮助: 先是在html的末尾引入了require.js . da ...
- 【require.js】模块化开发
一.Require.js及AMD Require.js:是一个非常小巧的JavaScript模块载入框架,是AMD规范最好的实现者之一. AMD(Asynchronous Module Definit ...
- Sea.js学习1——初识Sea.js
Sea.js 是一个成熟的开源项目,核心目标是给前端开发提供简单.极致的模块化开发体验. 使用 Sea.js,在书写文件时,需要遵守 CMD (Common Module Definition)模块定 ...
- 前端模块化开发的价值(seaJs)
随着互联网的飞速发展,前端开发越来越复杂.本文将从实际项目中遇到的问题出发,讲述模块化能解决哪些问题,以及如何使用 Sea.js 进行前端的模块化开发. 恼人的命名冲突 我们从一个简单的习惯出发.我做 ...
- 模块化开发--sea.js
当你的网站开发越来越复杂的时候,会经常遇到一下问题吗?1.冲突2.性能3.依赖如果在多人开发或者是复杂的开发过程中会经常遇到这些问 题,就可以用模块化开发来解决.以上问题是如何产生的?1.冲突:如果你 ...
- Sea.js提供简单、极致的模块化开发体验
为什么使用 Sea.js ? Sea.js 追求简单.自然的代码书写和组织方式,具有以下核心特性: 简单友好的模块定义规范:Sea.js 遵循 CMD 规范,可以像 Node.js 一般书写模块代码. ...
- JS模块化开发:使用SeaJs高效构建页面
一.扯淡部分 很久很久以前,也就是刚开始接触前端的那会儿,脑袋里压根没有什么架构.重构.性能这些概念,天真地以为前端===好看的页面,甚至把js都划分到除了用来写一些美美的特效别无它用的阴暗角落里,就 ...
随机推荐
- 利用ChromeOptions()加载用户配置
一. 如何绕过页面登录 我们在登录网站的时候,通常需要输入用户名.密码和验证码,那么有没有办法绕过登录环节呢? 有两种方法可以解决这个问题,一种是利用chrome浏览器的用户配置,一种是利用cooki ...
- Mac的搜狗输入法和QQ输入法加入⌘⌥⌃⇧自定义短语
搜狗输入法(Mac):http://pinyin.sogou.com/mac/ 创建名为『搜狗输入法自定义短语.ini』的文本文件(建议用Sublime Text),内容如下,然后偏好设置的自定义短语 ...
- 计算客网络赛 Coin 二项式定理+逆元
https://nanti.jisuanke.com/t/17115 Bob has a not even coin, every time he tosses the coin, the proba ...
- 炫酷自定义翻转View--第三方开源--TagCloudView
下载地址:https://github.com/ChinaZeng/3dTagCloudAndroid 贴上Demo代码: <com.moxun.tagcloudlib.view.TagClou ...
- mysql 数据备份及pymysql模块
一 IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具 下载链接:https://pan.baidu.com/s/1bpo5mqj 掌握: #1. 测试+链接 ...
- BZOJ5302: [Haoi2018]奇怪的背包
BZOJ5302: [Haoi2018]奇怪的背包 https://lydsy.com/JudgeOnline/problem.php?id=5302 分析: 方程\(\sum\limits_{i=1 ...
- BZOJ5206: [Jsoi2017]原力
BZOJ5206: [Jsoi2017]原力 https://lydsy.com/JudgeOnline/problem.php?id=5206 分析: 比较厉害的三元环问题. 设立阈值,当点的度数大 ...
- bzoj 3709: [PA2014]Bohater 贪心
题目: 在一款电脑游戏中,你需要打败\(n\)只怪物(从\(1\)到\(n\)编号).为了打败第\(i\)只怪物,你需要消耗\(d_i\)点生命值,但怪物死后会掉落血药,使你恢复\(a_i\)点生命值 ...
- java程序员图文并茂细说Unity中调用Android的接口
http://bbs.csdn.net/topics/391876421 最近做一个项目,为同事提供接口,能使他在Unity中调用Android中的函数来实现QQ登陆并获取用户信息.按照一些书上和一些 ...
- DIV设置浮动float以后下一个DIV要换行的方法
<div style=“float:left;”> 1111111 </div> <div style=“float:left;”>222222 </div& ...