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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
±àд¿É²âÊÔµÄJavaScript´úÂë
 
×÷Õߣº²®ÀÖרÀ¸/Wing À´Ô´£º51CTO ·¢²¼ÓÚ2016-12-16
  3397  次浏览      27
 

ÎÞÂÛÎÒÃÇʹÓúÍNodeÅäºÏÔÚÒ»ÆðµÄ²âÊÔ¿ò¼Ü£¬ÀýÈçMocha»òÕßJasmine£¬»¹ÊÇÔÚÏñPhantomJSÕâÑùµÄÎÞÍ·ä¯ÀÀÆ÷ÖÐÔËÐÐÒÀÀµÓÚDOMµÄ²âÊÔ£¬ºÍÒÔǰÏà±È£¬ÎÒÃÇÓиüºÃµÄ·½Ê½À´¶ÔJavaScript½øÐе¥Ôª²âÊÔ¡£

È»¶ø£¬Õâ²¢²»Òâζ×ÅÎÒÃÇÒª²âÊԵĴúÂë¾ÍÏñÎÒÃǵŤ¾ßÄÇÑùÈÝÒ×!×éÖ¯ºÍ±àдÒ×ÓÚ²âÊԵĴúÂëÐèÒª»¨·ÑһЩ¾«Á¦ºÍ²¢¶ÔÆä½øÐй滮£¬µ«ÊÇÔÚº¯Êýʽ±à³ÌµÄÆô·¢Ï£¬ÎÒÃÇ·¢ÏÖÁËһЩģʽ£¬µ±ÎÒÃÇÐèÒª²âÊÔÎÒÃǵĴúÂëʱ£¬ÕâЩģʽ¿ÉÒÔ°ïÖúÎÒÃDZÜÃâÄÇЩ¡°¿Ó¡±¡£ÔÚÕâÆªÎÄÕÂÖУ¬ÎÒÃÇ»á²é¿´Ò»Ð©ÓÐÓõÄСÌùÊ¿ºÍģʽ£¬À´°ïÖúÎÒÃÇÔÚJavaScriptÖбàд¿É²âÊԵĴúÂë¡£

±£³ÖÒµÎñÂß¼­ºÍÏÔʾÂß¼­·ÖÀë

¶ÔÓÚ»ùÓÚJavaScriptµÄä¯ÀÀÆ÷Ó¦ÓóÌÐòÀ´Ëµ£¬ÆäÖÐÒ»ÏîÖ÷Òª¹¤×÷¾ÍÊǼàÌýÖÕ¶ËÓû§´¥·¢µÄDOMʼþ£¬È»ºóͨ¹ýÔËÐÐһЩҵÎñÂß¼­²¢ÔÚÒ³ÃæÉÏÏÔʾ½á¹û£¬ÒԴ˶ÔÓû§×ö³ö·´À¡¡£ÔÚ½¨Á¢DOMʼþ¼àÌýÆ÷µÄµØ·½£¬ÓÐʱ»áÓÕ»óÄã±àдһ¸öÄäÃûº¯ÊýÀ´Íê³ÉËùÓÐÕâЩ¹¤×÷¡£ÕâÑù´øÀ´µÄÎÊÌâÊÇΪÁ˲âÊÔÄäÃûº¯Êý£¬Äã²»µÃ²»È¥Ä£ÄâDOMʼþ¡£ÕâÑù²»½ö»áÔö¼Ó´úÂëÐÐÊý£¬¶øÇÒ»áÔö¼Ó²âÊÔÔËÐеÄʱ¼ä¡£

ÓëÖ®Ïà·´£¬±àдһ¸öÓÐÃû×ֵĺ¯Êý£¬È»ºó½«Æä´«¸øÊ¼þ´¦ÀíÆ÷¡£Í¨¹ýÕâÖÖ·½Ê½£¬Äã¿ÉÒÔÖ±½ÓÕë¶ÔÕâ¸öÓÐÃû×ֵĺ¯Êý±àд²âÊÔÓÃÀý£¬¶ø²»ÓÃÈ¥´¥·¢Ò»¸ö¼ÙµÄDOMʼþ¡£

Õâ²»½ö½ö¿ÉÒÔÓ¦Óõ½DOMÉÏ¡£ÔÚä¯ÀÀÆ÷ºÍNodeÉϵĺܶàAPI£¬¶¼±»Éè¼Æ³É´¥·¢ºÍ¼àÌýʼþ£¬»òÕߵȴýÆäËüÀàÐ͵ÄÒì²½¹¤×÷Íê³É¡£Æ¾¾­Ñé˵£¬Èç¹ûÄã±àдÁË´óÁ¿µÄÄäÃû»Øµ÷º¯Êý£¬ÄÇôÄãµÄ´úÂë¿ÉÄܲ»»áÈÝÒ×±»²âÊÔ¡£

    // hard to test 
$('button').on('click', () => {
$.getJSON('/path/to/data')
.then(data => {
$('#my-list').html('results: ' + data.join(', '));
});
});

// testable; we can directly run fetchThings to see if it
// makes an AJAX request without having to trigger DOM
// events, and we can run showThings directly to see that it
// displays data in the DOM without doing an AJAX request
$('button').on('click', () => fetchThings(showThings));

function fetchThings(callback) {
$.getJSON('/path/to/data').then(callback);
}

function showThings(data) {
$('#my-list').html('results: ' + data.join(', '));
}

¶ÔÒì²½´úÂëʹÓûص÷»òÕßPromise

ÔÚÉÏÊöµÄʾÀý´úÂëÖУ¬ÎÒÃǾ­¹ýÖØ¹¹µÄº¯ÊýfetchThings»áÔËÐÐÒ»¸öAJAXÇëÇó£¬ÒÔÒì²½µÄ·½Ê½Íê³ÉÁ˴󲿷ֹ¤×÷¡£ÕâÒâζ×ÅÎÒÃDz»ÄÜÔËÐк¯Êý²¢²âÊÔËüÊÇ·ñ°´ÕÕÎÒÃÇÔ¤ÆÚµÄÄÇÑùÔËÐУ¬ÒòΪÎÒÃDz»ÖªµÀËüʲôʱºòÔËÐÐÍê¡£

½â¾öÕâ¸öÎÊÌâ×î³£¼ûµÄ·½·¨£¬ÊÇÏòº¯ÊýÖд«µÝÒ»¸ö»Øµ÷º¯Êý×÷Ϊ²ÎÊý£¬×÷ΪÒì²½µ÷Óá£ÕâÑù£¬ÔÚÄãµÄµ¥Ôª²âÊÔÖУ¬Äã¿ÉÒÔÔÚ´«µÝµÄ»Øµ÷º¯ÊýÖÐÔËÐÐһЩ¶ÏÑÔ¡£

ÁíÍâÒ»ÖÖ³£¼û²¢ÇÒÔ½À´Ô½Á÷ÐеÄ×éÖ¯Òì²½´úÂë·½·¨£¬ÊÇʹÓÃPromise APIµÄ·½Ê½¡£ÐÒÔ˵ÄÊÇ£¬$.ajaxºÍÆäËü´ó²¿·ÖjQueryµÄÒì²½º¯ÊýÒѾ­·µ»ØÁËPromise¶ÔÏó£¬Òò´ËËüÒѾ­º­¸ÇÁ˴󲿷ֳ£¼ûµÄÓÃÀý¡£

    // ºÜÄѲâÊÔ£»ÎÒÃDz»ÖªµÀAJAXÇëÇó»áÔËÐж೤ʱ¼ä 

function fetchData() {
$.ajax({ url: '/path/to/data' });
}

//¿É²âÊԵģ»ÎÒÃÇ´«ÈëÒ»¸ö»Øµ÷º¯Êý£¬È»ºóÔÚÆäÖÐÔËÐжÏÑÔ

function fetchDataWithCallback(callback) {
$.ajax({
url: '/path/to/data',
success: callback,
});
}

//ͬÑù¿É²âÊԵģºÔÚ·µ»ØµÄPromise½âÎöÍêºó£¬ÎÒÃÇ¿ÉÒÔÔËÐжÏÑÔ

function fetchDataWithPromise() {
return $.ajax({ url: '/path/to/data' });
}

±ÜÃ⸱×÷ÓÃ

Òª±àдÄÇЩʹÓòÎÊý²¢ÇÒ·µ»ØÖµ½ö½öÒÀÀµÄÇЩ²ÎÊýµÄº¯Êý£¬¾ÍÏñ½«Êý×Ö´«ÈëÊýѧ¹«Ê½£¬È»ºóÈ¡µÃ½á¹û¡£Èç¹ûÄãµÄº¯ÊýÒÀÀµÓÚһЩÍⲿµÄ״̬(ÀýÈçÀàʵÀýµÄÊôÐÔ»òÕßijЩÎļþµÄÄÚÈÝ)£¬ÄÇôÄãÔÚ²âÊÔÕâ¸öº¯Êý֮ǰ£¬¾Í²»µÃ²»È¥ÉèÖÃһЩ״̬£¬ÔÚ²âÊÔÓÃÀýÖÐÐèÒª¸ü¶àµÄÉèÖá£Äã²»µÃ²»È¥ÈÏΪÄÇЩÕýÔÚÔËÐеĴúÂë²»»áÐÞ¸Äͬһ¸öµÄ״̬¡£

ͬÑù£¬ÄãÐèÒª±ÜÃâ±àдÄÇЩ»áÐÞ¸ÄÍⲿ״̬µÄº¯Êý£¬ÀýÈçÏòÎļþдÈëÄÚÈÝ»òÕßÏòÊý¾Ý¿â±£´æÊý¾Ý¡£Õâ»á±ÜÃâһЩ¸±×÷Óã¬À´Ó°ÏìÄã²âÊÔÆäËû´úÂëµÄÄÜÁ¦¡£Ò»°ãÀ´Ëµ£¬×îºÃÊǽ«¸±×÷ÓúʹúÂë¿ØÖÆÔÚÒ»Æð£¬Èá°±íÃæ»ý¡±¾¡¿ÉÄÜС¡£¶ÔÓÚÀàºÍ¶ÔÏóʵÀýÀ´Ëµ£¬Àà·½·¨µÄ¸±×÷ÓÃÓ¦¸Ã±»ÏÞÖÆÔÚ±»²âÊÔµÄÀàʵÀýµÄ·¶Î§ÄÚ¡£

    // ºÜÄѲâÊÔ£»ÎÒÃDz»µÃ²»ÉèÖÃÒ»¸öglobalListOfCars¶ÔÏóºÍÒ»¸öÃûΪ#list-of-modelsµÄDOM½á¹¹£¬È»ºó²ÅÄܲâÊÔÕâ¶Î´úÂë 

function processCarData() {
const models = globalListOfCars.map(car => car.model);
$('#list-of-models').html(models.join(', '));
}

// ÈÝÒײâÊÔ£»ÎÒÃÇ´«µÝÒ»¸ö²ÎÊýÈ»ºó²âÊÔËüµÄ·µ»ØÖµ£¬¶ø²»ÐèÒªÉèÖÃÈκÎÈ«¾Ö±äÁ¿»òÕß¼ì²éÈκÎDOM½á¹û

function buildModelsString(cars) {
const models = cars.map(car => car.model);
return models.join(',');
}

ʹÓÃÒÀÀµ×¢Èë

ÔÚº¯ÊýÖУ¬ÓÐÒ»ÖÖͨÓõÄģʽ£¬¿ÉÒÔÓÃÀ´½µµÍ¶ÔÍⲿ״̬µÄʹÓã¬Õâ¾ÍÊÇÒÀÀµ×¢Èë ¡ª¡ª ½«º¯ÊýµÄËùÓÐÍⲿÐèÒª¶¼Í¨¹ýº¯Êý²ÎÊýµÄ·½Ê½´«µÝ¸øº¯Êý¡£

    // ÒÀÀµÓÚÒ»¸öÍⲿ״̬Êý¾ÝÁ¬½ÓʵÀý£»ºÜÄѲâÊÔ 

function updateRow(rowId, data) {
myGlobalDatabaseConnector.update(rowId, data);
}

// ½«Êý¾Ý¿âÁ¬½ÓʵÀý×÷Ϊ²ÎÊý´«µÝ¸øº¯Êý£»ºÜÈÝÒײâÊÔ¡£

function updateRow(rowId, data, databaseConnector) {
databaseConnector.update(rowId, data);
}

ʹÓÃÒÀÀµ×¢ÈëµÄÒ»¸öÖ÷ÒªºÃ´¦£¬ÊÇÄã¿ÉÒÔÔÚµ¥Ôª²âÊÔÖд«Èëmock¶ÔÏó£¬ÕâÑù¾Í²»»áµ¼ÖÂÕæµÄ¸±×÷ÓÃ(ÔÚÕâ¸öÀý×ÓÖУ¬¾ÍÊǸüÐÂÊý¾Ý¿âÐÐ)£¬ÄãÖ»ÐèÒª¶ÏÑÔÄãµÄmock¶ÔÏóÊǰ´ÕÕÆÚÍûµÄ·½Ê½ÔËÐм´¿É¡£

Ϊÿһ¸öº¯ÊýÉèÖÃÒ»¸öΨһµÄÄ¿µÄ

½«³¤º¯Êý·Ö½â³ÉһϵÁÐСµÄ¡¢µ¥Ò»Ö°ÔðµÄº¯Êý¡£ÕâÑùÎÒÃÇ¿ÉÒÔ¸üÈÝÒ×µÄÈ¥²âÊÔÿһ¸öº¯ÊýÊÇ·ñÊÇÕýÈ·µÄ£¬¶ø²»ÔÙÏ£ÍûÒ»¸ö´óº¯ÊýÔÚ·µ»Ø½á¹û֮ǰ¾ÍÕýÈ·µÄ×öÁËËùÓеÄÊÂÇé¡£

ÔÚº¯Êýʽ±à³ÌÖУ¬½«¼¸¸öµ¥Ò»Ö°ÔðµÄº¯ÊýÆ´ÔÚÒ»ÆðµÄÐÐΪ³Æ×÷¡°×éºÏ¡±¡£Underscore.jsÉõÖÁÓÐÒ»¸öÃûΪ_.composeµÄº¯Êý£¬Ëü½«Ò»¸öº¯ÊýÁбíÖеĺ¯Êý´®ÔÚÒ»Æð£¬½«Ã¿Ò»º¯ÊýµÄ·µ»Ø½á¹û×÷ΪÊäÈë´«µÝ¸øÏÂÒ»¸öº¯Êý¡£

    // ºÜÄѲâÊÔ 

function createGreeting(name, location, age) {
let greeting;
if (location === 'Mexico') {
greeting = '!Hola';
} else {
greeting = 'Hello';
}

greeting += ' ' + name.toUpperCase() + '! ';

greeting += 'You are ' + age + ' years old.';

return greeting;
}

// ºÜÈÝÒײâÊÔ

function getBeginning(location) {
if (location === 'Mexico') {
return '?Hola';
} else {
return 'Hello';
}
}

function getMiddle(name) {
return ' ' + name.toUpperCase() + '! ';
}

function getEnd(age) {
return 'You are ' + age + ' years old.';
}

function createGreeting(name, location, age) {
return getBeginning(location) + getMiddle(name) + getEnd(age);
}

²»Òª¸Ä±ä²ÎÊý

ÔÚJavaScriptÖУ¬Êý×éºÍ¶ÔÏ󴫵ݵÄÊÇÒýÓ㬶ø·ÇÖµ£¬Òò´ËËüÃÇÊǿɱäµÄ¡£ÕâÒâζ×ŵ±Ä㽫¶ÔÏó»òÕßÊý×é×÷Ϊ²ÎÊý´«µÝ¸øº¯Êýʱ£¬ÄãµÄ´úÂëºÍʹÓÃÄã´«µÝµÄ¶ÔÏó»òÊý×éµÄº¯Êý£¬¶¼ÓÐÄÜÁ¦È¥ÐÞ¸ÄÄÚ´æÖÐͬһ¸öÊý×é»òÕß¶ÔÏó¡£ÕâÒâζ×ŵ±Äã²âÊÔÄã×Ô¼ºµÄ´úÂëʱ£¬Äã±ØÐëÐÅÈÎËùÓÐÄãµ÷Óõĺ¯ÊýÖУ¬Ã»ÓÐÈκκ¯Êý»áÐÞ¸ÄÄãµÄ¶ÔÏó¡£Ã¿µ±ÄãÌí¼ÓһЩеĿÉÒÔÐÞ¸Äͬһ¸ö¶ÔÏóµÄ´úÂëʱ£¬¸ú×Ù¶ÔÏóÓ¦¸ÃÊÇʲôÑù×Ӿͻá±äµÃÔ½À´Ô½À§ÄÑ£¬´Ó¶ø¸üÄÑÈ¥²âÊÔËüÃÇ¡£

Ïà·´£¬µ±ÄãÓÐÒ»¸öº¯ÊýÐèҪʹÓöÔÏó»òÕßÊý×éʱ£¬ÄãÓ¦¸ÃÔÚ´úÂëÖжԴý¶ÔÏó»òÕßÊý×é¾ÍÏñËüÃÇÊÇÖ»¶ÁµÄ¡£Äã¿ÉÒÔ¸ù¾ÝÐèÒª´´½¨ÐµĶÔÏó»òÕßÊý×飬Ȼºó¶ÔÆëÌî³ä¡£»òÕߣ¬Ê¹ÓÃUndersocre»òÕßLodashÈ¥¶Ô´«ÈëµÄ¶ÔÏó»òÕßÊý×é×öÒ»¸ö¿½±´£¬È»ºóÔÙ¶ÔÆë½øÐвÙ×÷¡£¸üºÃµÄÑ¡ÔñÊÇ£¬Ê¹ÓÃһЩÏñImmutable.jsÕâÑùµÄ¹¤¾ß£¬È¥´´½¨Ö»¶ÁµÄÊý¾Ý½á¹¹¡£

    // ÐÞ¸ÄÁË´«ÈëµÄ¶ÔÏó 

function upperCaseLocation(customerInfo) {
customerInfo.location = customerInfo.location.toUpperCase();
return customerInfo;
}

// ·µ»ØÁËÒ»¸öеĶÔÏó

function upperCaseLocation(customerInfo) {
return {
name: customerInfo.name,
location: customerInfo.location.toUpperCase(),
age: customerInfo.age
};
}

ÔÚ±àÂë֮ǰÏÈд²âÊÔ

ÔÚ±àÂë֮ǰÏÈдµ¥Ôª²âÊԵĹý³Ì±»³Æ×÷²âÊÔÇý¶¯¿ª·¢(TDD)¡£´óÁ¿µÄ¿ª·¢Õß·¢ÏÖTDD·Ç³£ÓÐÓá£

ͨ¹ýÏȱàд²âÊÔÓÃÀý£¬Äã¾ÍÇ¿ÆÈ×Ô¼º´ÓʹÓÃÄã´úÂëµÄ¿ª·¢Õ߽ǶÈÀ´¿¼ÂÇÄãÒª±©Â¶µÄAPI£¬Ëü»¹°ïÖúÄãÈ·±£ÄãÖ»»á±àд×ã¹»µÄ´úÂëÀ´Âú×ã²âÊÔÓÃÀýµÄÒªÇ󣬶ø²»Òª¶Ô½â¾ö·½°¸¡°¹ý¶ÈÊ©¹¤¡±£¬´Ó¶ø´øÀ´²»±ØÒªµÄ¸´ÔÓÐÔ¡£

ÔÚʵ¼ùÖУ¬TDD×÷ΪһÌõ¼ÍÂÉ£¬Òª¸²¸ÇËùÓеĴúÂë¸Ä¶¯¿ÉÄÜ»á±È½ÏÀ§ÄÑ¡£µ«Êǵ±Ëü¿´ÉÏÈ¥ÖµµÃ³¢ÊÔµÄʱºò£¬Õâ¾ÍÊÇÒ»¸öºÜºÃµÄ·½Ê½À´±£Ö¤ÄãµÄËùÓдúÂë¶¼ÊǿɲâÊԵġ£

×ܽá

ÔÚ±àдºÍ²âÊÔ¸´ÔÓµÄJavaScriptÓ¦ÓõÄʱºò£¬ÎÒÃǶ¼ÖªµÀÓÐһЩºÜÈÝÒ×Óöµ½µÄ¡°ÏÝÚ塱£¬µ«ÎÒÏ£Íûͨ¹ýÕâЩÌùÊ¿ºÍÌáÐÑ£¬¿ÉÒÔÈÃÎÒÃǵĴúÂ뾡Á¿¼òµ¥ºÍº¯Êý»¯£¬ÎÒÃÇ¿ÉÒÔ×öµ½ÈòâÊÔ¸²¸ÇÂʺܸߣ¬ÈÃÕûÌåµÄ´úÂ븴ÔÓÐԺܵÍ!

 

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