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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÔÚNode.jsÖп´JavaScriptµÄÒýÓÃ
 
À´Ô´£º51CTO ·¢²¼ÓÚ 2017-4-19
  2013  次浏览      27
 

ÔçÆÚѧϰ Node.js µÄʱºò (2011-2012)£¬ÓÐͦ¶àÊÇ´Ó PHP ת¹ýÀ´µÄ£¬µ±Ê±Óв¿·ÖÈ˶ÔÓÚ Node.js ±à¼­Íê´úÂëÐèÒªÖØÆôһϱíʾÂé·³£¨PHP²»ÐèÒªÕâ¸ö¹ý³Ì£©£¬ÓÚÊÇÉçÇøÀïµÄÅóÓѾͿªÊ¼ÌᳫʹÓà node-supervisor Õâ¸öÄ£¿éÀ´Æô¶¯ÏîÄ¿£¬¿ÉÒԱ༭Íê´úÂëÖ®ºó×Ô¶¯ÖØÆô¡£²»¹ýÏà¶ÔÓÚ PHP ¶øÑÔÒÀ¾É²»¹»·½±ã£¬ÒòΪ Node.js ÔÚÖØÆôÒÔºó£¬Ö®Ç°µÄÉÏÏÂÎͼ¶ªÊ§ÁË¡£

ËäÈ»¿ÉÒÔͨ¹ý½« session Êý¾Ý±£´æÔÚÊý¾Ý¿â»òÕß»º´æÖÐÀ´¼õÉÙÖØÆô¹ý³ÌÖеÄÊý¾Ý¶ªÊ§£¬²»¹ýÈç¹ûÊÇÔÚÉú²úµÄÇé¿öÏ£¬¸üдúÂëµÄÖØÆô¼ä϶ÊÇû·¨´¦ÀíÇëÇóµÄ£¨PHP¿ÉÒÔ£¬ÁíÍâÄǸöʱºò Node.js »¹Ã»ÓÐ cluster£©¡£ÓÉÓÚÕâ·½ÃæµÄÎÊÌ⣬¼ÓÉϱ¾ÈËÊÇ´Ó PHP תµ½ Node.js µÄ£¬ÓÚÊÇ´ÓÄÇʱ¿ªÊ¼Ë¼¿¼£¬ÓÐûÓа취¿ÉÒÔÔÚ²»ÖØÆôµÄÇé¿öÏÂÈȸüРNode.js µÄ´úÂë¡£

×ʼ°ÑÄ¿¹âÃéÏòÁË require Õâ¸öÄ£¿é¡£Ïë·¨ºÜ¼òµ¥£¬ÒòΪ Node.js ÖÐÒýÈëÒ»¸öÄ£¿é¶¼ÊÇͨ¹ý require Õâ¸ö·½·¨¼ÓÔØµÄ¡£ÓÚÊǾͿªÊ¼Ë¼¿¼ require Äܲ»ÄÜÔÚ¸üдúÂëÖ®ºóÔÙ´Î require һϡ£³¢ÊÔÈçÏ£º

a.js

var express = require('express');

var b = require('./b.js');

var app = express();

app.get('/', function (req, res) {

b = require('./b.js');

res.send(b.num);

});

app.listen(3000);

b.js

exports.num = 1024;

Á½¸ö JS ÎļþдºÃÖ®ºó£¬´Ó a.js Æô¶¯£¬Ë¢ÐÂÒ³Ãæ»áÊä³ö b.js ÖÐµÄ 1024£¬È»ºóÐÞ¸Ä b.js ÎļþÖе¼³öµÄÖµ£¬ÀýÈçÐÞ¸ÄΪ 2048¡£ÔÙ´ÎË¢ÐÂÒ³ÃæÒÀ¾ÉÊÇÔ­±¾µÄ 1024¡£

ÔÙ´ÎÖ´ÐÐÒ»´Î require ²¢Ã»ÓÐˢдúÂë¡£require ÔÚÖ´ÐеĹý³ÌÖмÓÔØÍê´úÂëÖ®ºó»á°ÑÄ£¿éµ¼³öµÄÊý¾Ý·ÅÔÚ require.cache ÖС£require.cache ÊÇÒ»¸ö { } ¶ÔÏó£¬ÒÔÄ£¿éµÄ¾ø¶Ô·¾¶Îª key£¬¸ÃÄ£¿éµÄÏêϸÊý¾ÝΪ value¡£ÓÚÊDZ㿪ʼ×öÈçϳ¢ÊÔ£º

a.js

var path = require('path');

var express = require('express');

var b = require('./b.js');

var app = express();

app.get('/', function (req, res) {

if (true) { // ¼ì²éÎļþÊÇ·ñÐÞ¸Ä

flush();

}

res.send(b.num);

});

function flush() {

delete require.cache[path.join(__dirname, './b.js')];

b = require('./b.js');

}

app.listen(3000);

ÔÙ´Î require ֮ǰ£¬½« require Ö®ÉϹØÓÚ¸ÃÄ£¿éµÄ cache ÇåÀíµôºó£¬ÓÃ֮ǰµÄ·½·¨ÔٴβâÊÔ¡£½á¹û·¢ÏÖ£¬¿ÉÒԳɹ¦µÄˢРb.js µÄ´úÂ룬Êä³öÐÂÐ޸ĵÄÖµ¡£

Á˽⵽Õâ¸öµãºó£¬¾ÍÏëͨ¹ý¸ÃÔ­ÀíʵÏÖÒ»¸öÎÞÖØÆôÈȸüа汾µÄ node-supervisor¡£ÔÚ·â×°Ä£¿éµÄ¹ý³ÌÖУ¬³öÓÚÇ黳µÄÔ­Òò£¬¿¼ÂÇÌṩһ¸öÀàËÆ PHP ÖÐ include µÄº¯ÊýÀ´´úÌæ require È¥ÒýÈëÒ»¸öÄ£¿é¡£Êµ¼ÊÄÚ²¿ÒÀ¾ÉÊÇʹÓà require È¥¼ÓÔØ¡£ÒÔb.jsΪÀý£¬Ô­±¾µÄд·¨¸ÄΪ var b = include(¡®./b¡¯)£¬ÔÚÎļþ b.js ¸üÐÂÖ®ºó include ÄÚ²¿¿ÉÒÔ×Ô¶¯Ë¢Ð£¬ÈÃÍâÃæÄõ½×îеĴúÂë¡£

µ«ÊÇʵ¼ÊµÄ¿ª·¢¹ý³ÌÖУ¬ÕâÑùºÜ¿ì¾ÍÅöµ½ÁËÎÊÌâ¡£ÎÒÃÇÏ£ÍûµÄ´úÂë¿ÉÄÜÊÇÕâÑù£º

web.js

var include = require('./include');

var express = require('express');

var b = include('./b.js');

var app = express();

app.get('/', function (req, res) {

res.send(b.num);

});

app.listen(3000);

µ«°´ÕÕÕâ¸öÄ¿±ê·â×°includeµÄʱºò£¬ÎÒÃÇ·¢ÏÖÁËÎÊÌâ¡£ÎÞÂÛÎÒÃÇÔÚinclude.jsÄÚ²¿ÖÐÈçºÎʵÏÖ£¬¶¼²»ÄÜÏñ¿ªÊ¼ÄÇÑùÄõ½Ð嵀 b.num¡£

¶Ô±È¿ªÊ¼µÄ´úÂ룬ÎÒÃÇ·¢ÏÖÎÊÌâ³öÔÚÉÙÁË b = xx¡£Ò²¾ÍÊÇ˵ÕâÑùд²Å¿ÉÒÔ£º

web.js

var include = require('./include');

var express = require('express');

var app = express();

app.get('/', function (req, res) {

var b = include('./b.js');

res.send(b.num);

});

app.listen(3000);

Ð޸ijÉÕâÑù£¬¾Í¿ÉÒÔ±£Ö¤Ã¿´ÎÄÜ¿ÉÒÔÕýÈ·µÄˢе½×îеĴúÂ룬²¢ÇÒ²»ÓÃÖØÆôʵÀýÁË¡£¶ÁÕßÓÐÐËȤµÄ¿ÉÒÔÑо¿Õâ¸öincludeÊÇÔõôʵÏֵ쬱¾ÎľͲ»ÉîÈëÌÖÂÛÁË£¬ÒòΪÕâ¸ö¼¼ÇÉʹÓöȲ»¸ß£¬Ð´ÆðÆðÀ´²»ÊǺÜÓÅÑÅ[1]£¬·´¶øÕâÆäÖÐÓÐÒ»¸ö¸üÖØÒªµÄÎÊÌ⡪¡ªJavaScriptµÄÒýÓá£

JavaScript µÄÒýÓÃÓ봫ͳÒýÓõÄÇø±ð

ÒªÌÖÂÛÕâ¸öÎÊÌ⣬ÎÒÃÇÊ×ÏÈÒªÁ˽â JavaScript µÄÒýÓÃÓÚÆäËûÓïÑÔÖеÄÒ»¸öÇø±ð£¬ÔÚ C++ ÖÐÒýÓÿÉÒÔÖ±½ÓÐÞ¸ÄÍⲿµÄÖµ£º

#include <iostream>

using namespace std;

void test(int &p) // ÒýÓô«µÝ {

p = 2048;

}

int main() {

int a = 1024;

int &p = a; // ÉèÖÃÒýÓÃpÖ¸Ïòa

test(p); // µ÷Óú¯Êý

cout << "p: " << p << endl; // 2048

cout << "a: " << a << endl; // 2048

return 0;

}

¶øÔÚ JavaScript ÖУº

var obj = { name: 'Alan' };

function test1(obj) {

obj = { hello: 'world' }; // ÊÔͼÐÞ¸ÄÍⲿobj

}

test1(obj);

console.log(obj); // { name: 'Alan' } // ²¢Ã»ÓÐÐ޸ĢÙ

function test2(obj) {

obj.name = 'world'; // ¸ù¾Ý¸Ã¶ÔÏóÐÞ¸ÄÆäÉϵÄÊôÐÔ

}

test2(obj);

console.log(obj); // { name: 'world' } // Ð޸ijɹ¦¢Ú

ÎÒÃÇ·¢ÏÖÓë C++ ²»Í¬£¬¸ù¾ÝÉÏÃæ´úÂë ¢Ù ¿ÉÖª JavaScript Öв¢Ã»Óд«µÝÒ»¸öÒýÓ㬶øÊÇ¿½±´ÁËÒ»¸öеıäÁ¿£¬¼´Öµ´«µÝ¡£¸ù¾Ý ¢Ú ¿ÉÖª¿½±´µÄÕâ¸ö±äÁ¿ÊÇÒ»¸ö¿ÉÒÔ·ÃÎʵ½¶ÔÏóÊôÐԵġ°ÒýÓá±£¨Ó봫ͳµÄ C++ µÄÒýÓò»Í¬£¬ÏÂÎÄÖÐÌáµ½µÄ JavaScript µÄÒýÓö¼ÊÇÕâÖÖÌØ±ðµÄÒýÓã©¡£ÕâÀïÐèÒª×ܽáÒ»¸öÈÆ¿ÚµÄ½áÂÛ£ºJavascript ÖоùÊÇÖµ´«µÝ£¬¶ÔÏóÔÚ´«µÝµÄ¹ý³ÌÖÐÊÇ¿½±´ÁËÒ»·ÝеÄÒýÓá£

ΪÁËÀí½âÕâ¸ö±È½ÏÞֿڵĽáÂÛ£¬ÈÃÎÒÃÇÀ´¿´Ò»¶Î´úÂ룺

var obj = {

data: {}

};

// data Ö¸Ïò obj.data

var data = obj.data;

console.log(data === obj.data); // true-->dataËù²Ù×÷µÄ¾ÍÊÇobj.data

data.name = 'Alan';

data.test = function () {

console.log('hi')

};

// ͨ¹ýdata¿ÉÒÔÖ±½ÓÐ޸ĵ½dataµÄÖµ

console.log(obj) // { data: { name: 'Alan', test: [Function] } }

data = {

name: 'Bob',

add: function (a, b) {

return a + b;

}

};

// dataÊÇÒ»¸öÒýÓã¬Ö±½Ó¸³Öµ¸øËü£¬Ö»ÊÇÈÃÕâ¸ö±äÁ¿µÈÓÚÁíÍâÒ»¸öÒýÓ㬲¢²»»áÐ޸ĵ½obj±¾Éí

console.log(data); // { name: 'Bob', add: [Function] }

console.log(obj); // { data: { name: 'Alan', test: [Function] } }

obj.data = {

name: 'Bob',

add: function (a, b) {

return a + b;

}

};

// ¶øÍ¨¹ýobj.data²ÅÄÜÕæÕýÐ޸ĵ½data±¾Éí

console.log(obj); // { data: { name: 'Bob', add: [Function] } }

ͨ¹ýÕâ¸öÀý×ÓÎÒÃÇ¿ÉÒÔ¿´µ½£¬data ËäÈ»ÏñÒ»¸öÒýÓÃÒ»ÑùÖ¸ÏòÁË obj.data£¬²¢ÇÒͨ¹ý data ¿ÉÒÔ·ÃÎʵ½ obj.data ÉϵÄÊôÐÔ¡£µ«ÊÇÓÉÓÚ JavaScript Öµ´«µÝµÄÌØÐÔÖ±½ÓÐÞ¸Ä data = xxx ²¢²»»áʹµÃ obj.data = xxx¡£

´ò¸ö±È·½×î³õÉèÖà var data = obj.data µÄʱºò£¬ÄÚ´æÖеÄÇé¿ö´ó¸ÅÊÇ£º

|   Addr   |  ÄÚÈÝ  | |----------|-------- | obj.data |  ÄÚ´æ1 |

| data | ÄÚ´æ1 |

ËùÒÔͨ¹ý data.xx ¿ÉÒÔÐÞ¸Ä obj.data µÄÄÚ´æ1¡£

È»ºóÉèÖà data = xxx£¬ÓÉÓÚ data ÊÇ¿½±´µÄÒ»¸öеÄÖµ£¬Ö»ÊÇÕâ¸öÖµÊÇÒ»¸öÒýÓã¨Ö¸ÏòÄÚ´æ1£©°ÕÁË¡£ÈÃËüµÈÓÚÁíÍâÒ»¸ö¶ÔÏó¾ÍºÃ±È£º

|   Addr   |  ÄÚÈÝ  | |----------|-------- | obj.data |  ÄÚ´æ1 |

| data | ÄÚ´æ2 |

Èà data Ö¸ÏòÁËеÄÒ»¿éÄÚ´æ2¡£

Èç¹ûÊÇ´«Í³µÄÒýÓã¨ÈçÉÏÎÄÖÐÌáµ½µÄ C++ µÄÒýÓã©£¬ÄÇô obj.data ±¾Éí»á±ä³ÉеÄÄÚ´æ2£¬µ« JavaScript ÖоùÊÇÖµ´«µÝ£¬¶ÔÏóÔÚ´«µÝµÄ¹ý³ÌÖп½±´ÁËÒ»·ÝеÄÒýÓá£ËùÒÔÕâ¸öп½±´µÄ±äÁ¿±»¸Ä±ä²¢²»Ó°ÏìÔ­±¾µÄ¶ÔÏó¡£

Node.js ÖÐµÄ module.exports Óë exports

ÉÏÊöÀý×ÓÖÐµÄ obj.data Óë data µÄ¹ØÏµ£¬¾ÍÊÇ Node.js ÖÐµÄ module.exports Óë exports Ö®¼äµÄ¹ØÏµ¡£ÈÃÎÒÃÇÀ´¿´¿´ Node.js ÖÐ require Ò»¸öÎļþʱµÄʵ¼Ê½á¹¹£º

function require(...) {

var module = { exports: {} };

((module, exports) => { // Node.js ÖÐÎļþÍⲿÆäʵ±»°üÁËÒ»²ã×ÔÖ´Ðеĺ¯Êý

// ÕâÖмäÊÇÄãÄ£¿éÄÚ²¿µÄ´úÂë.

function some_func() {};

exports = some_func;

// ÕâÑù¸³Öµ,exports±ã²»ÔÙÖ¸Ïòmodule.exports

// ¶ømodule.exportsÒÀ¾ÉÊÇ{}

module.exports = some_func;

// ÕâÑùÉèÖòÅÄÜÐ޸ĵ½Ô­±¾µÄexports

})(module, module.exports);

return module.exports;

}

ËùÒÔºÜ×ÔÈ»µÄ£º

console.log(module.exports === exports); // true

// ËùÒÔ exports Ëù²Ù×÷µÄ¾ÍÊÇ module.exports

Node.js ÖÐµÄ exports ¾ÍÊÇ¿½±´µÄÒ»·Ý module.exports µÄÒýÓá£Í¨¹ý exports ¿ÉÒÔÐÞ¸ÄNode.js µ±Ç°Îļþµ¼³öµÄÊôÐÔ£¬µ«ÊDz»ÄÜÐ޸ĵ±Ç°Ä£¿é±¾Éí¡£Í¨¹ý module.exports ²Å¿ÉÒÔÐ޸ĵ½Æä±¾Éí¡£±íÏÖÉÏÀ´Ëµ£º

exports = 1; // ÎÞЧ

module.exports = 1; // ÓÐЧ

ÕâÊǶþÕß±íÏÖÉϵÄÇø±ð£¬ÆäËû·½ÃæÓÃÆðÀ´¶¼Ã»Óвî±ð¡£ËùÒÔÄãÏÖÔÚÓ¦¸ÃÖªµÀдmodule.exports.xx = xxx; µÄÈËÆäʵÊǶàдÁËÒ»¸ömodule.¡£

¸ü¸´ÔÓµÄÀý×Ó

ΪÁËÔÙÁ·Ï°Ò»Ï£¬ÎÒÃÇÔÚÀ´¿´Ò»¸ö±È½Ï¸´ÔÓµÄÀý×Ó£º

var a = {n: 1};  

var b = a;

a.x = a = {n: 2};

console.log(a.x);

console.log(b.x);

°´ÕÕ¿ªÊ¼µÄ½áÂÛÎÒÃÇ¿ÉÒÔÒ»²½²½µÄÀ´¿´Õâ¸öÎÊÌ⣺

var a = {n: 1};   // ÒýÓÃaÖ¸ÏòÄÚ´æ1{n:1}

var b = a; // ÒýÓÃb => a => { n:1 }

ÄÚ²¿½á¹¹:

|   Addr  |     ÄÚÈÝ     | |---------|-------------|

| a | ÄÚ´æ1 {n:1} | | b | ÄÚ´æ1 |

¼ÌÐøÍùÏ¿´:

a.x = a = {n: 2};  //  (ÄÚ´æ1 ¶ø²»ÊÇ a ).x = ÒýÓà a = ÄÚ´æ2 {n:2}

a ËäÈ»ÊÇÒýÓ㬵«ÊÇ JavaScript ÊÇÖµ´«µÄÕâ¸öÒýÓã¬ËùÒÔ±»Ð޸IJ»Ó°ÏìÔ­±¾µÄµØ·½¡£

|    Addr   |          ÄÚÈÝ         | |-----------|-----------------------|

| 1) a | ÄÚ´æ2({n:2}) | | 2) ÄÚ´æ1.x | ÄÚ´æ2({n:2}) |

| 3) b | ÄÚ´æ1({n:1, x:ÄÚ´æ2}) |

ËùÒÔ×îºóµÄ½á¹û

a.x ¼´(ÄÚ´æ2).x ==> {n: 2}.x ==> undefined

b.x ¼´(ÄÚ´æ1).x ==> ÄÚ´æ2 ==> {n: 2}

×ܽá

JavaScrip tÖÐûÓÐÒýÓô«µÝ£¬Ö»ÓÐÖµ´«µÝ¡£¶ÔÏó£¨ÒýÓÃÀàÐÍ£©µÄ´«µÝÖ»ÊÇ¿½±´Ò»¸öеÄÒýÓã¬Õâ¸öеÄÒýÓÿÉÒÔ·ÃÎÊÔ­±¾¶ÔÏóÉϵÄÊôÐÔ£¬µ«ÊÇÕâ¸öеÄÒýÓñ¾ÉíÊÇ·ÅÔÚÁíÍâÒ»¸ö¸ñ×ÓÉϵÄÖµ£¬Ö±½ÓÍùÕâ¸ö¸ñ×Ó¸³ÐµÄÖµ£¬²¢²»»áÓ°ÏìÔ­±¾µÄ¶ÔÏó¡£±¾ÎÄ¿ªÍ·ËùÌÖÂÛµÄ Node.js ÈȸüÐÂʱÅöµ½µÄÒ²ÊÇÕâ¸öÎÊÌâ£¬Çø±ðÊǶÔÏó±¾Éí¸Ä±äÁË£¬¶øÔ­±¾¿½±´³öÀ´µÄÒýÓû¹Ö¸Ïò¾ÉµÄÄڴ棬ËùÒÔͨ¹ý¾ÉµÄÒýÓõ÷Óò»µ½Ðµķ½·¨¡£

Node.js ²¢Ã»ÓÐ¶Ô JavaScript Ê©¼ÓºÚħ·¨£¬ÆäÖеÄÒýÓÃÎÊÌâÒÀ¾ÉÊÇ JavaScript µÄÄÚÈÝ¡£Èç module.exports Óë exports ÕâÑùÒþ²ØÁËһЩϸ½ÚÈÝÒ×ʹÈËÎó»á£¬±¾ÖÊ»¹ÊÇ JavaScript µÄÎÊÌâ¡£

×¢[1]£º

ÀÏʵ˵£¬Ä£¿éÔÚº¯ÊýÄÚÉùÃ÷ÓеãÌ·ºÆÇ¿µÄ¸Ð¾õ¡£

°Ñ b = include(xxx) дÔÚµ÷ÓÃÄÚ²¿£¬»¹¿ÉÒÔͨ¹ýÉèÖóÉÖмä¼þ°ó¶¨ÔÚ¹«¹²µØ·½À´Ð´¡£

³ýÁËдÔÚµ÷ÓÃÄÚ²¿£¬Ò²¿ÉÒÔµ¼³öÒ»¸ö¹¤³§º¯Êý£¬Ã¿´ÎʹÓÃʱ b().num һϵ÷ÓÃÒ²¿ÉÒÔ¡£

»¹¿ÉÒÔͨ¹ýÖмä¼þµÄÐÎʽ°ó¶¨ÔÚ¿ò¼ÜµÄ¹«ÓöÔÏóÉÏ£¨È磺ctx.b = include(xxx)£©¡£

ҪʵÏÖÕâÑùµÄÈȸüбØÐëÔڼܹ¹ÉϾÍÒªÑϸñ±ÜÃâ¾É´úÂë±»ÒýÓõĿÉÄÜÐÔ£¬·ñÔòºÜÈÝÒ×д³öÄÚ´æÐ¹Â©µÄ´úÂë¡£

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