Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SDCC
Search
Joseph Chiang
September 08, 2012
Programming
2.7k
21
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SDCC
2012 北京的 SDCC 研讨会讲模块加载策略
Joseph Chiang
September 08, 2012
More Decks by Joseph Chiang
See All by Joseph Chiang
不断归零的前端人生 - 2016 中国软件开发者大会
josephj
1
440
Let's Redux!
josephj
4
320
Automatic Functional Testing with Selenium and SauceLabs
josephj
2
320
From Hacker to Developer
josephj
1
170
tmuxinator
josephj
0
240
JavaScript Promise
josephj
0
240
Be an Internet Person
josephj
9
600
F2E Evolution
josephj
55
3.3k
F2E for Enterprise
josephj
42
5.7k
Other Decks in Programming
See All in Programming
SLOをサービス品質の共通言語にするために 取り組んできたこと
wakana0222
0
500
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
220
Apache Hive: そしてCloud Native Lakehouseへ
okumin
1
130
【やさしく解説 設計編 #0】DDDのコード、読めるのに分からない人へ
panda728
PRO
2
270
act1-costs.pdf
sumedhbala
0
230
トークンをケチるな、設計しろ:GitHub Copilotを賢く使うコンテキスト戦略
ochtum
0
320
1年で人数1.5倍、PR数5.5倍増。 品質とアウトカムはどうなったか、 何が効いたか
ike002jp
0
140
継続モナドとリアクティブプログラミング
yukikurage
3
600
音楽のための関数型プログラミング言語mimiumにおける多段階計算の活用
tomoyanonymous
1
330
Foundation Models frameworkで画像分析
ryodeveloper
1
120
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
2
500
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
860
Featured
See All Featured
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
270
Producing Creativity
orderedlist
PRO
348
40k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
530
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
510
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
320
Odyssey Design
rkendrick25
PRO
2
730
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
460
Building the Perfect Custom Keyboard
takai
2
810
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Transcript
ଆॶࡆᄛҦ ࢃᆀࢀקდjosephj https://speakerdeck.com/u/josephj/p/sdcc Module Loader Strategy
ܱႿࢀקდ (josephj)
ܱႿࢀקდ ҄ߌ֛ c܋฿ cჿ؟܄ ୍ᄅٺ (josephj)
ܱႿࢀקდ అଉ cభ؊۽ӱഽ cYDNඌ҃֡ഽ cᇶေཛଢğᆩ് ҄ߌ֛ c܋฿ cჿ؟܄ ୍ᄅٺ
(josephj)
ܱႿࢀקდ అଉ cభ؊۽ӱഽ cYDNඌ҃֡ഽ cᇶေཛଢğᆩ് miiiCasa ᄉႥ॓ cభ؊ඌؒᇶܵ cඌ҃֡ഽ ҄ߌ֛
c܋฿ cჿ؟܄ ୍ᄅٺ ᇀࣂ (josephj)
2010.7ਆ฿၂၀֥Кࣘྛ༯ࠞധख़֥ႆའ
2010.7ਆ฿၂၀֥Кࣘྛ༯ࠞധख़֥ႆའ քࢃഽ ۋ྆ღѯĆ Ϥ؇ҕ٠
2010.7ਆ฿၂၀֥Кࣘྛ༯ࠞധख़֥ႆའ քࢃഽ ۋ྆ღѯĆ Ϥ؇ҕ٠ http://josephj.com/entry.php?id=336 КࣘWebRebuildဆᾣđ൬ὤ⁷ẵĆ https://speakerdeck.com/u/josephj/p/webrebuild ࡹ৫భ؊षؿؒ ֒ൈဆࢃᇶี
હ൞ଆॶĤ ॖၛФᇗگ০Ⴈ֥ჭࡱ
Ⴎ7۱҂ݓࡅ෮ิ܂֥50؟۱ଆॶ෮ܒӮ http://astronomy.wikia.com/wiki/International_Space_Station NASAૅݓॢሹඇॢᅟ
Ⴎ7۱҂ݓࡅ෮ิ܂֥50؟۱ଆॶ෮ܒӮ http://astronomy.wikia.com/wiki/International_Space_Station NASAૅݓॢሹඇॢᅟ ᄝޅٳ۽ࣚ༥֥۽ӱਵთ ଆॶ߄षؿ൞сಖ൝ğ wҐႨ࠻Ⴕଆॶaх૧ᇗྍյᄯሰx
GitHub
GitHub GitHub൞ೈุြࢸ֥wሰࢌੀx git submodule add ࣼॖၛࡆೆљದཿݺ֥ଆॶ
http://www.flickr.com/photos/halfbisqued/2353845688/ ຩ်ᇏ֥ଆॶႻ൞હĤ
http://www.flickr.com/photos/halfbisqued/2353845688/ ޅॖၛФᄛೆႨ֥ )5.-a$44ა+BWB4DSJQU֖σ ຩ်ᇏ֥ଆॶႻ൞હĤ
http://www.flickr.com/photos/halfbisqued/2353845688/ ޅॖၛФᄛೆႨ֥ )5.-a$44ა+BWB4DSJQU֖σ ӑࠩݺႨ֥ਆ۱ଆॶğjQuery აTwitter Bootstrap ຩ်ᇏ֥ଆॶႻ൞હĤ ӱჴ္ॖၛቓԛਊຩᅟ
ᇶีğଆॶࡆᄛҦ
ᇶีğଆॶࡆᄛҦ cԮଆൔ
ᇶีğଆॶࡆᄛҦ cԮଆൔ c်Ҫࠩഡקଆൔ Page-level Setting
ᇶีğଆॶࡆᄛҦ cԮଆൔ c်Ҫࠩഡקଆൔ Page-level Setting cଆॶҪࠩഡקଆൔ Module-level Setting
Ԯଆൔ
Ԯଆൔ ႨMJOLISFGࠇTDSJQUTSDቓࡆᄛ
ਆρֹ֥(JU)VCषؿᆀ https://github.com/josephj/github-chinese-developer ᆃՑဆࢃ֥ٓ২۵۽ऎᄝ҂֥#SBODIᇏ
ਆρֹ֥(JU)VCषؿᆀ https://github.com/josephj/github-chinese-developer ᆃՑဆࢃ֥ٓ২۵۽ऎᄝ҂֥#SBODIᇏ
ਆρֹ֥(JU)VCषؿᆀ https://github.com/josephj/github-chinese-developer ᆃՑဆࢃ֥ٓ২۵۽ऎᄝ҂֥#SBODIᇏ <link href="assets/stylesheets/bootstrap.min.css" rel="stylesheet"> <link href="assets/stylesheets/bootstrap-responsive.css" rel="stylesheet"> <link
href="assets/stylesheets/demo.css" rel="stylesheet"> <script src="assets/javascripts/jquery-1.8.1.min.js"></script> <script src="assets/javascripts/handlebars-1.0.0.beta.6.js"></script> <script src="assets/javascripts/demo.js"></script> ᆃဢ֥ཬທၩđड़קն҆ٳದ൞ᆰࢤࡆᄛଆॶ֥ Bootstrap CSS Bootstrap CSS Page CSS jQuery Handlebars Page JS
ؓႿ၂۱ຩᅟषؿؒطđᆃဢቓ߶ཊೆࠁ ླေ၂ק֥षؿଆൔট൯
်૫ଆॶğ၂ᇕؒषؿଆൔ ૄ۱်૫ଆॶ్ٳԛ)5.-a+BWB4DSJQUa$44
်૫ଆॶğ၂ᇕؒषؿଆൔ ૄ۱်૫ଆॶ్ٳԛ)5.-a+BWB4DSJQUa$44
<div id=”nav”> <div class=”hd”> <h2>標題</h2> </div> <div class=”bd”> <p>內文</p> </div>
<div class=”ft”> <a href=”...”>更多... </a> </div> </div> ်૫ଆॶ֥)5.-ࢲܒ
<div id=”nav”> <div class=”hd”> <h2>標題</h2> </div> <div class=”bd”> <p>內文</p> </div>
<div class=”ft”> <a href=”...”>更多... </a> </div> </div> <div id=”nav”> <div class=”hd”> <h2>標題</h2> </div> <div class=”bd”> <p>內文</p> </div> <div class=”ft”> <a href=”...”>更多... </a> </div> </div> ်૫ଆॶ֥)5.-ࢲܒ
<div id=”nav”> <div class=”hd”> <h2>標題</h2> </div> <div class=”bd”> <p>內文</p> </div>
<div class=”ft”> <a href=”...”>更多... </a> </div> </div> <div id=”nav”> <div class=”hd”> <h2>標題</h2> </div> <div class=”bd”> <p>內文</p> </div> <div class=”ft”> <a href=”...”>更多... </a> </div> </div> ်૫ଆॶ֥)5.-ࢲܒ ၂۱*%սі၂۱ଆॶ ҂ିᇗگ
<div id=”nav”> <div class=”hd”> <h2>標題</h2> </div> <div class=”bd”> <p>內文</p> </div>
<div class=”ft”> <a href=”...”>更多... </a> </div> </div> <div id=”nav”> <div class=”hd”> <h2>標題</h2> </div> <div class=”bd”> <p>內文</p> </div> <div class=”ft”> <a href=”...”>更多... </a> </div> </div> ်૫ଆॶ֥)5.-ࢲܒ ၂۱*%սі၂۱ଆॶ ҂ିᇗگ IE CE GUսіଆॶ֥ѓ aଽಸaѓແࢲܒ
ၹૄ۱ଆॶ*%৫a$44҂߶ཌྷಙ ՎଆॶࢡZLQTC ZLQ൞ཛଢ෪ཿaTC൞4FBSDI#PY֥⅜⇔
<div id=”ykpsb”> <div class=”bd clearfix”> <form ...> ... </form> <div
class=”extra”> ... </div> </div> </div> form .extra [HTML] ၹૄ۱ଆॶ*%৫a$44҂߶ཌྷಙ ՎଆॶࢡZLQTC ZLQ൞ཛଢ෪ཿaTC൞4FBSDI#PY֥⅜⇔
<div id=”ykpsb”> <div class=”bd clearfix”> <form ...> ... </form> <div
class=”extra”> ... </div> </div> </div> form .extra [HTML] <style> #ykpsb { margin-bottom:10px; } #ykpsb form { float:left; } #ykpsb .extra { float:right; } </style> [CSS] ၹૄ۱ଆॶ*%৫a$44҂߶ཌྷಙ ՎଆॶࢡZLQTC ZLQ൞ཛଢ෪ཿaTC൞4FBSDI#PY֥⅜⇔
֡෮ิ֥ JavaScript ଆॶଆൔ window.mods[“ykpsb”] = function () { }();
֡෮ิ֥ JavaScript ଆॶଆൔ window.mods[“ykpsb”] = function () { }(); //
利用闭包与外界隔绝 var privateVar, publicFn; // 内部自行处理,不会影响其他模块 privateVar = "123"; publicFn = function () {};
֡෮ิ֥ JavaScript ଆॶଆൔ window.mods[“ykpsb”] = function () { }(); //
利用闭包与外界隔绝 var privateVar, publicFn; // 内部自行处理,不会影响其他模块 privateVar = "123"; publicFn = function () {}; return { // 仅揭露需公开的方法 publicFn: publicFn };
֡෮ิ֥ JavaScript ଆॶଆൔ window.mods[“ykpsb”] = function () { }(); //
利用闭包与外界隔绝 var privateVar, publicFn; // 内部自行处理,不会影响其他模块 privateVar = "123"; publicFn = function () {}; return { // 仅揭露需公开的方法 publicFn: publicFn }; // 外界仅可存取公开方法 mod["ykpsb"].publicFn();
Nicholas Zakas Former Principal Front End Engineer, Yahoo! Zakas֥Scalable JavaScript
ଆॶ ܴҳᆀଆൔğ ൌቔোර)VCܼѬ۵ࡓ๐ ֥ྛູđղ֞҂Ⴈಆთэ ඔॴଆቆ๙֥ଢ֥b https://github.com/miiicasa/module
http://www.nipic.com/show/2/55/d96dde66860c5190.html ؿᅚ֞၂קܿଆđھೂޅ࿊ᄴૄ်෮ླ֥ଆॶ֖Ĥ ်૫ଆॶ߄߶్ٳԛޓ؟ਬ֥֖σđೂޅᄛೆ൞၂࿐໙
http://www.nipic.com/show/2/55/d96dde66860c5190.html ฿ଧĆھೂޅԩ ᆃહ؟ଆॶ֖σĤ ؿᅚ֞၂קܿଆđھೂޅ࿊ᄴૄ်෮ླ֥ଆॶ֖Ĥ ်૫ଆॶ߄߶్ٳԛޓ؟ਬ֥֖σđೂޅᄛೆ൞၂࿐໙
http://www.flickr.com/photos/billjacobus1/123644872/ ᆃൈૌླေ၂۱Loaderࠏᇅ ླྀᇹᄛೆਬ؟֥ଆॶ֖σ
်Ҫࠩഡקଆൔ ୍aКࣘ8FC3FCVJMEၰีᆭ၂ https://speakerdeck.com/u/josephj/p/webrebuild
http://josephj.com/lab/2012/github-chinese-develope/ ਆρֹ֥षؿᆀ ࡌഡૌႨࢠႵܿଆ֥w်૫ଆॶଆൔxটषؿ
ਆρֹ֥षؿᆀ ࡌഡૌႨࢠႵܿଆ֥w်૫ଆॶଆൔxটषؿ http://josephj.com/lab/2012/github-chinese-develope/
ਆρֹ֥षؿᆀ 条件过滤模块 _filter.php _filter.css _filter.js ࡌഡૌႨࢠႵܿଆ֥w်૫ଆॶଆൔxটषؿ http://josephj.com/lab/2012/github-chinese-develope/
ਆρֹ֥षؿᆀ 列表模块 _list.php _list.css _list.js 条件过滤模块 _filter.php _filter.css _filter.js ࡌഡૌႨࢠႵܿଆ֥w်૫ଆॶଆൔxটषؿ
http://josephj.com/lab/2012/github-chinese-develope/
ਆρֹ֥षؿᆀ 资讯模块 列表模块 _info.php _info.css _info.js _list.php _list.css _list.js 条件过滤模块
_filter.php _filter.css _filter.js ࡌഡૌႨࢠႵܿଆ֥w်૫ଆॶଆൔxটषؿ http://josephj.com/lab/2012/github-chinese-develope/
Ԯቔمड़ק߶ӁളИख c)551౨ඔਈݖ؟ c߶ᄯӮ်૫ቅೖ c֖σଽಸໃ෪ cླႨಆთэඔ๙ cᄛೆ֤ॉ੮༵ުඨ cીႵౢԣ֥ࡏܒaၞཊೆࠁ
MINI ݖഡק֖ ࡼ؟۱ẵσކѩaቋཬ߄ ֥षؿߌ۽ऎ http://www.flickr.com/photos/prettypony/2644225789/ https://github.com/josephj/mini
Mini֥ഡק֖ ٳಸၞഡק
࿙ᅳ֖σ֥ਫ਼ࣥđॖၛഡק؟۱ %&7@3005൞7JSUVBM)PTU֥ߌэਈ Mini֥ഡק֖ ٳಸၞഡק
࿙ᅳ֖σ֥ਫ਼ࣥđॖၛഡק؟۱ %&7@3005൞7JSUVBM)PTU֥ߌэਈ קၬEFNPႵଧུ$44ა+4֖ Mini֥ഡק֖ ٳಸၞഡק
ᆷקtypeაmoduleࠧॖሱކѩቋཬ߄
ᆷקtypeაmoduleࠧॖሱކѩቋཬ߄ /mini?module=<module>&type=<css|js>
ᆷקtypeაmoduleࠧॖሱކѩቋཬ߄ /mini?module=<module>&type=<css|js>
ીႵMiniൈ֥౦ঃ
ીႵMiniൈ֥౦ঃ
ݖMiniॖၛնږࡨഒ౨ඔਈ
ݖMiniॖၛնږࡨഒ౨ඔਈ
ႮႿMiniીႵߏթࠏᇅaᆺିႨᄝषؿߌ ᄝbuildൈ֤ყ༵Ӂളކѩࠣቋཬ߄ު֥֖σ
ႮႿMiniીႵߏթࠏᇅaᆺିႨᄝषؿߌ ᄝbuildൈ֤ყ༵Ӂളކѩࠣቋཬ߄ު֥֖σ
ႮႿMiniીႵߏթࠏᇅaᆺିႨᄝषؿߌ ᄝbuildൈ֤ყ༵Ӂളކѩࠣቋཬ߄ު֥֖σ ཌഈ֥CSS/JSᄝBuildުӮູֆ၂֖σ
်Ҫࠩഡקଆൔ֥ᆜุࡏܒ
်Ҫࠩഡקଆൔ֥ᆜุࡏܒ ޓᆰत֥ᄛೆࠏᇅđॖၛႵֹིࡼଆॶ֖σކѩ෪
ᆃ൞NJJJ$BTBՖ၂षࣼႨ֥ଆॶࡆᄛٚൔ ຩᅟഈཌުޓ໗קaޓડၩ ෛᇷࠫՑ֥ڿϱđⁿứགྷਔ҂ഒ໙ี ်Ҫࠩഡקଆൔ
ڿϱсקϴෛᇷଆॶ ۿି ֥ྍᄹaྩڿa၍Ԣ ྩڿ.JOJ֥ቆഡק҂ࣼݺਔગĤ ಌׄົ҂ၞ
ڿϱсקϴෛᇷଆॶ ۿି ֥ྍᄹaྩڿa၍Ԣ ྩڿ.JOJ֥ቆഡק҂ࣼݺਔગĤ ಌׄົ҂ၞ ڿϱ֞ྍϱުđႵ۱်૫ଆॶླေ၍Ԣ čࠎЧࣼႵ۱֖σླ၍ԢĎ
ଆॶ၇ঠܱ༢൞٤ӈگᄖ֥Ć http://www.flickr.com/photos/kalavinka/4617897952/
ଆॶ၇ঠܱ༢൞٤ӈگᄖ֥Ć http://www.flickr.com/photos/kalavinka/4617897952/
ଆॶ၇ঠܱ༢൞٤ӈگᄖ֥Ć ်૫ଆॶJavaScript http://www.flickr.com/photos/kalavinka/4617897952/
ଆॶ၇ঠܱ༢൞٤ӈگᄖ֥Ć ۿିଆॶ JavaScript ်૫ଆॶJavaScript http://www.flickr.com/photos/kalavinka/4617897952/
ଆॶ၇ঠܱ༢൞٤ӈگᄖ֥Ć YUI CSS ်૫ଆॶCSS ۿିଆॶ JavaScript ်૫ଆॶJavaScript http://www.flickr.com/photos/kalavinka/4617897952/
ଆॶ၇ঠܱ༢൞٤ӈگᄖ֥Ć YUI CSS ်૫ଆॶCSS ۿିଆॶ JavaScript ်૫ଆॶJavaScript མေ၍Ԣ၂۱်૫ଆॶ ଧུۿିଆॶ္ླေ၂ఏ၍ԢĤ http://www.flickr.com/photos/kalavinka/4617897952/
ࢳथ၇ঠ໙ีđቋ࣍ޓࠅಣ֥".%ࡏܒ
6006 // 定义⼀一个 AMD 模块 define(“editor”, [“handlebars”], function () {
function Editor { /* Constructor */ } return Editor; },); ࢳथ၇ঠ໙ีđቋ࣍ޓࠅಣ֥".%ࡏܒ
6006 // 定义⼀一个 AMD 模块 define(“editor”, [“handlebars”], function () {
function Editor { /* Constructor */ } return Editor; },); ࢳथ၇ঠ໙ีđቋ࣍ޓࠅಣ֥".%ࡏܒ ֻؽ۱ҕඔॖၛקၬՎଆॶླေଧུଆॶ
6006 6006 // 定义⼀一个 AMD 模块 define(“editor”, [“handlebars”], function ()
{ function Editor { /* Constructor */ } return Editor; },); ࢳथ၇ঠ໙ีđቋ࣍ޓࠅಣ֥".%ࡏܒ // 使用⼀一个 AMD 模块 require(["editor"], function (Editor) { new Editor(); }); ֻؽ۱ҕඔॖၛקၬՎଆॶླေଧུଆॶ ᄝႨൈၛᄛೆٚൔࡼཌྷܱଆॶ֖σ၂ѩᄛೆ
ಌׄBuildݻൈݖࣲ ૌ܋Ⴕᆃહ؟်֥૫ླყ༵#VJMEğ
ಌׄBuildݻൈݖࣲ ૌ܋Ⴕᆃહ؟်֥૫ླყ༵#VJMEğ
NJJJ$BTB#VJMEੀӱᇏ ູ֤෮Ⴕ်૫ࡹᇂ֖࣡ Վֆཛቔြ֤ݻൈٳ϶Ć ಌׄBuildݻൈݖࣲ ૌ܋Ⴕᆃહ؟်֥૫ླყ༵#VJMEğ
NJJJ$BTB#VJMEੀӱᇏ ູ֤෮Ⴕ်૫ࡹᇂ֖࣡ Վֆཛቔြ֤ݻൈٳ϶Ć ൞ӻ࿃ᆜކ֥ѓሙ൞ ປᆜ#VJME҂ႋӑݖٳᇒ ಌׄBuildݻൈݖࣲ ૌ܋Ⴕᆃહ؟်֥૫ླყ༵#VJMEğ
ಌׄཌഈԢԋ
ಌׄཌഈԢԋ ࠧࣜݖ#FBVUJGJFSಯ҂ၞྩڿaߎ൞֤#VJMEaؓေૹࢮषؿࣼҵਔུ
ૄ်֥+4ა$44֖σ൞ປಆ҂ᇗگ֥ ္ၹՎીႵϷمቓ֞ॴ်ࡗ֥ߏթ ಌׄߏթིੱҵ
miii_index_my_contact_18fa331dfbf2bd392660925ba8f41239.js miii_index_my_contact_34945d9e0efb63c7dc62dcbbc3442a60.css ਆ်Ⴕྸ؟܋Ⴈ်֥૫ଆॶaಏߏթ֥ݺԩ miii_index_my_device_704b3ae3682d178a94465c066b0f6d42.js miii_index_my_device_623f7e30575a7180ddeb11fd748aed31.css ಌׄߏթིੱҵ ުটૌູਔߏթaԎԛ၂ུ܋Ⴈ.JOJଆॶ ᆃဢቓّطಞഡק۷ၞົ
ଆॶҪࠩഡקଆൔ ᆇᆞ֥ଆॶ֝ཟषؿĆ
ྏଢᇏ֥ກϹĆ ಞଆॶ߄षؿ҂ླေᄜႵِସ်૫ᇂĆ
ྏଢᇏ֥ກϹĆ ಞଆॶ߄षؿ҂ླေᄜႵِସ်૫ᇂĆ
ྏଢᇏ֥ກϹĆ षؿᆀህᇿႿֆ၂ଆॶ֥षؿ ഡקՎଆॶླေଧུ၇ঠଆॶ ಞଆॶ߄षؿ҂ླေᄜႵِସ်૫ᇂĆ ଆॶࡏܒ
ྏଢᇏ֥ກϹĆ -PBEFS࠹ෘԛ်૫ Ⴕଧུଆॶླᄛೆ षؿᆀህᇿႿֆ၂ଆॶ֥षؿ ഡקՎଆॶླေଧུ၇ঠଆॶ ಞଆॶ߄षؿ҂ླေᄜႵِସ်૫ᇂĆ ଆॶࡏܒ ଆॶ-PBEFS
ྏଢᇏ֥ກϹĆ -PBEFS࠹ෘԛ်૫ Ⴕଧུଆॶླᄛೆ षؿᆀህᇿႿֆ၂ଆॶ֥षؿ ഡקՎଆॶླေଧུ၇ঠଆॶ ಞଆॶ߄षؿ҂ླေᄜႵِସ်૫ᇂĆ ଆॶࡏܒ ଆॶ-PBEFS ჹ؊ଆॶᄛೆࠏᇅ ڛༀఖაᛍফఖ؊ࢌކ
ሱၛིିቋࡄ߄ٚൔᄛೆჹ؊ଆॶ
3FRVJSF+4൞ଢభቋЯ֥".%ൌቔ
3FRVJSF+4൞ଢభቋЯ֥".%ൌቔ ॖၛሱ၂۱၂۱ᄛೆ၇ঠ֥ଆॶ ࠇؿ҃భݖSKTቓކѩࠣቋཬ߄ // AMD Module define(“editor”, [‘a’,’b’,’c’], function ()
{ function Editor { /* Constructor */ } return Editor; }); require(["editor"], function (Editor) { new Editor(); });
3FRVJSF+4൞ଢభቋЯ֥".%ൌቔ ॖၛሱ၂۱၂۱ᄛೆ၇ঠ֥ଆॶ ࠇؿ҃భݖSKTቓކѩࠣቋཬ߄ // AMD Module define(“editor”, [‘a’,’b’,’c’], function ()
{ function Editor { /* Constructor */ } return Editor; }); require(["editor"], function (Editor) { new Editor(); }); ކѩაቋཬ߄ಯಖ߶ႵཌഈԢհა #VJMEൈࡗݖࣲ֥ਆ۱໙ีa മᇀଆॶ၂؟ؓषؿ؇္߶ᄯӮԊࠌ 3FRVJSF+4֥ࡏܒၹՎ҂ژކ֥ླ
ݓଽࢠഒದႨ֥:6*ݦൔ९
ݓଽࢠഒದႨ֥:6*ݦൔ९ ᄪᄝ୍భaᄅࣼิԛ֥ଆॶࡏܒ
ݓଽࢠഒದႨ֥:6*ݦൔ९ ᄪᄝ୍భaᄅࣼิԛ֥ଆॶࡏܒ // AMD Module define(‘editor’, [‘a’,’b’,’c’], function () {
function Editor { /* Constructor */ } return Editor; }); require(["editor"], function (Editor) { new Editor(); });
ݓଽࢠഒದႨ֥:6*ݦൔ९ ᄪᄝ୍భaᄅࣼิԛ֥ଆॶࡏܒ ۵ಀ୍ҌႵ֥".%a෮ေࢳथଆॶ၇ঠྟ֥නਫ਼൞၂ᇁ֥ // AMD Module define(‘editor’, [‘a’,’b’,’c’], function ()
{ function Editor { /* Constructor */ } return Editor; }); require(["editor"], function (Editor) { new Editor(); }); // YUI Module YUI.add("editor", function () { function Editor { /* Constructor */ } Y.Editor = Editor; }, “VERSION”, {requires:[‘a’,’b’,’c’]}); YUI.use("editor", function (Y) { new Y.Editor(); });
ၛYUI DataTableູٓ২
ၛYUI DataTableູٓ২
ၛYUI DataTableູٓ২ ҂Reload֥ྛູޓ؟ğ ߐ်aஆaᆰࢤщࠠb္ ॖၛࢤ൳۲োሧਘটჷđ൞ ޓگᄖ֥ଆቆ
ᆺေࠫྛսࣼॖၛᄛೆ෮ླଆॶ
ᆺေࠫྛսࣼॖၛᄛೆ෮ླଆॶ <script src="http://yui.yahooapis.com/3.5.0/build/yui/yui-min.js"></script>
ᆺေࠫྛսࣼॖၛᄛೆ෮ླଆॶ <script src="http://yui.yahooapis.com/3.5.0/build/yui/yui-min.js"></script> <script> </script> YUI().use('datatable', function (Y) { });
ᆺေࠫྛսࣼॖၛᄛೆ෮ླଆॶ <script src="http://yui.yahooapis.com/3.5.0/build/yui/yui-min.js"></script> <script> </script> YUI().use('datatable', function (Y) { });
ିམཞྛսМުđቓਔ؟ഒ൙౦ગĤ alert(Y.DataTable);
yui (Seed) ࠹ෘ෮ླଆॶ֥ੀӱ
yui (Seed) ࠹ෘ෮ླଆॶ֥ੀӱ YUI().use('datatable')
yui (Seed) widget datatable-core base-build datatable-head datatable-body ࠹ෘ෮ླଆॶ֥ੀӱ YUI().use('datatable')
escape yui (Seed) widget datatable-core base-build datatable-head datatable-body model-list node-event-delegate
base-base attribute event-focus base-plugin-host node-base node-style classnamemanager view ࠹ෘ෮ླଆॶ֥ੀӱ YUI().use('datatable')
escape yui (Seed) widget datatable-core base-build datatable-head datatable-body model-list node-event-delegate
base-base attribute event-focus base-plugin-host node-base node-style classnamemanager view yui-base event-delegate pluginhost event-synthetic attribute-core attribute-events attribute-extras array-extras array-invoke arraylist json-parse model ࠹ෘ෮ླଆॶ֥ੀӱ YUI().use('datatable')
escape yui (Seed) widget datatable-core base-build datatable-head datatable-body model-list node-event-delegate
base-base attribute event-focus base-plugin-host node-base node-style classnamemanager view yui-base event-delegate pluginhost event-synthetic attribute-core attribute-events attribute-extras array-extras array-invoke arraylist json-parse model ࠹ෘ෮ླଆॶ֥ੀӱ YUI().use('datatable') ൌ࠽ഈdatatable܋Ⴕ64ἠଆॶ֖ླᄛೆ ၂۱၂۱ᄛೆ߶ޓҠིି YUI֥ԩٚൔູޅĤ
఼ն֥෪ࠏCombo
఼ն֥෪ࠏCombo ֥Combo ࠏᇅ ᆰࢤၛGETҕඔࡼ҂ଆॶ֖σԱ৵ѩቋཬ߄
఼ն֥෪ࠏCombo ֥Combo ࠏᇅ ᆰࢤၛGETҕඔࡼ҂ଆॶ֖σԱ৵ѩቋཬ߄ http://yui.yahooapis.com/combo? ଆॶ1֥ؓႋਫ਼ࣥ ଆॶ2֥ؓႋਫ਼ࣥ ଆॶ3֥ؓႋਫ਼ࣥ ଆॶn֥ؓႋਫ਼ࣥ
ѩྛ٤ೖࡆᄛ YUI().use('datatable')
YUI ᇕሰ֖σ ѩྛ٤ೖࡆᄛ YUI().use('datatable')
YUI ᇕሰ֖σ ᄛೆཌྷܱCSS ѩྛ٤ೖࡆᄛ YUI().use('datatable')
ࡼ෮ླJavaScriptଆॶٳ౨aѩྛ༯ᄛ YUI ᇕሰ֖σ ᄛೆཌྷܱCSS ѩྛ٤ೖࡆᄛ YUI().use('datatable')
ࡼ෮ླJavaScriptଆॶٳ౨aѩྛ༯ᄛ YUI ᇕሰ֖σ ᄛೆཌྷܱCSS ѩྛ٤ೖࡆᄛ ٳაComboઆࠠॉ੮ਔğwଆॶ༵ުඨxawଆॶඔਈxawᛍফఖൈ౨ඔ ਈxawᛍফఖ(&5Ӊ؇ཋᇅxđ٤ӈ֥ሱ߄bሱ࠭ေቓᆃဢ֥ࠏᇅ٤ӈ҂ၞb YUI().use('datatable')
YUI().use('datatable')
ՖᇕሰэӮնඎࣇਔ323ms 323ms YUI().use('datatable')
ՖᇕሰэӮնඎࣇਔ323ms 323ms ҂ਔࢳଽ౦֥ದ߶ඪ:6*ޓ٧ޓஔն ൌ࠽ഈᆺᄛೆླေ֥ଆॶaఃݦൔ९㢻Ⴕ≾∄ི֥ੱ YUI().use('datatable')
ՖᇕሰэӮնඎࣇਔ323ms 323ms ҂ਔࢳଽ౦֥ದ߶ඪ:6*ޓ٧ޓஔն ൌ࠽ഈᆺᄛೆླေ֥ଆॶaఃݦൔ९㢻Ⴕ≾∄ི֥ੱ YUI().use('datatable') ২ೂğႨK2VFSZᆇ֥ૄ်Ⴈ֥֞BKBYᆃ۱ݦൔગĤ
John Resig The creator of jQuery http://www.quora.com/How-could-YUI3-improve-its-image-compared-to-jQuery-MooTools-etc YUIᄛೆٚൔൌᄝSexyਔaႋФն৯ܼĆ
John Resig The creator of jQuery YUI().use() + pulling code
off of Yahoo's CDN is damn sexy and should be promoted *VERY* heavily. http://www.quora.com/How-could-YUI3-improve-its-image-compared-to-jQuery-MooTools-etc YUIᄛೆٚൔൌᄝSexyਔaႋФն৯ܼĆ
ႵଆॶࡏܒaႵଆॶ-PBEFSa ކቋࡄ߄֥ჹ؊ଆॶᄛೆࠏᇅĆ ߎ֩હĤॹ֞Ⴈᄝຩᅟ်૫ଆॶ֥ᄛೆࠏᇅഈĆ :6*֥ࡏܒᆞ൞෮௹ஏ֥
໙ีğ࿙ᅳComboࠏᇅู֥ս
໙ีğ࿙ᅳComboࠏᇅู֥ս ֥$PNCPࣇ܂ଽ҆ႨaߎݺႵದཿਔูսĆ ࿊ᄴ֥൞.JOJGZᆃ۱۽ऎđ၂ဢ߶Ϻቓයڛఖ؊ ֥ߏթaކѩა֖σቋཬ߄
໙ีğ࿙ᅳComboࠏᇅู֥ս ֥$PNCPࣇ܂ଽ҆ႨaߎݺႵದཿਔูսĆ http://code.google.com/p/minify/ Minify (PHP5) https://github.com/mrclay/minify ࿊ᄴ֥൞.JOJGZᆃ۱۽ऎđ၂ဢ߶Ϻቓයڛఖ؊ ֥ߏթaކѩა֖σቋཬ߄
໙ีğ࿙ᅳComboࠏᇅู֥ս ֥$PNCPࣇ܂ଽ҆ႨaߎݺႵದཿਔูսĆ http://code.google.com/p/minify/ Minify (PHP5) https://github.com/mrclay/minify http://<your host>/minify?f= ଆॶ1֥ؓႋਫ਼ࣥ ଆॶ2֥ؓႋਫ਼ࣥ
ଆॶn֥ؓႋਫ਼ࣥ ࿊ᄴ֥൞.JOJGZᆃ۱۽ऎđ၂ဢ߶Ϻቓයڛఖ؊ ֥ߏթaކѩა֖σቋཬ߄
ؽğ:6*ሱרଆॶቆഡקگᄖ
ؽğ:6*ሱרଆॶቆഡקگᄖ ٤:6*Чദ֥ଆॶ֤ਸ਼ຓקၬđᆃဢ҂ݺົ
ؽğ:6*ሱרଆॶቆഡקگᄖ YUI_config = {"filter":"raw","async":true,"combine":true,"comboBase":"combo/?f=","comboSep":",","root":"lib/yui/ build/","langs":"zh-TW,en-US","groups":{"mui":{"combine":true,"fetchCSS":true,"root":"lib/mui/","lang":["en-US","zh- TW"],"modules":{"platform-core":{"path":"platform/core.js","requires":["node-base","event-base","platform- sandbox"]},"platform-sandbox":{"path":"platform/sandbox.js"},"lang-service":{"path":"platform/lang_service.js","requires": ["platform-core","platform-sandbox","intl"]},"scroll-pagination":{"path":"scroll-pagination/scroll- pagination.js","requires":["event","event-resize","node-event-delegate","datasource","scroll-pagination-css"]},"scroll- pagination-css":{"path":"scroll-pagination/assets/scroll-pagination.css","type":"css"},"shjs":{"path":"shjs/
sh_php.min.js","requires":["shjs-core","shjs-css"]},"shjs-css":{"path":"shjs/sh_nedit.css","type":"css"},"mui-cssbutton": {"path":"cssbutton/assets/skins/miiicasa/cssbutton-skin.css","type":"css"},"shjs-core":{"path":"shjs/ sh_main.min.js"}}},"index":{"combine":true,"fetchCSS":false,"root":"index/","lang":["en-US","zh-TW"],"modules":{"welcome": {"path":"welcome/welcome.js","lang":["en-US","zh-TW"],"requires":["platform-core","platform-sandbox","lang- service","console"]},"welcome/_notification":{"path":"welcome/_notification.js","requires":["substitute","scroll- pagination","yql","panel","node-event-delegate","handlebars"]},"charming/_masthead":{"path":"charming/ _masthead.js","requires":["panel","shjs"]},"common/_sidebar":{"requires":["mui-cssbutton"]}}}}}; YUI().use("welcome","welcome/_notification","charming/_masthead","common/_sidebar"); ٤:6*Чദ֥ଆॶ֤ਸ਼ຓקၬđᆃဢ҂ݺົ
ğ$44҂ൡႨႿࡆᄛ
ğ$44҂ൡႨႿࡆᄛ :6*ა3FRVJSF+4ॖၛࡆᄛ$44a ᆺିҐႨࡆᄛ
ğ$44҂ൡႨႿࡆᄛ $44ྶᄝ)5.-ཁൕభࣼሙСݺđ ҂ಖᛍফఖྶ၂ᆰᇗྍᇅđؓຩᅟིି߶൞ޓն֥Ԋࠌ :6*ა3FRVJSF+4ॖၛࡆᄛ$44a ᆺିҐႨࡆᄛ
ğ$44҂ൡႨႿࡆᄛ $44ྶᄝ)5.-ཁൕభࣼሙСݺđ ҂ಖᛍফఖྶ၂ᆰᇗྍᇅđؓຩᅟིି߶൞ޓն֥Ԋࠌ <link rel="stylesheet" href="page.css" media="all"> :6*ა3FRVJSF+4ॖၛࡆᄛ$44a ᆺିҐႨࡆᄛ
:6*ࢳथਔն҆ٳ֥ླ ഺ༯֥ూਃ֤ሱ࠭ࡹഡĆ http://www.flickr.com/photos/defenceimages/6771187177/
https://github.com/josephj/static-loader ၂ѩࢳथ:6*ቆ֥گᄖ؇ა ಞ$44Ԯࡆᄛ :6*ࢳथਔն҆ٳ֥ླ ഺ༯֥ూਃ֤ሱ࠭ࡹഡĆ http://www.flickr.com/photos/defenceimages/6771187177/
ਆρֹ֥षؿᆀ ᆃ߭ૌေࡆഈଆॶ၇ঠܱ༢Ć http://josephj.com/lab/2012/github-chinese-develope/ 资讯模块 列表模块 _info.php _info.css _info.js _list.php _list.css
_list.js 条件过滤模块 _filter.php _filter.css _filter.js
ਆρֹ֥षؿᆀ ᆃ߭ૌေࡆഈଆॶ၇ঠܱ༢Ć http://josephj.com/lab/2012/github-chinese-develope/ 资讯模块 列表模块 _info.php _info.css _info.js _list.php _list.css
_list.js 条件过滤模块 _filter.php _filter.css _filter.js module, cookie •module • node-event-delegate • node-style • node-screen • cache • jsonp • handlebars • event-resize •cookie •module • node-base •handlebars
ૄ۱ଆॶ֥ቆഡק ҂ᄜ→Ὂ ර.JOJ֥∉૫℟ק
ૄ۱ଆॶ֥ቆഡק ҂ᄜ→Ὂ ර.JOJ֥∉૫℟ק
ૄ۱ଆॶ֥ቆഡק ଆॶקၬሱദ+4ა$44໊ᇂ ࠣ၇ঠܱ༢ ҂ᄜ→Ὂ ර.JOJ֥∉૫℟ק
ᆷקՎ်૫Ⴕଧ်ུ૫ଆॶ ޓᆰत֥ᆷקٚൔ
ᆷקՎ်૫Ⴕଧ်ུ૫ଆॶ ޓᆰत֥ᆷקٚൔ
ᆷקՎ်૫Ⴕଧ်ུ૫ଆॶ ҂ླᆩ֡Мᗥ֥၇ῳଆΰĆᆺေᆷק်૫ଆॶ ၍Ԣ္҂ླေքྏ႕ཙљ֥ଆॶ ޓᆰत֥ᆷקٚൔ
ၞࡼ෮Ⴕླေ֥ഡקაѓదൻԛ گᄖ֥൙౦ႋھࢌ۳ӱൔটቓάĆ
ၞࡼ෮Ⴕླေ֥ഡקაѓదൻԛ گᄖ֥൙౦ႋھࢌ۳ӱൔটቓάĆ
ၞࡼ෮Ⴕླေ֥ഡקაѓదൻԛ گᄖ֥൙౦ႋھࢌ۳ӱൔটቓάĆ
ࡆᄛ֥ٚൔٳႪၳ
ࡆᄛ֥ٚൔٳႪၳ ၛԮٚൔࡆᄛᇕሰა်૫$44
ࡆᄛ֥ٚൔٳႪၳ ٳ❣ứ֥+4౨ ൞ሱ࠹ෘ၇ঠܱ༢طളӮ ၛԮٚൔࡆᄛᇕሰა်૫$44
ໃটषؿॖၛປಆህᇿᄝଆॶഈ
ໃটषؿॖၛປಆህᇿᄝଆॶഈ "๙ᆩ༏ଆॶ (_notification) ଆॶषؿᆀ" ଆॶӫ welcome/_notification $44֖σ welcome/_notification.css +4֖σ welcome/_notification.js
ཌྷ၇ଆॶ scroll-pagination, node-event-delegate, viewer
ໃটषؿॖၛປಆህᇿᄝଆॶഈ "๙ᆩ༏ଆॶ (_notification) ଆॶषؿᆀ" #်൮ଆॶ (_masthead) ଆॶषؿᆀ# ଆॶӫ welcome/_notification $44֖σ
welcome/_notification.css +4֖σ welcome/_notification.js ཌྷ၇ଆॶ scroll-pagination, node-event-delegate, viewer ଆॶӫ common/_masthead $44֖σ common/_masthead.css +4֖σ common/_masthead.js ෮ླଆॶ panel, device-navigation
ໃটषؿॖၛປಆህᇿᄝଆॶഈ "๙ᆩ༏ଆॶ (_notification) ଆॶषؿᆀ" #်൮ଆॶ (_masthead) ଆॶषؿᆀ# $ҧшণଆॶ (_sidebar) ଆॶषؿᆀ$
ଆॶӫ welcome/_notification $44֖σ welcome/_notification.css +4֖σ welcome/_notification.js ཌྷ၇ଆॶ scroll-pagination, node-event-delegate, viewer ଆॶӫ common/_masthead $44֖σ common/_masthead.css +4֖σ common/_masthead.js ෮ླଆॶ panel, device-navigation ଆॶӫ welcome/_sidebar $44֖σ welcome/_sidebar.css +4֖σ ↥ ෮ླଆॶ ↥
ቋުᄜ$POUSPMMFSᆷק်૫ଆॶࠧॖ ֨ೆު൮် welcome.php 页面开发者
ቋުᄜ$POUSPMMFSᆷק်૫ଆॶࠧॖ ֨ೆު൮် welcome.php 页面开发者 Վ်૫Ⴕၛ༯ଆॶğ ·•welcome/_notification ·•charming/_masthead ·•common/_sidebar
߭Ἢ်Ҫࠩഡק෮ᄥმ֥
߭Ἢ်Ҫࠩഡק෮ᄥმ֥ c #VJMEིੱ໙ี ҂ᄜ#VJMEđႮ.JOJGZᄝཌഈሱކѩa෪aϱЧ॥ܵb
߭Ἢ်Ҫࠩഡק෮ᄥმ֥ c #VJMEིੱ໙ี ҂ᄜ#VJMEđႮ.JOJGZᄝཌഈሱކѩa෪aϱЧ॥ܵb c ཌഈԢհ໙ี ჰ֖σࢥթᄝđॖၛᆰࢤྩᆞ໙ีđᆺေϜ.JOJGZؓႋ֥ߏթीוࠧॖ
߭Ἢ်Ҫࠩഡק෮ᄥმ֥ c #VJMEིੱ໙ี ҂ᄜ#VJMEđႮ.JOJGZᄝཌഈሱކѩa෪aϱЧ॥ܵb c ཌഈԢհ໙ี ჰ֖σࢥթᄝđॖၛᆰࢤྩᆞ໙ีđᆺေϜ.JOJGZؓႋ֥ߏթीוࠧॖ c ົྟ໙ี Ῐứᆀᆺקၬሱദଆॶ֥ཌྷ၇ྟaᆜ်෮ླଆΰႮ:6*-PBEFSίෘᗥሱọ≘
ೆđܵಸၞྸ؟b
߭Ἢ်Ҫࠩഡק෮ᄥმ֥ c #VJMEིੱ໙ี ҂ᄜ#VJMEđႮ.JOJGZᄝཌഈሱކѩa෪aϱЧ॥ܵb c ཌഈԢհ໙ี ჰ֖σࢥթᄝđॖၛᆰࢤྩᆞ໙ีđᆺေϜ.JOJGZؓႋ֥ߏթीוࠧॖ c ົྟ໙ี Ῐứᆀᆺקၬሱദଆॶ֥ཌྷ၇ྟaᆜ်෮ླଆΰႮ:6*-PBEFSίෘᗥሱọ≘
ೆđܵಸၞྸ؟b c ܋Ⴈ֥ߏթ໙ี Ԣਔಆთ܋ႨҐႨ.JOJGZᇏ֥HSPVQ$POGJHđఃᘧ҂ԩaх૧ົ໙ี
ࢲე
်Ҫ֥ࠩഡᇂॖམӮwᇏနࠢಃx ഡᇂಸၞbԚ௹၂ଢਔಖđܿଆэնࣼܵ҂ၞb ࢲე
်Ҫ֥ࠩഡᇂॖམӮwᇏနࠢಃx ഡᇂಸၞbԚ௹၂ଢਔಖđܿଆэնࣼܵ҂ၞb ଆॶҪࠩ℟קᄵ൞wֹٚሱᇍx ഡᇂࢠگᄖaؓӉ௹ົࢠႵིੱb ކཌྷ၇ྟ࠹ෘaሱކѩa٤҄༯ᄛ֩ࠏᇅ ಞ်૫ଆॶᆇ֥ቓ֞ෛҬࠧႨ ࢲე
ࢲე
#JH1JQF൞ޓ؟ຩᅟམൌቔ֥ଢѓ ൮༵֤wࡹ৫ଆॶཌྷ၇ྟxawҐႨ်૫ଆॶषؿଆൔx ༵ࡹ৫ଆॶ֝ཟषؿଆൔҌॖିႵൌቔ֥ࠏ߶ ܝৣࢠऎܿଆ֥ຩᅟषສᆃٚཟ၍ ࢲე
ཌྷܱ৵ࢲ c2010ࡹ৫భ؊षؿؒ IUUQXXXTMJEFTIBSFOFUTEDD cॴଆॶ๙ࠏᇅ IUUQHJUIVCDPNNJJJDBTBNPEVMF cMiniࡆᄛ۽ऎ IUUQHJUIVCDPNKPTFQIKNJOJ cଆॶࡆᄛࠏᇅ IUUQHJUIVCDPNKPTFQIKTUBUJDMPBEFS cਆρֹ֥GitHubषؿᆀ
IUUQHJUIVCDPNKPTFQIKHJUIVCDIJOFTFEFWFMPQ c֥Ѱग़ğᆃဢቓࣼؓਔ IUUQKPTFQIKDPN c֥EmailğKPTFQIK!HNBJMDPN 今天看到的所有程式码或工具都是可分享的!
Questions?
miiiCasa ࡅ๖≐aࡹ৫ࡅᇏ֥SNS 在北京工作的⼀一家人
miiiCasa ࡅ๖≐aࡹ৫ࡅᇏ֥SNS 在北京工作的⼀一家人 在老家重慶的奶奶
miiiCasa ࡅ๖≐aࡹ৫ࡅᇏ֥SNS 在北京工作的⼀一家人 在老家重慶的奶奶 位於家中、可存放照片的分享器
miiiCasa ࡅ๖≐aࡹ৫ࡅᇏ֥SNS 在北京工作的⼀一家人 在老家重慶的奶奶 位於家中、可存放照片的分享器 ৵ຩ
miiiCasa ࡅ๖≐aࡹ৫ࡅᇏ֥SNS 在北京工作的⼀一家人 在老家重慶的奶奶 想看孫女只要换个频道就可以了 位於家中、可存放照片的分享器 ৵ຩ
None