Suche senden
Hochladen
使用kslite支持第三方内容开发
•
Als PPTX, PDF herunterladen
•
1 gefällt mir
•
964 views
L
leneli
Folgen
Technologie
Business
Melden
Teilen
Melden
Teilen
1 von 29
Jetzt herunterladen
Empfohlen
使用Bigpipe提升浏览速度
使用Bigpipe提升浏览速度
kumawu
第三方内容开发最佳实践
第三方内容开发最佳实践
taobao.com
广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化
taobao.com
使用Big pipe提升浏览速度v2
使用Big pipe提升浏览速度v2
kumawu
百度前端性能监控与优化实践
百度前端性能监控与优化实践
Welefen Lee
编辑器设计Kissy editor
编辑器设计Kissy editor
taobao.com
Maven & mongo & sring
Maven & mongo & sring
Tzu Chi University
淘宝开放产品前端实践
淘宝开放产品前端实践
taobao.com
Empfohlen
使用Bigpipe提升浏览速度
使用Bigpipe提升浏览速度
kumawu
第三方内容开发最佳实践
第三方内容开发最佳实践
taobao.com
广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化
taobao.com
使用Big pipe提升浏览速度v2
使用Big pipe提升浏览速度v2
kumawu
百度前端性能监控与优化实践
百度前端性能监控与优化实践
Welefen Lee
编辑器设计Kissy editor
编辑器设计Kissy editor
taobao.com
Maven & mongo & sring
Maven & mongo & sring
Tzu Chi University
淘宝开放产品前端实践
淘宝开放产品前端实践
taobao.com
编辑器设计U editor
编辑器设计U editor
taobao.com
Berserk js
Berserk js
taobao.com
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
taobao.com
webpack 入門
webpack 入門
Anna Su
Kind editor设计思路
Kind editor设计思路
taobao.com
浅析浏览器解析和渲染
浅析浏览器解析和渲染
Ailsa126
2018 8 18_play_framework
2018 8 18_play_framework
Lorn Jhu
KISSY Mechanism
KISSY Mechanism
lifesinger
Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練
Joseph Chiang
使用Big pipe提升浏览速度 wk_velocity
使用Big pipe提升浏览速度 wk_velocity
kumawu
使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式
Will Huang
Intro-to-SeaJS
Intro-to-SeaJS
lifesinger
移动端Web开发性能优化实践
移动端Web开发性能优化实践
Mingel Zhang
Html&css培训 舒克
Html&css培训 舒克
jay li
游戏专题重构实践
游戏专题重构实践
f2er
Exam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development Fundamentals
Chieh Lin
美团前端架构简介
美团前端架构简介
pan weizeng
Blazor Component 開發實戰
Blazor Component 開發實戰
Gelis Wu
视图模式
视图模式
Li Zhang
Koubei banquet 34
Koubei banquet 34
Koubei UED
Kissy design
Kissy design
yiming he
Kissy模块化实践
Kissy模块化实践
yiming he
Weitere ähnliche Inhalte
Was ist angesagt?
编辑器设计U editor
编辑器设计U editor
taobao.com
Berserk js
Berserk js
taobao.com
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
taobao.com
webpack 入門
webpack 入門
Anna Su
Kind editor设计思路
Kind editor设计思路
taobao.com
浅析浏览器解析和渲染
浅析浏览器解析和渲染
Ailsa126
2018 8 18_play_framework
2018 8 18_play_framework
Lorn Jhu
KISSY Mechanism
KISSY Mechanism
lifesinger
Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練
Joseph Chiang
使用Big pipe提升浏览速度 wk_velocity
使用Big pipe提升浏览速度 wk_velocity
kumawu
使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式
Will Huang
Intro-to-SeaJS
Intro-to-SeaJS
lifesinger
移动端Web开发性能优化实践
移动端Web开发性能优化实践
Mingel Zhang
Html&css培训 舒克
Html&css培训 舒克
jay li
游戏专题重构实践
游戏专题重构实践
f2er
Exam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development Fundamentals
Chieh Lin
美团前端架构简介
美团前端架构简介
pan weizeng
Blazor Component 開發實戰
Blazor Component 開發實戰
Gelis Wu
视图模式
视图模式
Li Zhang
Koubei banquet 34
Koubei banquet 34
Koubei UED
Was ist angesagt?
(20)
编辑器设计U editor
编辑器设计U editor
Berserk js
Berserk js
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
webpack 入門
webpack 入門
Kind editor设计思路
Kind editor设计思路
浅析浏览器解析和渲染
浅析浏览器解析和渲染
2018 8 18_play_framework
2018 8 18_play_framework
KISSY Mechanism
KISSY Mechanism
Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練
使用Big pipe提升浏览速度 wk_velocity
使用Big pipe提升浏览速度 wk_velocity
使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式
Intro-to-SeaJS
Intro-to-SeaJS
移动端Web开发性能优化实践
移动端Web开发性能优化实践
Html&css培训 舒克
Html&css培训 舒克
游戏专题重构实践
游戏专题重构实践
Exam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development Fundamentals
美团前端架构简介
美团前端架构简介
Blazor Component 開發實戰
Blazor Component 開發實戰
视图模式
视图模式
Koubei banquet 34
Koubei banquet 34
Ähnlich wie 使用kslite支持第三方内容开发
Kissy design
Kissy design
yiming he
Kissy模块化实践
Kissy模块化实践
yiming he
J engine -构建高性能、可监控的前端应用框架
J engine -构建高性能、可监控的前端应用框架
wtxidian
J engine -构建高性能、可监控的前端应用框架
J engine -构建高性能、可监控的前端应用框架
fangdeng
淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践
Du Yamin
淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践
jay li
模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京
Joseph Chiang
高粒度模块化的前端开发
高粒度模块化的前端开发
iddcn
TBAD F2E 2010 review
TBAD F2E 2010 review
leneli
旺铺前端设计和实现
旺铺前端设计和实现
hua qiu
Gulp.js 自動化前端任務流程
Gulp.js 自動化前端任務流程
洧杰 廖
Javascript autoload
Javascript autoload
jay li
Spring 2.x 中文
Spring 2.x 中文
Guo Albert
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC
Nginx使用和模块开发
Nginx使用和模块开发
qingpiao1983
使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统
Frank Xu
Backbone.js and MVW 101
Backbone.js and MVW 101
Jollen Chen
Responsive Web UI Design
Responsive Web UI Design
jay li
前端MVVM框架安全
前端MVVM框架安全
Borg Han
淘宝移动端Web开发实践
淘宝移动端Web开发实践
完颜 小卓
Ähnlich wie 使用kslite支持第三方内容开发
(20)
Kissy design
Kissy design
Kissy模块化实践
Kissy模块化实践
J engine -构建高性能、可监控的前端应用框架
J engine -构建高性能、可监控的前端应用框架
J engine -构建高性能、可监控的前端应用框架
J engine -构建高性能、可监控的前端应用框架
淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践
模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京
高粒度模块化的前端开发
高粒度模块化的前端开发
TBAD F2E 2010 review
TBAD F2E 2010 review
旺铺前端设计和实现
旺铺前端设计和实现
Gulp.js 自動化前端任務流程
Gulp.js 自動化前端任務流程
Javascript autoload
Javascript autoload
Spring 2.x 中文
Spring 2.x 中文
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
Nginx使用和模块开发
Nginx使用和模块开发
使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统
Backbone.js and MVW 101
Backbone.js and MVW 101
Responsive Web UI Design
Responsive Web UI Design
前端MVVM框架安全
前端MVVM框架安全
淘宝移动端Web开发实践
淘宝移动端Web开发实践
使用kslite支持第三方内容开发
1.
使用kissyLite支持第 三方内容开发
李牧 2010-12-16
2.
inf.js-2.0 <script> alimama_pid="mm_1_2_3";alimama_type=2;
alimama_width=270;alimama_height=390; </script> <script src="http://a.alimama.cn/inf.js"></script>
3.
inf.js-3.0 <script> alimama_pid="mm_1_2_3";alimama_type=2;
alimama_width=270;alimama_height=390; </script> <script src="http://anydomain/inf.js"></script>
4.
inf.js-3.0 <script src="http://anydomain/inf.js"></script> <script>
alimama_pid="mm_1_2_3";alimama_type=2; alimama_width=270;alimama_height=390; window.alimama_show && alimama_show(); </script>
5.
inf.js-3.0 <!-- http://anydomain/any.js include
the content of inf.js --> <script src="http://anydomain/any.js"></script> <script> alimama_pid="mm_1_2_3";alimama_type=2; alimama_width=270;alimama_height=390; window.alimama_show && alimama_show(); </script>
6.
inf.js-3.0 <script>
//content of inf.js </script> <script> alimama_pid="mm_1_2_3";alimama_type=2; alimama_width=270;alimama_height=390; window.alimama_show && alimama_show(); </script>
7.
alimama_show() http://a.com/a.html:
<head> <script src="main.js"></script> </head> <script src="inf.js"></script> <script> alimama_show(); </script> <div> <!-- ad content--> </div> <iframe src="" style="display:none !important" id="anchor-pid"> <!-- ad content-->destory iframe onunload onbeforeunload </iframe>
8.
Inf.js – 3.0
需求&功能 • 需求 • 功能 • 必须稳定 • "alimama_" 变量收集 • 足够小 • 锚点/容器 iframe 输出 • 可扩展 -- 结构化 • 动态内容无阻引入 • kissyLite
9.
kissyLite kissylite,是kissy的一个支持有限 方法的子集 目标是用1.5k代码支持包管理和 模块化管理
预览地址
10.
ksLite -- 足够小 统一风格的OOP,异步的带依赖关系模块化,简单的模板. •
S.mix • S.extend • S.clone • S.add • S.use • S.getScript • S.substitute
11.
ksLite -- 基于包的扩展 包内无限可扩展
=> 模块名由包名,路径,文件名.三部分构成. {packagename} - [ {path_0} - ... - {path_n} - ] {filename} S.Config.lt_pkgs={ inf:"http://a.alimama.cn/kslite/", test:"http://demo.taobao.com/tbad/kslite/" } 模块"inf-a“: http://a.alimama.cn/kslite/inf/a.js 模块"test-t-1“: http://demo.taobao.com/tbad/kslite/test/t/1.js
12.
ksLite -- 基于包的扩展 可扩展无限包
=> package root router 在一个地址记录所有可用的包以及对应的class root. S.Config.lt_pkgrouter = http://a.alimama.cn/kslite/router.js S.mix(S.Config.lt_pkgs,{ pkg1:"http://a.alimama.cn/pkg1/", pkg2:"http://demo.taobao.com/tbad/pkg2/" }); 当自带S.Config.lt_pkgs没有相关配置时询问pkgrouter.
13.
ksLite -- 命名约定 S.add("pkg1-path1-mod1",function(S,P){
S["pkg1"] = S["pkg1"] || {}; P = S["pkg1"]; }); S.use("pkg1-path1-mod1",function(S,P){}); 保证包内对象都在名称空间P,即S.P内. 相当于另一个途径实现S.app(),嵌入至S的app. 为了被Kissy兼容,P只能作为开发约定,手动写在每个包中.
14.
ksLite -- 轻量的add S.add
= function(name, fn, config){ var mods = S.Env.mods, mod; if (mods[name] && mods[name].status > INIT)return; mod = {name: name,fn: fn || null,status: LOADED}; mods[name] = S.mix(mod,config); } 不提前attach,保证模块在使用之前没有多余的代码执行消耗. 可选优化:domready之前按需执行,domready之后选择性预热.
15.
kissyLite -- 简单的use S.use
= function(modNames, callback){ var mods = S.Env.mods; modNames = modNames.split(','); S.attachMods(modNames, function(){ if (callback) callback(S); }); } 将attachMods单独提出来.不止供use中使用.
16.
ksLite – 明确的attachMod 如果模块LOADED,直接attach. 如果模块没有LOADED,则异步载入模块.然后attach. 模块load之后,attach时如果发现requires. attachMods(requires,callbcak).之后attach.
17.
asyncer -- 异步执行单元 /* *
@interface asyncer 可能需要等待再回调的function. * @param { * } args * @param { Function | Object } callback info * @param {number} timeout(ms) * @return {Object} */ function ayncer(args , callback,timeout){ }
18.
parallel asyncers asyncerA(a,function(resA){
window.resA = resA; if(window.resB)c(); }); asyncerB(b,function(resB){ window.resB = resB; if(window.resA)c(); }) function c(){ //your code run after resA & resB both returend. }
19.
serial asyncers asyncerA(a,function(resA){
asyncerB(b,function(resB){ asyncerC(c,function(resC){ //your code. }) }); });
20.
S.multiAsync S.multiAsync(asyncers,callback,timeout,isSerial); 实例: S.attachMods =
function(modNames,callback){ var i, asyncers = {}; for (i = 0; i < modNames.length; i++) { asyncers[modNames[i]] = { f: S.attachMod, a: modNames[i] }; } S.multiAsync(asyncers, callback); }
21.
串行模块加载优化 场景: mod-a
requires mod-b mod-b requires mod-c 开发时: S.use(“mod-a”,function(){}); //串行的载入mod-a,mod-b,mod-c.效率不高 代码开发完成,发布上线之前,手动预编译优化(就是Google Closure做事的时候): S.log("should use('mod-a,mod-b,mod-c') here for parallel download !"); S.log("should combine 'mod/b.js','mod/c.js' to 'mod/a.js' for reduce requests !");
22.
避免循环引用 模块和包都是无限可扩展的,一旦出现循环引用,影响客户页面稳定性 场景: mod-a
requires mod-b mod-b requires mod-c mod-c requires mod-a 运行时: S.use("mod-a",function(){}); throw new Error("Fatal Error,Loop Reqs!");
23.
简单粗暴的算法 在env中有一个对象记录 x模块依赖哪些模块
x模块支持哪些模块 当出现x依赖x的时候 thorw error.
24.
避免循环引用实例 Load mod-a =>
requires b 依赖关系: a => b 支持关系 b <= a
25.
避免循环引用实例 Load mod-b =>
requires c 依赖关系: a => b , c b => c 支持关系: b <= a c <= b , a
26.
避免循环引用实例 Load mod-c =>
requires a 依赖关系: a => b , c , a b => c , a c => a a依赖a throw Error.
27.
简单粗暴的算法 多次遍历 + 数据冗余. 广告类小应用勉强可以. 求更好的算法
28.
被Kissy兼容 S.app("KSLITE"); 仍然是发布前预编译时,生成面向KISSY.add的模块注册代码.
29.
End
Jetzt herunterladen