谈谈刚接触sea.js框架得看法
向大神致敬,也是我接触框架得开始。
感谢张鑫旭大神,专业!致敬~ sea.js的7个API,都在下面得链接中有详细说明:
http://www.zhangxinxu.com/sp/seajs/docs/zh-cn/bootstrapping.html
seajs.use 通过 use 方法,可以在页面中加载任意模块
seajs.config 可以使用 config
方法来配置加载器
define 使用全局函数 define
来定义模块
require 函数用来访问其他模块提供的 API.
seajs.async 该方法可用来异步加载模块,并在加载完成后执行回调函数。
exports 用来向外提供模块的 API
module.exports exports
对象由模块系统创建,这不能满足开发者的所有需求, 有时候会希望 exports
是某个类的实例。 这时可用 module.exports
来实现
玉伯(王保平),淘宝前端类库 KISSY、前端模块化开发框架SeaJS、前端基础类库Arale的创始人。
Q: Sea.js是什么?致力于解决什么问题?
A: Sea.js是一个很纯粹小巧的模块加载器,它只解决一个问题:前端代码的模块化。通过Sea.js,可以将大量JavaScript代码封装成一个个小模块,然后轻松实现模块的加载和依赖管理。A:
Arale则是一套满足支付宝需求的通用模块集合,是一套基于模块化的前端基础类库,目前具备100多个模块,简单易用。(简单了解下,万一今后用的到呢)
Q: 发起Sea.js项目的初衷是什么?它的本质意义是什么?
A:在前端开发过程中,经常会出现一个单文件几千行甚至近万行的情况。这种大文件,对协作开发、后续维护、性能调优等都不利。
Sea.js初衷是帮助前端开发工程师将大文件拆分成小文件,能保持小颗粒度的模块化开发,同时不需要过多考虑依赖关系,让依赖管理轻松自如,让模块化开发变得更自然,就像浏览器原生提供的一样。
Sea.js的本质意义是通过模块化开发,来提高代码的可维护性。对工程师而言,是关注度分离,更将更多精力聚焦在代码本身的逻辑上。
Q:Sea.js的设计思想是什么?是如何具体实现的?
A:Sea.js的核心设计思想是保持简单。有两层含义:
- 对外保持使用接口的简单。Sea.js的常用API只有7个,使用者一旦了解,基本没什么记忆成本,可以快速上手。
- 内部实现代码尽可能简单。追求内部实现的简单有很多好处,比如别人可以比较容易读懂源码,这样就能参与进来协同开发。源码简单,往往也意味着不太会有晦涩的bug存在。
- Sea.js的设计理念还有职责清晰、性能优先和适度完备。
职责清晰是让Sea.js的范畴明确,随时知道自己应该做什么,不应该做什么。一个框架,最怕的是需求膨胀,最怕的是复杂化。
性能优先是因为Sea.js是底层加载器,倘若性能不好,直接会影响页面性能,因此源码中有不少地方会刻意追求性能。
适度完备是从功能的层面看Sea.js的API是否能满足常用需求,同时又能通过插件机制对外提供适度的可扩展性。Sea.js不追求能够满足所有需求,而是追求2/8原则
seajs开源地址的地址:https://github.com/seajs/seaj
谈谈刚接触sea.js框架得看法的更多相关文章
- 刚接触js不久,自己写的banner幻灯片效果。
对于我这种菜鸟来讲,刚接触项目.叫我用插件,其实我说插件太臃肿不想用,倒不如说我是看不懂那些插件...- -(更愿意自己写点看得懂的代码,顺便也是个学习的过程) 所以自己花了些时间,自己来写了个dem ...
- JavaScript模块载入框架sea.js 学习一
简单总结sea.js 学习 文件文件夹结构 /sea/sea.js 下载地址 http://seajs.org/docs/#downloads /sea/jquery-sea.js ...
- js模块加载框架 sea.js学习笔记
seajs实现了JavaScript 的 模块开发及按模块加载.用来解决繁琐的js命名冲突,文件依赖等问题,其主要目的是令JavaScript开发模块化并可以轻松愉悦进行加载. 官方文档:http:/ ...
- Seajs是什么及sea.js 由来,特点以及优势
Seajs是什么及sea.js 由来,特点以及优势 这篇文章主要介绍了Seajs的相关知识和和学习心得,适合刚接触SeaJS的同学,需要的朋友可以参考下,有更好的新手教程或文档,欢迎推荐.分享 1 ...
- 记录:sea.js和require.js配置 与 性能对比
最近有点忙,很久无写博客,记录一下之前的配置require.js和sea.js的配置.(有误有望提出 require.js 文件目录 /app(项目使用js) /lib(require.js jq存放 ...
- [转]Node.js框架对比:Express/Koa/Hapi
本文转自:https://www.cnblogs.com/souvenir/p/6039990.html 本文翻译自: https://www.airpair.com/node.js/posts/no ...
- [译]Node.js框架对比:Express/Koa/Hapi
本文翻译自: https://www.airpair.com/node.js/posts/nodejs-framework-comparison-express-koa-hapi 1.介绍 直至今日, ...
- 初探 Node.js 框架:eggjs (环境搭配篇)
eggjs 是一个优秀的 Node.js 框架 概述:为什么标题上说 eggjs 是一个优秀的 Node.js 框架(可跳过)? 换言之,我们为什么选择 eggjs 进行开发而不是之前初学时使用的 E ...
- Sea.js创始人玉伯的前端开发之路
在Web应用程序的用户体验越来越被重视的今天,前端开发的地位也上升到了前所未有的高度,而随之而来的也有更多的挑战. 为了将前端开发者繁重的工作变得简单,框架应运而生.国内也不乏一些非常优秀的前端开发框 ...
随机推荐
- onethink重新安装,提示已安装过解决办法!
onethink完全重新安装的时候提示已安装过,直接跳过数据库安装的解决办法 首先:删除根目录下 Data目录下的 install.lock 文件,然后: 打开\Application\Install ...
- pyhton 函数参数,递归函数,高阶函数(一点点笔记)
'''def test(x,y): print(x) print(y)test(2,y=3)def test(*args):#参数可以是不确定的多个数,接受N个位置参数,转换成元组形式 print(a ...
- mysql : show processlist 详解
最近排查一些MySQL的问题,会经常用到 show processlist,所以在这里把这个命令总结一下,做个备忘,以备不时只需. 首先是几条常用的SQL. 1.按客户端 IP 分组,看哪个客户端的链 ...
- Git 进阶操作(一)
1. 获取提交信息(commit) git show 1c002d(哈希值的前几位): 获取提交的信息; git show HEAD^: 显示HEAD的上级(parent)提交的信息; git sho ...
- day15(Mysql学习)
day15-MySQL 数据库 1 数据库概念(了解) 1.1 什么是数据库 数据库就是用来存储和管理数据的仓库! 数据库存储数据的优先: 可存储大量数据: 方便检索: 保持数据的一致性. ...
- python 面向对象 公有属性 用在哪里
公有属性也可以叫做静态字段 如果每个对象都有一个共同的值 , 应该把它设置为公有属性 公有属性使用场景,每个对象中保存相同的东西时,可以使用公有属性 类找公有属性 过程
- Mysql学习笔记—concat以及group_concat的用法(转载)
本文中使用的例子均在下面的数据库表tt2下执行: 一.concat()函数 1.功能:将多个字符串连接成一个字符串. 2.语法:concat(str1, str2,...) 返回结果为连接参数产生的字 ...
- NFS-网络文件共享服务
目录 NFS介绍 什么是NFS(Network File System) 搭建NFS服务需要的软件包 极简步骤搭建NFS服务 准备两台机器 配置服务端(nfs-server) 配置客户端(web-cl ...
- Deep Learning(1)
深度学习是机器学习研究中的一个新的领域,其动机在于建立.模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本.深度学习是无监督学习的一种. 深度学习的概念源于人工神经网络的 ...
- 爬取51job职位信息之编码问题
兴趣来潮,爬了下51job,但是遇到编码问题!以下是简单的一段代码 获取整个页面数据 # -*- coding:utf-8 -*- import requests import sysreload(s ...