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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Preact¡ª¡ªÎÞÏ߶˻ҳµÄÇáÁ¿¼¶¿ª·¢·½°¸
 
 
  1726  次浏览      28
 2021-3-1 
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª½éÉÜÁËPreactÊÇʲô£¿PreactµÄºËÐÄ£¬Preact°´ÐèʹÓá£
±¾ÎÄÀ´×ÔÓÚ°¢ÀïÔÆ¿ª·¢ÕßÉçÇø,ÓÉ»ðÁú¹ûÈí¼þAnna±à¼­ÍƼö¡£

1¡¢Ç°ÑÔ

ReactÏÖÈç½ñÒѾ­³ÉΪǰ¶Ë¿ª·¢ÕßµÄÊ×Ñ¡¼¼ÊõÁË£¬ËüÌìÉúЯ´ø×Å×é¼þ»¯µÄÀíÄ²¢ÇÒÓµÓм«Ç¿µÄÉú̬£¬ÈçRedux,FluxµÈÊý¾Ý¹ÜÀí¹¤¾ß£¬Material-UI,MUI,Ant.DesignµÈUI×é¼þ£¬¶ÔÓÚÒ»¸öȫеĿØÖÆÌ¨ÏµÍ³£¬ÔÚ½ÅÊּܵĸ¨ÖúÏ£¬ÎÒÃÇ¿ÉÒÔ»¨·ÑºÜÉÙµÄʱ¼ä¾ÍÄÜͶÈëµ½ÒµÎñ¿ª·¢ÖС£

¶ÔÓÚÎÞÏß¶Ë£¬ReactÒ²Äܹ»ºÜºÃµÄÖ§³Ö£¬µ«ÊǶÔÓÚһЩÔËÓª»î¶¯Ò³ÃæÀ´Ëµ£¬´ó²¿·ÖÇé¿öÏÂʹÓÃkimiÊÇ¿ÉÒÔÓ¦¸¶µÄ£¬ÕâЩ»î¶¯Ò³¾ßÓÐÈçÏÂÌØµã£º

ʱЧÐÔÇ¿£¬ºÜ¶àÔËÓªÐèÇóÀ´µÄÌØ±ð¼±£¬ÍùÍùÊǼ´¿ª·¢¼´½»¸¶µÄ¡£

·ç¸ñ±ðÖ£¬»ù±¾ÉϻҳUIÎÞ·¨Í¨Ó㬵«ÊÇÓÐÒ»Ð©ÌØÀý£¬È磺Loading£¬Dialog£¬Toast£¬Tab¡£

Âß¼­¼òµ¥£¬»ù±¾ÎªÄÚÈÝչʾ£¬²»ÓÃд̫¶à£¬ÉõÖÁ²»ÐèҪдJavaScript¡£

µ«ÊǶÔÓÚÒÔÏÂÌØµãµÄ»î¶¯Ò³£¬Ê¹ÓÃkimi¾ÍÓÐЩÁ¦²»´ÓÐÄÁË¡£

ÄÚ¾ÛÐÔÇ¿£¬´ËÀà»î¶¯Óɶà¸öÒ³Ãæ¹²Í¬×é³É£¬¶à¸öÒ³ÃæÍ¨¹ýÌø×ªÐγɱջ·¡£

¶¯Ì¬ÄÚÈݶ࣬ÐèÒªµ÷Óöà¸ö½Ó¿Ú½øÐÐÒ³ÃæµÄ³ÊÏÖ¡£

Ò³ÃæÕ¹Ïַḻ£¬Ò³ÃæÉÏÓÐÐí¶àÐж¯µã£¬Ã¿¸öÐж¯µã¶ÔÓ¦Ò»¶ÎÒµÎñÂß¼­£¬¶àÒ³Ãæ¼äÏ໥¹ØÁª¡£

ÐèÇó±ä»¯Æµ·±£¬´ËÀà»î¶¯ÍùÍù±¸ÊܹØ×¢£¬ÐèÇóÔÚǰÆÚ²»¿ÉÄÜÍêÈ«Ã÷È·½çÏÞ£¬ÉÏÏߺóÒ²»á¸ù¾ÝÍâ½ç·´À¡ËæÊ±¸ü¸ÄÐèÇó¡£

¶ÔÓÚÉÏÊö»î¶¯Ò³¶øÑÔ£¬ÆäÒѾ­¿ÉÒÔ¿´×÷Ò»¸öÍêÕûµÄÖÐÐÍApplicationÁË£¬Èç¹û½ö½öʹÓÃkimi£¬ÔòÒòΪ״̬¶à£¬½»»¥¶à¶ø´æÔÚ´úÂëÖÊÁ¿²»ºÃ°Ñ¿Ø£¬ÔÚ²Ù×÷DOMÉÏ»¨·Ñ¶îÍ⾫Á¦£¬Ôì³ÉÏîÄ¿DelayµÄ·çÏÕ£¬Óɴ˿ɼû£¬¶ÔÓÚÕâÀà»î¶¯Ò³£¬ÎÒÃÇÓбØÒªÊ¹ÓÃһЩ¿âÀ´°ïÎÒÃǽâ¾öÎÊÌâÁË£¬React×Ô¼ºÌìȻһÌ×È«¼ÒͰ£¬Ð¯´øÁËPropType,Children,Synthetic Events£¨ºÏ³Éʼþ£©£¬ÕâЩ¶ÔÓÚWebÓ¦ÓÃÀ´Ëµ£¬ÒÀÈ»ÊÇ¿ÉÒԵ쬵«ÊǶÔÓڻҳÀ´Ëµ£¬»¹ÊÇÓÐÐ©ÖØÁË£¬ÓÚÊÇÒª°á³öPreactÁË£¬½ÓÏÂÀ´¼òµ¥µØ¶ÔËüÓÐÒ»¸öÁ˽⡣

PreactÊÇÒÔReactΪ±ê׼ʵÏÖµÄÒ»Ì׿⡣

Á½ÕßµÄAPI¼¸ºõÒ»Ö£¬Ç¨ÒÆÆðÀ´ºÜ·½±ã¡£

ÏÖÓÐÏîÄ¿¸ÄÔìÒ²ºÜÈÝÒ×£¬ÎÞ·ÇÊǸĸÄWebpack,BabelµÄÅäÖÃÎļþ¡£

ËüºÜС£¨Ñ¹Ëõºó3KB£©,Сµ½¿ÉÒÔÈÏΪËüÖ»ÊÇ½è¼øÁËReactµÄ˼Ï룬À´±ÜÃâÄãÊÖ¶¯²Ù×÷DOM¡£

ËüºÜ¿ì£¬±ÈReact,Vue¶¼¿ì£¬·Ç³£ÊʺÏÒÆ¶¯¶Ë¡£²Î¿¼

2¡¢Hello World

ÏÂÃæÊÇËüµÄÒ»¸ö¼òµ¥Ê¾Àý£¬Äã»á·¢ÏÖ¼¸ºõºÍReactһģһÑù£¬Ö»ÊÇÒýÈëµÄÎļþ·¢ÉúÁ˸ı䣬Ҳ¾ÍÊÇ˵¶ÔÓÚÏÖÓеÄÒ»¸öÒ³Ãæ£¬ÎÒÃÇ¿ÉÒÔÓÃPreactÖØ¹¹µôÔ­ÏȵÄDOM²Ù×÷¡£

import {h,render} from 'preact';

render((
<div>
<h1>Hello World</h1>
<button onClick={function(){console.log('hi')}}> Click Me </button>
</div>
),document.body);

3¡¢ºËÐÄÁ˽â

3.1 ´¦ÀíJSX

ÔÚ¿ª·¢Reactʱ£¬ÎÒÃǶ¼»áȥдJSX¶ø²»È¥Ð´Ô­ÉúµÄReact API£¬»Ø¹Ëһϣ¬ÎÒÃÇ¿´Ò»ÏÂJSX»á±»Babel·­Òë³Éʲô¡£

// ÕâÊÇÒ»¶ÎReactʾÀý´úÂë
class Demo extends React.Component {
render(){return (
<div className="active">
<ul></ul>
</div>
)}
}
//¾­¹ýBabelתÒëºó
_createClass(Demo, [{
key: "render",
value: function render() {
return React.createElement(
"div",
{ className: "active" },
React.createElement(
"ul",
null
)
);
}
}]);

ÎÒÃÇ¿´µ½´¦ÀíDOMµÄAPIΪReact.createElement£¬ÔÚPreactÀËüʹÓÃÁËhyperscriptÀ´´úÌæReact.createElementÕâ¸ö·½·¨£¬ËùÒÔÄãÐèÒª¸æËßBabelʹÓÃhÈ¥´¦Àí¡£

/{
"plugins": [
["transform-react-jsx", { "pragma":"h" }]
]
}

ÉõÖÁÄãÒ²¿ÉÒÔÕâô×ö¡£

import { h } from 'preact'

const React = {
createElement:h
}

3.2 ʼþ

PreactÖ»ÊǼòµ¥µØ¶Ôʼþ×öÁËÒ»²ã´¦Àí£¬ÎÒÃÇ¿´ËüµÄÔ´Âë±ã¿ÉÖªÏþ£¬ÎÒÃÇÔÚJSXÀïдµÄonClickÆäʵ×îÖÕÐγÉÁËaddEventListener('click')£¬ÓÉÓÚÆäÖ»ÊÇÔ­ÉúµÄʼþ°ó¶¨£¬ÕâÑù¸øÓèÎÒÃǵÄÁé»î¶È¸ü¸ß£¬Òƶ¯¶ËÍ·ÌÛµÄ300msÑÓʱºÍµã»÷´©Í¸ÎÊÌâÒ²¿ÉÒÔÓ­Èжø½â£¨fastclick£©¡£

else if ('o' === name[0] && 'n' === name[1]) {
var l = node._listeners || (node._listeners = {});
name = toLowerCase(name.substring(2));
if (value) {
if (!l[name]) node.addEventListener(name, eventProxy);
} else if (l[name]) node.removeEventListener(name, eventProxy);
l[name] = value;
}

4¡¢°´ÐèʹÓÃ

4.1 ¿´×öеÄÄ£°åäÖȾ·½Ê½

ÔÚǰ¶ËÓÐÐí¶àÖÐÄ£°åäÖȾ·½°¸£¬Èçjade(pug),mustache,ejs£¬ÎÒÃÇÒ²¿ÉÒÔʹÓÃJSXÓÃÀ´äÖȾ£¬Ïà±ÈÇ°Ãæ¼¸ÖÖ£¬JSXд·¨¼òµ¥£¬·Ç³£ÈÝÒס£¾Ù¸öÀý×Ó£ºÈç¹ûÎÒÃÇÒª¸ù¾Ýºó¶Ë·µ»ØµÄÒ»¶Î½±Æ·ÁбíäÖȾһ¸öÁÐ±í£¬ÓÃejs¿ÉÄÜ»áÊÇÏÂÃæÕâÑù£º

<ul>
<% lotteries.forEach(function(lottery){ %>
<% include lottery/show %>
<% }) %>
</ul>

µ«ÊÇʹÓÃPreact£¬ÎÒÃÇ¿ÉÒÔֻʹÓÃrender·½·¨£¬½áºÏJSXÓï·¨£¬À´×÷ΪÎÒÃÇäÖȾHTMLµÄ¹¤¾ß¡£

let content = lotteries.map(lottery=>(
<li>{lottery.prizeName}</li>
))
let List = (
<ul>
{content}
</ul>
)
let html = render(<List/>); // DOM Object
let htmlString = html.outerHTML // String
// do anything?
 
   
1726 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹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[±±¾©]
 
×îÐÂÎÄÕÂ
ÈçºÎÉè¼Æ¸ßÀ©Õ¹µÄÔÚÏßÍøÒ³ÖÆ×÷ƽ̨
electronÈëÃÅÐĵÃ
ʹÓà Electron ¹¹½¨×ÀÃæÓ¦ÓÃ
VUE.JS×é¼þ»¯¿ª·¢Êµ¼ù
ÉîÈëÀí½âJSCore
×îпγÌ
HTML 5 + CSS3 Ô­ÀíÓ뿪·¢Ó¦ÓÃ
Webǰ¶Ë¸ß¼¶¹¤³Ìʦ±Ø±¸¼¼ÄÜʵս
Vue´óÐÍÏîÄ¿¿ª·¢ÊµÕ½
ReactÔ­ÀíÓëʵ¼ù
Vue.js½ø½×Óë°¸Àýʵ¼ù
³É¹¦°¸Àý
Öн»¼¯ÍÅ ¹¹½¨Web×Ô¶¯»¯²âÊÔ¿ò¼Ü
ijָÃûµçÐŹ«Ë¾ Vue.js½ø½×Óë°¸Àý
¹úµçÍ¨ÍøÂç¼¼Êõ HTML5+CSS3 +webǰ¶Ë¿ò
ÒÆ¶¯Í¨ÐÅ ÒÆ¶¯»¥ÁªÍøÓ¦Óÿª·¢Ô­Àí
ijµçÁ¦ÐÐ android¿ª·¢Æ½Ì¨×î¼Ñ