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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
100ÐдúÂëʵÏÖµÄJavaScript MVCÑùʽ¿ò¼Ü
 
À´Ô´£ºÂíÅ©Íø ·¢²¼ÓÚ 2015-7-2
  2313  次浏览      27
 

½éÉÜ

ʹÓùý JavaScript¿ò¼Ü£¨Èç AngularJS, Backbone »òÕßEmber£©µÄÈ˶¼ºÜÊìϤÔÚUI£¨Óû§½çÃæ£¬Ç°¶Ë£©ÖÐmvcµÄ¹¤×÷»úÀí¡£ÕâЩ¿ò¼ÜʵÏÖÁËMVC£¬Ê¹µÃÔÚÒ»¸öµ¥Ò³ÃæÖÐʵÏÖ¸ù¾ÝÐèÒª±ä»¯ÊÓͼʱ¸ü¼ÓÇáËÉ£¬¶øÄ£ÐÍ-ÊÓͼ-¿ØÖÆÆ÷£¨mvc£©µÄºËÐĸÅÄî¾ÍÊÇ£º´¦Àí´«ÈëÇëÇóµÄ¿ØÖÆÆ÷¡¢ÏÔʾÐÅÏ¢µÄÊÓͼ¡¢±íʾҵÎñ¹æÔòºÍÊý¾Ý·ÃÎʵÄÄ£ÐÍ¡£

Òò´Ë£¬µ±ÐèÒª´´½¨ÕâÑùÒ»¸öÐèÒªÔÚµ¥¸öÒ³ÃæÖÐʵÏÖÇл»³ö²»Í¬ÄÚÈݵÄÓ¦ÓÃʱ£¬ÎÒÃÇͨ³£Ñ¡ÔñʹÓÃÉÏÊö¿ò¼ÜÖ®Ò»¡£µ«ÊÇ,Èç¹ûÎÒÃǽö½öÐèÒªÒ»¸öÔÚÒ»¸öurlÖÐʵÏÖÊÓͼÇл»µÄ¿ò¼Ü,¶ø²»ÐèÒª¶îÍâÀ¦°óµÄ¹¦Äܵϰ£¬¾Í²»±ØÊ¹ÓÃÏóAngularºÍEmberµÈ¸´ÔӵĿò¼Ü¡£±¾ÎľÍÊdz¢ÊÔʹÓüòµ¥¡¢ÓÐЧ·½·¨À´½â¾öͬÑùµÄÎÊÌâ¡£

¸ÅÄî

Ó¦ÓÃÖеĴúÂëÀûÓÃurlsÖеġ°#¡±ÊµÏÖMVCģʽµÄµ¼º½¡£Ó¦ÓÃÒÔÒ»¸öȱʡµÄurl¿ªÊ¼£¬»ùÓÚ¹þÏ£ÖµµÄ´úÂë¼ÓÔØÓ¦ÓÃÊÓͼ²¢ÇÒ½«¶ÔÏó-Ä£ÐÍÓ¦ÓÃÓÚÊÓͼģ°å¡£

url¸ñʽÏñÏÂÃæÕâÑù£º

http://Domain Name/index.html#/Route Name

ÊÓͼÄÚÈݱØÐëÒÔ{{Property-Name}}µÄ·½Ê½°ó¶¨¶ÔÏóÄ£Ð͵ÄÖµºÍÊôÐÔ¡£´úÂë»á²éÕÒÕâ¸öרÃŵÄÄ£°å¸ñʽ²¢ÇÒ´úÌæ¶ÔÏóÄ£ÐÍÖеÄÊôÐÔÖµ¡£

ÒÔajaxµÄ·½Ê½Òì²½¼ÓÔØµÄÊÓͼ»á±»·ÅÖÃÓÚÒ³ÃæµÄռλ·ûÖС£ÊÓͼռλ·û¿ÉÒÔÊÇÈκεÄÔªËØ£¨ÀíÏëµÄÇé¿öÊÇdiv£©£¬µ«ÊÇËü±ØÐëÓÐÒ»¸öרÃŵÄÊôÐÔ£¬´úÂë¸ù¾ÝÕâ¸öרÃŵÄÊôÐÔÀ´¶¨Î»Ëü£¬ÕâÑùͬÑùÓÐÖúÓÚ´úÂëµÄʵÏÖ¡£µ±url¸Ä±äʱ£¬»áÖØ¸´Õâ¸ö³¡¾°£¬ÁíÍâÒ»¸öÊÓͼ±»¼ÓÔØ¡£ÌýÆðÀ´ºÜ¼òµ¥°É£¡ÏÂÃæµÄÁ÷³Ìͼ½âÊÍÁËÔÚÕâ¸öÌØ¶¨µÄʵÏÖÖеÄÏûÏ¢Ìø×ª¡£

д´úÂë

ÎÒÃÇÒÔ»ù±¾µÄÄ£¿éÉè¼ÆÄ£Ê½¿ªÊ¼£¬²¢ÇÒ×îÖÕÓÃÃÅÃæÉè¼ÆÄ£Ê½µÄ·½Ê½½«ÎÒÃǵÄlibsÆØ¹âÓÚÈ«¾Ö·¶Î§ÄÚ¡£

; (function (w, d, undefined) { //rest of the code })(window, document);

ÎÒÃÇÐèÒª½«ÊÓÍ¼ÔªËØ´æ´¢µ½Ò»¸ö±äÁ¿ÖУ¬ÕâÑù¾Í¿ÉÒÔ¶à´ÎʹÓá£

var _viewElement = null; //element that will be used to render the view

ÎÒÃÇÐèÒªÒ»¸öȱʡµÄ·ÓÉÀ´Ó¦¶ÔurlÖÐûÓзÓÉÐÅÏ¢µÄÇé¿ö£¬ÕâÑù¾ÍȱʡµÄÊÓͼ¾Í¿ÉÒÔ±»¼ÓÔØ¶ø²»ÊÇչʾ¿Õ°×Ò³Ãæ¡£

var _defaultRoute = null;

ÏÖÔÚÎÒÃÇÀ´´´½¨ÎÒÃǵÄÖ÷ÒªMVC¶ÔÏóµÄ¹¹Ôì·½·¨¡£ÎÒÃÇ»á°Ñ·ÓÉÐÅÏ¢´æ´¢ÔÚ¡°_routeMap¡±ÖÐ

var jsMvc = function () {  
//mapping object for the routes
this._routeMap = {};
}

ÊÇʱºò´´½¨Â·ÓɶÔÏóÁË£¬ÎÒÃǻὫ·ÓÉ¡¢Ä£°å¡¢¿ØÖÆÆ÷µÄÐÅÏ¢´æ´¢ÔÚÕâ¸ö¶ÔÏóÖС£

var routeObj = function (c, r, t) {  
this.controller = c;
this.route = r;
this.template = t;
}

ÿһ¸öurl»áÓÐÒ»¸öרÃŵÄ·ÓɶÔÏórouteObj.ËùÓеÄÕâЩ¶ÔÏ󶼻ᱻÌí¼Óµ½_routeMap¶ÔÏóÖУ¬ÕâÑùÎÒÃǺóÐø¾Í¿ÉÒÔͨ¹ýkey-valueµÄ·½Ê½»ñÈ¡ËüÃÇ¡£

ΪÁËÌí¼Ó·ÓÉÐÅÏ¢µ½MVC libsÖУ¬ÎÒÃÇÐè񻮯¹âlibsÖеÄÒ»¸ö·½·¨¡£ËùÒÔÈÃÎÒÃÇ´´½¨Ò»¸ö·½·¨£¬Õâ¸ö·½·¨¿ÉÒÔ±»¸÷×ԵĿØÖÆÆ÷ÓÃÀ´Ìí¼ÓзÓÉ¡£

jsMvc.prototype.AddRoute = function (controller, route, template) {  
this._routeMap[route] = new routeObj(controller, route, template);
}

·½·¨AddRoute½ÓÊÕ3¸ö²ÎÊý£º¿ØÖÆÆ÷£¬Â·ÓɺÍÄ£°å( contoller, route and template)¡£ËûÃÇ·Ö±ðÊÇ£º

controller:¿ØÖÆÆ÷µÄ×÷ÓþÍÊÇ·ÃÎÊÌØ¶¨µÄ·Ïß¡£

route:·ÓɵÄ·Ïß¡£Õâ¸ö¾ÍÊÇurlÖÐ#ºóÃæµÄ²¿·Ö¡£

template:ÕâÊÇÍⲿµÄhtmlÎļþ£¬Ëü×÷ΪÕâ¸ö·ÓɵÄÊÓͼ±»¼ÓÔØ¡£ÏÖÔÚÎÒÃǵÄlibsÐèÒªÒ»¸öÇÐÈëµãÀ´½âÎöurl£¬²¢ÇÒΪÏà¹ØÁªµÄhtmlÄ£°åÒ³ÃæÌṩ·þÎñ¡£ÎªÁËÍê³ÉÕâ¸ö£¬ÎÒÃÇÐèÒªÒ»¸ö·½·¨¡£

Initialize·½·¨×öÈçϵÄÊÂÇ飺

1£©»ñÈ¡ÊÓͼÏà¹ØµÄÔªËØµÄ³õʼ»¯¡£´úÂëÐèÒªÒ»¸ö¾ßÓÐviewÊôÐÔµÄÔªËØ£¬ÕâÑù¿ÉÒÔ±»ÓÃÀ´ÔÚHTMLÒ³ÃæÖвéÕÒ£º

2£©ÉèÖÃȱʡµÄ·ÓÉ

3£©ÑéÖ¤ÊÓÍ¼ÔªËØÊÇ·ñºÏÀí

4£©°ó¶¨´°¿Ú¹þÏ£±ä¸üʼþ£¬µ±url²»Í¬¹þÏ£Öµ·¢Éú±ä¸üʱÊÓͼ¿ÉÒÔ±»¼°Ê±¸üÐÂ

5£©×îºó£¬Æô¶¯mvc

//Initialize the Mvc manager object to start functioning  
jsMvc.prototype.Initialize = function () {
var startMvcDelegate = startMvc.bind(this);

//get the html element that will be used to render the view
_viewElement = d.querySelector('[view]');
if (!_viewElement) return; //do nothing if view element is not found

//Set the default route
_defaultRoute = this._routeMap[Object.getOwnPropertyNames(this._routeMap)[0]];

//start the Mvc manager
w.onhashchange = startMvcDelegate;
startMvcDelegate();
}

ÔÚÉÏÃæµÄ´úÂëÖУ¬ÎÒÃÇ´ÓstartMvc ·½·¨Öд´½¨ÁËÒ»¸ö´úÀí·½·¨startMvcDelegate ¡£µ±¹þÏ£Öµ±ä»¯Ê±£¬Õâ¸ö´úÀí¶¼»á±»µ÷Óá£ÏÂÃæ¾ÍÊǵ±¹þÏ£Öµ±ä»¯Ê±ÎÒÃÇ×öµÄ²Ù×÷µÄÏȺó˳Ðò£º

1£©»ñÈ¡¹þÏ£Öµ

2£©´Ó¹þÏ£Öлñȡ·ÓÉÖµ

3£©´Ó·ÓÉmap¶ÔÏó_routeMapÖлñȡ·ÓɶÔÏórouteObj

4£©Èç¹ûurlÖÐûÓзÓÉÐÅÏ¢£¬ÐèÒª»ñȡȱʡµÄ·ÓɶÔÏó

5£©×îºó£¬µ÷ÓøúÕâ¸ö·ÓÉÓйصĿØÖÆÆ÷²¢ÇÒΪÕâ¸öÊÓÍ¼ÔªËØµÄÊÓͼÌṩ·þÎñ

ÉÏÃæµÄËùÓв½Öè¶¼±»ÏÂÃæµÄstartMvc·½·¨ËùʵÏÖ

//function to start the mvc support  
function startMvc() {
var pageHash = w.location.hash.replace('#', ''),
routeName = null,
routeObj = null;

routeName = pageHash.replace('/', ''); //get the name of the route from the hash
routeObj = this._routeMap[routeName]; //get the route object

//Set to default route object if no route found
if (!routeObj)
routeObj = _defaultRoute;

loadTemplate(routeObj, _viewElement, pageHash); //fetch and set the view of the route
}

ÏÂÒ»²½£¬ÎÒÃÇÐèҪʹÓÃXML HTTPÇëÇóÒì²½¼ÓÔØºÏÊʵÄÊÓͼ¡£Îª´Ë£¬ÎÒÃǻᴫµÝ·ÓɶÔÏóµÄÖµºÍÊÓÍ¼ÔªËØ¸ø·½·¨loadTemplate¡£

//Function to load external html data  
function loadTemplate(routeObject, view) {
var xmlhttp;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else {
// code for IE6, IE5
xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
}
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
loadView(routeObject, view, xmlhttp.responseText);
}
}
xmlhttp.open('GET', routeObject.template, true);
xmlhttp.send();
}

µ±Ç°Ö»Ê£¼ÓÔØÊÓͼºÍ½«¶ÔÏóÄ£ÐÍÓëÊÓͼģ°å°ó¶¨ÁË¡£ÎÒÃǻᴴ½¨Ò»¸ö¿ÕµÄÄ£ÐͶÔÏó£¬È»ºó´«µÝÓë·½·¨Ïà¹ØµÄÄ£ÐÍÀ´»½ÐÑ·ÓÉ¿ØÖÆÆ÷¡£¸üкóµÄÄ£ÐͶÔÏó»áÓëÏÈǰÒѾ­¼ÓÔØµÄXHRµ÷ÓÃÖеÄHTMLÄ£°å°ó¶¨¡£

loadView ·½·¨±»ÓÃÓÚµ÷ÓÿØÖÆÆ÷·½·¨£¬ÒÔ¼°×¼±¸Ä£ÐͶÔÏó¡£

replaceToken·½·¨±»ÓÃÓÚÓëHTMLÄ£°åÒ»Æð°ó¶¨Ä£ÐÍ

//Function to load the view with the template  
function loadView(routeObject, viewElement, viewHtml) {
var model = {};

//get the resultant model from the controller of the current route
routeObject.controller(model);

//bind the model with the view
viewHtml = replaceToken(viewHtml, model);

//load the view into the view element
viewElement.innerHTML = viewHtml;
}

function replaceToken(viewHtml, model) {
var modelProps = Object.getOwnPropertyNames(model),

modelProps.forEach(function (element, index, array) {
viewHtml = viewHtml.replace('{{' + element + '}}', model[element]);
});
return viewHtml;
}

×îºó£¬ÎÒÃǽ«²å¼þÆØ¹âÓÚjsÈ«¾Ö·¶Î§Íâ

//attach the mvc object to the window  
w['jsMvc'] = new jsMvc();

ÏÖÔÚ£¬ÊÇʱºòÔÚÎÒÃǵ¥Ò³Ó¦ÓÃÖÐʹÓÃÕâ¸öMVC²å¼þ¡£ÔÚÏÂÒ»¸ö´úÂë¶ÎÖУ¬ÏÂÃæÕâЩ»áʵÏÖ:

1)ÔÚwebÒ³ÃæÖÐÒýÈëÕâ¸ö´úÂë

2£©ÓÿØÖÆÆ÷Ìí¼Ó·ÓÉÐÅÏ¢ºÍÊÓͼģ°åÐÅÏ¢

3£©´´½¨¿ØÖÆÆ÷¹¦ÄÜ

4£©×îºó£¬³õʼ»¯lib¡£

³ýÁËÉÏÃæÎÒÃÇÐèÒªµÄÁ´½ÓÈÃÎÒÃǵ¼º½µ½²»Í¬µÄ·¾¶Í⣬һ¸öÈÝÆ÷ÔªËØµÄÊÓͼÊôÐÔ°üº¬×ÅÊÓͼģ°åhtml¡£

<!DOCTYPE html> 
<html>
<head>
<title>JavaScript Mvc</title>
<script src="jsMvc.js"></script>
<!--[if lt IE 9]> <script src="jsMvc-ie8.js"></script> <![endif]-->

<style type="text/css">
.NavLinkContainer {
padding: 5px;
background-color: lightyellow;
}

.NavLink {
background-color:black;
color: white;
font-weight:800;
text-decoration:none;
padding:5px;
border-radius:4px;
}
.NavLink:hover {
background-color:gray;
}
</style>
</head>
<body>
<h3>Navigation Links</h3>
<div class="NavLinkContainer">
<a class="NavLink" href="index.html#/home">Home</a>

<a class="NavLink" href="index.html#/contact">Contact</a>

<a class="NavLink" href="index.html#/admin">Admin</a>

</div>
<br />
<br />
<h3>View</h3>
<div view></div>
<script>
jsMvc.AddRoute(HomeController, 'home', 'Views/home.html');
jsMvc.AddRoute(ContactController, 'contact', 'Views/contact.html');
jsMvc.AddRoute(AdminController, 'admin', 'Views/admin.html');
jsMvc.Initialize();

function HomeController(model) {
model.Message = 'Hello World';
}

function ContactController(model) {
model.FirstName = "John";
model.LastName = "Doe";
model.Phone = '555-123456';
}

function AdminController(model) {
model.UserName = "John";
model.Password = "MyPassword";
}
</script>
</body>
</html>

ÉÏÃæµÄ´úÂëÓÐÒ»¶Î°üº¬Ò»¸öΪIEµÄÌõ¼þ×¢ÊÍ¡£

<!--[if lt IE 9]> <script src="jsMvc-ie8.js"></script> <![endif]-->

Èç¹ûIEµÄ°æ±¾µÍÓÚ9£¬ÄÇôfunction.bind£¬Object.getOwnPropertyNamesºÍArray.forEachÊôÐÔ½«²»»á±»Ö§³Ö¡£Òò´ËÎÒÃÇҪͨ¹ýÅжÏä¯ÀÀÆ÷ÊÇ·ñµÍÓÚIE9À´·´À¡´úÂëÊÇ·ñÖ§³Ö¡£

ÆäÖеÄÄÚÈÝÓÐhome.html£¬ contact.html ºÍ admin.html Çë¿´ÏÂÃæ£º

home.html:

{{Message}}

contact.html:

{{FirstName}} {{LastName}}  
<br />
{{Phone}}

admin.html:

<div style="padding:2px;margin:2px;text-align:left;"> 
<label for="txtUserName">User Name</label>
<input type="text" id="txtUserName" value="{{UserName}}" />
</div>
<div style="padding:2px;margin:2px;text-align:left;">
<label for="txtPassword">Password</label>
<input type="password" id="txtPassword" value="{{Password}}" />
</div>

ÍêÕûµÄ´úÂë¿ÉÒÔ´Ó¸ø¶¨µÄÏÂÔØÁ´½ÓÖеõ½¡£

ÈçºÎÔËÐдúÂë

ÔËÐиôúÂë±È½Ï¼òµ¥£¬ÐèÒªÔÚÄãϲ»¶µÄWeb·þÎñÆ÷ÉÏ´´½¨Ò»¸öWebÓ¦Óã¬ÏÂÃæÒÔIISΪÀýÀ´ËµÃ÷¡£

Ê×ÏÈÔÚĬÈÏÕ¾µãÖÐÐÂÔöÒ»¸öWebÓ¦ÓÃ.

È»ºóÉèÖñØÌîÐÅÏ¢£º±ðÃû£¬ÎïÀí·¾¶£¬Ó¦Óóأ¬Óû§ÈÏÖ¤ÐÅÏ¢£¬µã»÷OK¡£

×îºó¶¨Î»µ½WebÓ¦ÓõÄÄÚÈÝĿ¼£¬ä¯ÀÀÄãÏë´ò¿ªµÄHTMLÒ³Ãæ¼´¿É¡£

ÅÜÔÚ·þÎñÆ÷ÀïÊDZØÒªµÄ£¬ÒòΪ´úÂë¼ÓÔØ´Ó´æ´¢ÓÚÍⲿÎļþÖеÄÊÓͼ£¬ä¯ÀÀÆ÷²»»áÔÊÐíÎÒÃǵĴúÂëÔÚ·ÇËÞÖ÷·þÎñÆ÷»·¾³ÏÂÖ´ÐС£µ±È»Èç¹ûÄãʹÓÃVisual StudioÄÇôֱ½ÓÔÚÄ¿±êhtmlÎļþÉÏÓÒ¼ü£¬Ñ¡Ôñ¡®View In Browser¡¯¼´¿É¡£

ä¯ÀÀÆ÷Ö§³Ö

´ó²¿·ÖµÄÏÖ´úä¯ÀÀÆ÷¶¼Ö§³Ö±¾´úÂë¡£Õë¶ÔIE8¼°ÒÔϵÄä¯ÀÀÆ÷£¬ÓÐÒ»·Ýµ¥¶ÀµÄ´úÂëÀ´Ö§³Ö£¬µ«ºÜ²»ÐÒ£¬Õâ·Ý´úÂëÔ¶¶àÓÚ100ÐС£Òò´ËÕâ´úÂë²»Êǰٷְٿçä¯ÀÀÆ÷¼æÈݵģ¬ËùÒÔµ±Äã¾ö¶¨ÔÚÏîÄ¿ÖÐʹÓÃʱÐèÒª¶Ô´úÂë½øÐÐ΢µ÷¡£

ÐËȤµã

This example demonstratesÕâ¸öʾÀýÏòÎÒÃÇչʾÁ˶ÔÓڷdz£Ã÷È·µØÐèÇóÀ´Ëµ£¬ÕæÃ»±ØÒªÈ«²¿Ê¹ÓÃjs¿âºÍ¿ò¼ÜÀ´ÊµÏÖ¡£WebÓ¦ÓÃÊÇ×ÊÔ´Ãܼ¯Ð͵ģ¬×îºÃֻʹÓñØÒªµÄ´úÂë¶ø¶ªµôÆäËû¶àÓಿ·Ö¡£

ĿǰµÄ´úÂëÄÜ×öµÄ¾ÍÕâЩÁË¡£Ã»ÓÐÖîÈçWeb·þÎñµ÷Ó㬶¯Ì¬Ê¼þ°ó¶¨¹¦Äܵġ£ºÜ¿ìÎÒ»áÌṩ֧³Ö¸ü¶àÌØÐÔµÄÉý¼¶°æ±¾¡£

   
2313 ´Îä¯ÀÀ       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Ó¦Óÿª·¢