Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ǰ¶ËÉñÆ÷avalonJSÈëÃÅ£¨Èý£©
 
×÷Õߣºvajoy À´Ô´£º²©¿ÍÔ° ·¢²¼ÓÚ 2015-03-19
  3212  次浏览      27
 

ÎÒÃÇÐèÒªÓõ½Á½¸öavalon·ÓÉÅäÌ×Ä£¿é¡ª¡ª mmHistory.js ºÍ mmRouter.js ¡£ÆäÖÐmmHistoryÊÇÓÃÓÚÀúÊ·¹ÜÀí£¬Ëü»á½Ù³ÖÒ³ÃæÉÏËùÓеã»÷Á´½ÓµÄÐÐΪ£¬µ±ÕâЩÁ´½ÓÊÇÒÔ #/ ¡¢#!/ ¿ªÍ·£¬¾Í³¢ÊÔÆ¥Åä·ÓɹæÔò£¬×èÖ¹Ò³ÃæË¢Ð£¨Í¨¹ýhash·½Ê½»òHTML5µÄreplaceState·½Ê½£©¡£mmRouterÊǸøÎÒÃǶ¨Òå·ÓɹæÔò£¬Â·ÓɹæÔò¿ÉÒÔ¸ü¾«Ï¸µØÖ¸¶¨Ã¿¸ö²ÎÊý(param)µÄÆ¥Å乿Ôò£¬Èç¹û·ûºÏ¾ÍÖ´ÐжÔÓ¦µÄ»Øµ÷£¬Èç¹û²»·ûºÏ£¬¾Í½øÈëerror»Øµ÷¡£

¹ØÓڸ÷ÓÉϵͳ¸ü¾ßÌåµÄÃèÊö£¬¿ÉÒÔ²éÔÄÕâÀï¡£

×÷ΪʾÀý£¬ÎÒÃÇ´òËãÖÆ×÷Ò»¸öÍøÕ¾µÄ ¡°Óû§ÖÐÐÄ¡± Ò³Ãæ£¬ÆäÖÐ×ó²àΪµ¼º½ÁÐ±í£¬ÓÒ²àΪÊÜ×ó²àÁÐ±í¿ØÖÆµÄÄÚÈÝÏÔÊ¾ÇøÓò£º

¸Ã¡°Óû§ÖÐÐÄ¡±Ò³ÃæÓÐÕâô¼¸¸öÒªÇó£º

¢Å Ò³Ãæ²»Ìø×ª£¬½ö×ö¾Ö²¿£¨¼´ÄÚÈÝÇøÓò²¿·Ö£©Ë¢Ð£»

¢Æ ¿ÉÒÔͨ¹ý²»Í¬µÄurl½øÈë¶ÔÓ¦µÄÒ³Ãæ£¨¼´ÄÚÈÝÇøÓòÏÔʾ¶ÔÓ¦µÄÄÚÈÝ£©£»

¢Ç ä¯ÀÀÆ÷ÄܼÇסurl״̬£¬±ÈÈç´Ó¡°ÕË»§ÏêÇ顱µãÈë¡°ÎÒÒª³äÖµ¡±Ò³Ã棬ȻºóÔÙµã»÷ä¯ÀÀÆ÷·µ»Ø°´Å¥£¬¿ÉÒÔÕýÈ·»Øµ½¡°ÕË»§ÏêÇé¡±Ò³Ãæ¡£

ÓÉÓÚ²»ÊÇʯÆ÷ʱ´ú£¬×ÔÈ»²»»áÔÙÑ¡ÔñiframeÕâÖÖÄںĸߡ¢²»ÓѺõÄÔªËØÀ´¼Ü¹¹Ò³Ã棨¶øÇÒiframeҲʵÏÖ²»Á˺óÃæÁ½¸öÐèÇóѽ£©¡£ÄÇôÎÒÃÇ»áºÜ¿ìÁªÏëµ½Ajax¼¼Êõ£¬Õâ¸öÏë·¨ºÜ±¾ÖÊ£¬²»¹ýµ¥´¿µÄAjaxҲû°ì·¨´ïµ½ÎÒÃǵÄÒªÇó£¬ËùÒÔ²ÅÐèÒªÒýÈ뿪ͷÌáµ½µÄÁ½¸öavalon·ÓÉÄ£¿é¡£

ÎÒÃÇ¿ÉÒÔÏÈд³ö¼òµ¥µÄÒ³ÃæÔ­ÐÍ£º

index.html£º

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>ÕË»§ÖÐÐÄ</title>
<link rel="stylesheet" href="css/user.css">
<script src="js/lib/require.js" type="text/javascript" data-main="js/page/user"></script>
</head>
<body ms-controller="user" class="ms-controller">
<script type="text/javascript">
//ÕâÀï¸øºó¶ËÌṩÊý¾Ý½Ó¿Ú
var conf = {
username: {"id": "11", "name": "VaJoy"}
}
</script>
<header>
<span>{{username.name}}ÄãºÃ£¬»¶Ó­À´µ½ÕË»§ÖÐÐÄ</span>
</header>
<nav>
<ul>
<li><a href="#!/index">ÎÒµÄÊ×Ò³</a></li>
<li><a href="#!/detail">ÕË»§ÏêÇé</a></li>
<li><a href="#!/recharge">ÎÒÒª³äÖµ</a></li>
</ul>
</nav>
<article>
ÄÚÈÝ...
</article>
</body>
</html>

user.js£º

require.config({
baseUrl: 'js/lib/',
paths:{
avalon: 'avalon',
domReady:'domReady',
mmHistory: 'mmHistory',
mmRouter: 'mmRouter',
jquery: 'jq'
},
shim:{
avalon: { exports: "avalon" },
mmHistory:{ deps: ['avalon']},
mmRouter:{ deps: ['avalon']}
}
});

require(['avalon',"domReady!"], function() {
var vm = avalon.define({
$id: "user",
username:conf.username
});
avalon.scan();
});

user.css£º

body,html{padding: 0;margin:0;background: #EEE;}
.ms-controller{visibility: hidden;}
header{height: 50px;background: white;}
header>span{display:block;padding: 16px;}
nav{position: absolute;left:0;margin-top:50px;width: 200px;}
nav>ul>li{margin-top: 12px;}
nav>ul>li>a{text-decoration: none;color:blue;}
nav>ul>li>a:hover{color:red;}
article{padding: 15px;margin-left:200px;min-height: 600px;background: white;}

ÔËÐнá¹ûÈçÏ£º

½Ó×ÅÎÒÃÇҪн¨Èý¸öÒ³Ãæ¡ª¡ªmine.html¡¢detail.html ºÍ recharge.html £¬·Ö±ð¶ÔÓ¦¡°ÎÒµÄÊ×Ò³¡±¡¢¡°ÕË»§ÏêÇ顱 ºÍ ¡°ÎÒÒª³äÖµ¡± µÄÓÒ²àÄÚÈÝ£¬ÔÛÔÚÀïÃæËæ±ãдµãÄÚÈÝÒâ˼Òâ˼¼´¿É£¬±ÈÈçmine.htmlÎÒ¾ÍдÁËÒ»¾ä»°£º

½Ó×ÅÎÒÃÇĬÈÏÏȰÑmine.htmlÒýÈëµ½index.htmlÖУ¬ÕâÀïÎÒÃǽèÖúavalonµÄ ms-include-src ½Ó¿Ú£¬ÐÞ¸ÄÏÂindex.html£º

<nav>
<ul>
<li><a href="#!/index">ÎÒµÄÊ×Ò³</a></li>
<li><a href="#!/detail">ÕË»§ÏêÇé</a></li>
<li><a href="#!/recharge">ÎÒÒª³äÖµ</a></li>
</ul>
</nav>
<article ms-include-src="pageUrl"> <!--ÕâÀïʹÓÃms-include-src½Ó¿Ú£¬Ëü»áÒýÈëpageUrlÊôÐÔËù¶ÔÓ¦µÄÎļþ-->
</article>

½Ó×ÅÐÞ¸Ä user.jsµÄ²¿·Ö£º

require(['avalon',"domReady!"], function() {
var vm = avalon.define({
$id: "user",
username:conf.username,
pageUrl:"mine.html" //ĬÈÏΪmine.html
});
avalon.scan();
});

ÔËÐÐÈçÏ£º

½Ó×ÅÊÇʱºòÈà mmHistory.js ºÍ mmRouter.js ·¢»ÓËüÃǵÄ×÷ÓÃÁË£¬ÎÒÃÇÐÞ¸ÄÏÂuser.jsµÄ²¿·Ö´úÂ룺

require(['mmHistory','mmRouter',"domReady!"], function() {
var vm = avalon.define({
$id: "user",
username:conf.username,
pageUrl:"mine.html" //ĬÈÏΪmine.html
});
function callback() {
if(this.path==="/index"){
vm.pageUrl="mine.html";
}else {
var path_tail = this.path.replace(/\//, "");
vm.pageUrl = path_tail + ".html"; //¶¯Ì¬ÐÞ¸ÄpageUrlÊôÐÔÖµ
}
}
avalon.router.get("/*path", callback); //½Ù³Öurl hash²¢´¥·¢»Øµ÷
avalon.history.start(); //ÀúÊ·¼Ç¼¶ÑÕ»¹ÜÀí
avalon.scan();
});

×¢ÒâÓÉÓÚÔÚ require.config µÄ shim ÖÐÎÒÃÇÒѾ­¶¨ÒåÁË mmHistory.js ºÍ mmRouter.js ÊÇÒÀÀµÓÚavalonµÄ£¬¹Ê´Ë´¦ÎÞÐëÔÙÒýÈëavalonÄ£¿é£¬requireJSÖ´ÐиôúÂë¶Î֮ǰ»áÏȼÓÔØºÃavalonµÄ¡£

ÎÒÃÇͨ¹ýÕâÁ½ÐдúÂëÖ´ÐÐÁË·ÓɺÍÀúÊ·¼Ç¼µÄ¹ÜÀí£º

avalon.router.get("/*path", callback); //½Ù³Öurl hash²¢´¥·¢»Øµ÷
avalon.history.start(); //ÀúÊ·¼Ç¼¶ÑÕ»¹ÜÀí

ÆäÖÐrouter.get() µÄµÚÒ»¸ö²ÎÊý±íʾ·ÓÉÆ¥Å乿Ôò£¬±ÈÈçÕâÀïµÄ¡°/*path¡±±íʾƥÅäÈ«²¿Â·¾¶£¬Æ¥Åäµ½Á˾ʹ¥·¢»Øµ÷callbackº¯Êý¡£

¸ü¶àµÄÆ¥Å乿ÔòÎÒÃÇ¿ÉÒÔÖ±½ÓÔÚ mmRouter.js Öв鿴עÊÍÐÅÏ¢£º

router.get() ÔÚ´¥·¢callbackǰ»áÉú³ÉÒ»¸öthis.pathÊôÐÔ¹©callbackµ÷Óã¨ÄãÒ²¿ÉÒÔ¸ø»Øµ÷º¯Êý¶¨ÒåÒ»¸ö²ÎÊý£¬ÆäĬÈÏÖµµÈͬÓëpath£©£¬ÆäֵΪµ±Ç°Æ¥Åäµ½µÄ·¾¶£¬±ÈÈçµ±urlºó׺±ä³É #!/recharge µÄʱºò£¬this.pathµÄֵΪƥÅäµ½µÄ"/recharge" ¡£Á˽âÁËÕâ¸öÖ®ºó£¬callback º¯ÊýÒ²ºÜºÃÀí½âÁË£º

function callback() {
if(this.path==="/index"){
vm.pageUrl="mine.html"; //Èç¹ûurlºó׺±ä³É"#!/index"£¬ÔòpageUrlΪ¡°mine.html¡±
}else {
var path_tail = this.path.replace(/\//, ""); //È¥µôthis.pathÖµµÄµÚÒ»¸öб¸Ü
vm.pageUrl = path_tail + ".html"; //¶¯Ì¬ÐÞ¸ÄpageUrlÊôÐÔÖµ
}
}

ÕâʱºòµÄÔËÐнá¹ûÈçÏÂËùʾ£º

×Դ˱ãʵÏÖÁËÎÒÃǵÄÐèÇó¡£µ«ÊÇÕâÑù»¹²»¹»ÍêÃÀ¡ª¡ªÃ¿¸öÒ³ÃæµÄÑùʽզ´¦ÀíÄØ£¿

ÎÒÃÇ¿ÉÒÔÖ±½ÓÔÚÒ³ÃæÉÏд<style>±êÇ©£¬»òÕßÖ±½Óд¸ö<link>ÒýÈëÍⲿÑùʽÎļþ£¬µ«Ç°Õß²»ºÃά»¤£¬ºóÕ߱Ͼ¹²»ÊDzåÈëµ½headÖеIJ»Ì«¹æ·¶¡£ÄÇôÎÒÃÇÄÜ·ñÒ²ÓÃrequireJSÄ£¿é»¯¶¯Ì¬ÒýÈëÑùʽÎļþÄØ£¿´ð°¸Êǿ϶¨µÄ£¬²»¹ýµÃ½èÖúÓÚÆä×é¼þcss.js¡£

ÒÔ¡°ÕË»§ÏêÇ顱£¨detail.html£©ÎªÀý£¬ÎÒÃÇ´´½¨Ò»¸ödetail.cssÎļþ£¬ÀïÃæÉèÖà .detail{color:red;}¡£

ÏÈÈ·±£require.configÖеÄpathsÀï¼ÓÉÏÁ˸Ã×é¼þ£º

paths:{   //ÕâÀïÅäÖõĵØÖ·£¬¶¼ÊÇÏà¶ÔÓÚÉÏ·½µÄbaseUrlµÄ
avalon: 'avalon',
domReady:'domReady',
mmHistory: 'mmHistory',
mmRouter: 'mmRouter',
css: 'css' //¼ÓÉÏcss.js
}

È»ºóÐÞ¸Ädetail.htmlÒ³ÃæÄÚÈÝ£º

<section ms-controller="detail" class="detail ms-controller">
Ó´Ó´Ó´£¬ÕâÀïÊÇÏêÇéÒ³Ãæ£¬{{username.name}}ÄãºÃ
</section>
<script>
require(['avalon','css!../../css/detail.css'], function(){
//ÏÂÃæµÄÆäʵ½¨Òéд³ÉÒ»¸öÄ£¿édetail.jsÈ»ºóÓÉrequireÒýÈë
avalon.define({
$id: "detail",
username: conf.username
});
avalon.scan();
})
</script>

¡°css!/XXX.css¡± ÊÇcss.jsµÄд·¨£¬×¢ÒâÒÔ"css!"¿ªÍ·¼´¿É¡£

ÔËÐнá¹ûÈçÏ£º

ÒÔÉϱãÊÇavalonǰ¶Ë·Óɵļòµ¥ÊµÏÖ£¬±¾ÕµÄʾÀý´úÂë¿ÉÒÔ´ÓÕâÀïÏÂÔØ¡£

   
3212 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕ Ïà¹ØÎĵµ Ïà¹Ø¿Î³Ì



Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

AndroidÊÖ»ú¿ª·¢£¨Ò»£©
Àí½âJavascript
·ÇµäÐÍajaxʵ¼ù
³¹µ×µÄAjax
javascript ʹÓÃCookies
ʹÓà jQuery ¼ò»¯ Ajax ¿ª·¢


Struts+Spring+Hibernate
»ùÓÚJ2EEµÄWeb 2.0Ó¦Óÿª·¢
J2EEÉè¼ÆÄ£Ê½ºÍÐÔÄܵ÷ÓÅ
Java EE 5ÆóÒµ¼¶¼Ü¹¹Éè¼Æ
Javaµ¥Ôª²âÊÔ·½·¨Óë¼¼Êõ
Java±à³Ì·½·¨Óë¼¼Êõ


ijº½¿Õ¹«Ë¾IT²¿ JavaScriptʵ¼ù
ijµçÊÓÈí¼þ HTML5ºÍJavaScript
Öк½ÐÅ JavaScript¸ß¼¶Ó¦Óÿª·¢
´óÇìÓÍÌï web½çÃæAjax¿ª·¢¼¼Êõ
ºÍÀûʱ ʹÓÃAJAX½øÐÐWEBÓ¦Óÿª·¢