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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ǰ¶Ë¹¤³Ì»¯Ö®H5ÐÔÄÜÓÅ»¯Æª
 
×÷Õߣº RLFE
  1586  次浏览      27
 2021-5-13 
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª½éÉÜǰ¶Ë½¥½øÔöÇ¿µÄÒ³ÃæäÖȾ·½°¸£¬¼´¡°Â·ÓÉ·ÖÀë+Ô¤¾²Ì¬»¯+WebViewÔ¤´´½¨¡±·½°¸£¬À´Ìæ´úÄ£°åͬ²½äÖȾ·½°¸£¬²¢²ÉÓù¤³Ì»¯µÄ·½Ê½½«ÄÜÁ¦´ò°üϳÁ¸³ÄܲúÆ·Ïß¡£
±¾ÎÄÀ´×ÔÓÚ°Ù¶ÈÖ±²¥Ñз¢²¿ ,ÓÉ»ðÁú¹ûÈí¼þAlice±à¼­ÍƼö¡£

µ¼¶Á£º´Ó´Ö²Úµ½¾«Ö£¬´Ó¼òµ¥µ½¸´ÔÓ£¬È«Çò»¥ÁªÍøWeb App£¨ÍøÒ³Ó¦Óã©Æ½¾ùÌå»ýÒÑÔöѹµ½1.6Mb£¬Ëæ×ÅÒôÊÓÆµµÈ¸»Ã½ÌåÄÚÈݵÄÁ÷Á¿³ØÅòÕÍ£¬ÖÕ¶ËÉ豸ÉϵÄÓû§¶ÔÍøÒ³×°ÔØËÙ¶ÈÓÈÆäÃô¸Ð¡£Ò³Ãæ²»ÄÜ×öµ½Ã뿪£¬¾Í»áÓдóÁ¿Óû§Ñ¡ÔñÀ뿪¡£ÖØÊÓ²¢¸ÄÉÆÍøÕ¾ÐÔÄÜ£¬ÓÅ»¯¼´Ê±ÍøÒ³×°ÔØÊ±¼ä£¬¼ÓËÙ¼´Ê±ÍøÒ³ÔÚä¯ÀÀÆ÷ƽ̨ÖÕ¶Ë״̬չÏÖ£¬½ø¶ø¿ÉÒÔ´øÀ´ÍøÕ¾Á÷Á¿Ôö³¤¡£

Ò»¡¢±³¾°

ÔÚÖ±²¥ÒµÎñÂ䵨µÄ³¡¾°ÖУ¬¹¹½¨´òÉÍ·þÎñ¾«Éñ£¬´´Ôì·ç¸ñ¶àÑù£¬ÁîÈËÄÑÍüµÄÔËÓª»î¶¯ÐÎʽ£¬ÒÔÂú×ãÄ¿±êÓû§ÐèÇó¡£½øÐÐÓÐЧµÄ·þÎñ´´Ð£¬±£ÕÏH5·þÎñÆ·ÖÊ£¬¿ØÖÆ·ÃÎÊÐÔÄÜ£¬¼°Ê±»¯½â½ðÖ÷ÇéÐ÷ΪÉÌÒµ¼ÛÖµ£¬ÖÆÔìÌØÐ§¾ªÏ²£¬Á÷³©µÄÓû§ÌåÑ飬ÓÐÀûÓÚÓ®µÃÓû§¶Ôƽ̨µÄ×ðÖØ£¬ÌáÉýÆ½Ì¨Æ·ÅÆÆøÖÊ£º

1. ÓÅ»¯·ÃÎÊÌåÑ飺ÓÅ»¯H5ÊׯÁÐÔÄÜ£¬Î§ÈÆÌáÉýÓû§·þÎñ¸ÐÊܺÍÌáÉý¿ª·¢Õß¹¤×÷ЧÂʽøÐд´Ð£¬Ì½Ë÷Web×·¸ÏÔ­ÉúµÄÌåÑ鴴У»

2. ¼ÓËÙÐèÇó±Õ»·£º½â¾öH5Ò³ÃæÂ·ÓÉÓëÊý¾Ý½Ó¿ÚñîºÏµÄÎÊÌ⣬ʵÏÖH5·þÎñ×ÔÖΣ¬ÊÍ·ÅÒµÎñ¶ÔWeb²úÆ·ÐÎ̬µÄÍúÊ¢ÐèÇó£»

3. »ù´¡ÉèÊ©½¨É裺ʹÓù¤³Ì»¯ÊֶγÁµí¹«¹²Í¨ÓõÄǰ¶Ë»ù´¡ÉèÊ©£¬ÈÃǰ¶Ë×éÖ¯¸üÃô½ÝµÄÖ§³Ö¿çÒµÎñµÄÈËÁ¦µ÷Å䣬¼¼Êõ¸³Äܸü¶à²úÆ·Ïߣ»

Î§ÈÆÒÔÓû§ÎªÖÐÐĵŦÄÜÍêÉÆµÄÌåÑ飬ÒÔ¿Í»§ÎªÖÐÐĵÄÉÌÒµ¼ÛÖµµÄת»¯¡£ÌáÉýH5·þÎñÆ·ÖÊ£¬·¢»ÓÏÖ´úä¯ÀÀÆ÷DZÄÜ£¬¸³ÄÜ´«Í³WebеĽâ¾ö·½°¸¡£

ÀúÊ·¼Ü¹¹µÄÔ­Òò£¬H5Ò³ÃæµÄ¼ÓÔØ¹ý³ÌÊÇServerÏòSmartyÄ£°å×¢Èëjson_encodeºóµÄ½Ó¿ÚÖ÷Êý¾Ý£¬ÏìÓ¦¸øä¯ÀÀÆ÷´øÓÐÒ³ÃæÍêÈ«JSONÊý¾ÝµÄÒ³Ãæ£¬È»ºóÔÚä¯ÀÀÆ÷¶ËÖ´ÐÐJavaScript£¬×îÖÕPaint¸øÓû§£¬Á÷³ÌÈçÏÂͼ£º

¡÷H5ÓÅ»¯Ç°µÄ¼ÓÔØÓëäÖȾÁ÷³Ì

¡÷H5ÊׯÁ¹Ø¼ü·¾¶ºÄʱ²ð½â

Á½¸öÓ°ÏìH5ÊׯÁÄÚÈÝ£¨FCP£¬First Contentful Paint£¬Ê×´ÎÄÚÈÝ»æÖÆ£©µÄ¹Ø¼ü·¾¶Îª£º

1. ÍøÂçºÄʱ£ºÒÀÀµServer¶ËÊý¾Ý²éѯ¼°Ä£°å±àÒ룬µ±Êý¾Ý²éѯÂýʱÑÓ³ÙÁËÊ××Ö½Úµ½´ï£¨TTFB£¬Time To First Byte£¬Ê××Ö½Úʱ¼ä£©¡£

2. ÄÚºËäÖȾºÄʱ£ºÒÀÀµJavaScriptÖ´ÐжÁÈ¡Ò³ÃæÖ÷Êý¾Ý²¢Éú³ÉÍêÈ«µÄDOM½á¹¹¡£

Òò´Ë£¬ÎÒÃÇÕë¶ÔÐÔµØÉè¼Æ²¢ÊµÊ©ÁË¡°Â·ÓÉ·ÖÀë+Ô¤¾²Ì¬»¯+WebViewÔ¤´´½¨¡±µÄ·½°¸£¬¸Ä½øºóµÄÒ³Ãæ¼ÓÔØÓëäÖȾÁ÷³ÌÈçÏÂͼ£º

¡÷H5ÓÅ»¯ºóµÄ¼ÓÔØÓëäÖȾÁ÷³Ì

¶þ¡¢Â·ÓÉ·ÖÀë

·ÓÉ·ÖÀë֮ǰH5Ò³ÃæµÄURLÓÉServer·ÖÅ䣬ǰ¶Ë¸ºÔð±àдTPLÄ£°å²úÎTPLÓë×îÖÕURLµÄ¶ÔÓ¦¹ØÏµÔÚServerͨ¹ýÅäÖÃÎļþ×öÓ³É䣬ÈÕÒæ±©Â¶³öÆô¶¯¿ª·¢Âý£¬Ò³ÃæºóÆÚά»¤½»½Ó¹µÍ¨³É±¾¸ßµÄÎÊÌâ¡£

ËùÒÔÎÒÃÇÏ£ÍûÒ³ÃæÂ·Óɹ淶»¯£¬ÈÃǰ¶Ë¿ª·¢Õß×ÔÖ÷¿ØÖÆÒ³ÃæÈë¿Ú¸ñʽ£¬Èúó¶Ë¿ª·¢Õ߸üרעÓÚAPI½Ó¿ÚÊý¾ÝÂß¼­¡£Òò´Ë£¬ÎÒÃÇÉè¼ÆÁËǰ¶Ë·ÓÉ·ÖÀë·½°¸£¬Ô¼¶¨ÁËÒ³ÃæURLÓëÒ³ÃæÔ´´úÂëĿ¼ӳÉä¹ØÏµ£¬¹æÔòÈçÏÂͼ£º

¡÷Ô¤¶¨Ê½URL·Óɹ淶

NGINXÖ±½ÓÏìÓ¦Ô¤¾²Ì¬»¯µÄHTMLÎļþ£¬Ê××Ö½Úµ½´ï²»ÒÀÀµÊý¾Ý²éѯÓëÄ£°æ±àÒë¡£

Èý¡¢Ô¤¾²Ì¬»¯

ǰ¶Ë·ÓÉ·ÖÀëÖ±½ÓÔÚNGINX´úÀí²ã·µ»ØHTMLÎļþ£¬µ«Ã»ÓÐÒ³ÃæÍêÈ«äÖȾÐèÒªµÄÊý¾Ý£¬ÔÚÖ´ÐÐAJAXÇëÇóûÓзµ»ØÖ®Ç°£¬ÐèÒª¹æ±ÜÒ³ÃæÒ»Ö±´¦ÓÚ°×ÆÁ»òÈ«¾Öloading״̬£¬ÌáǰFCPµÄʱ¼ä¡£

ÎÒÃDzÉÓÃÁËÔ¤¾²Ì¬»¯Ò³ÃæµÄ·½°¸¡£Ô¤¾²Ì¬»¯²»Ïñ·þÎñÆ÷äÖȾÄÇÑù¼´Ê±±àÒë²ú³öÍêÈ«¾²Ì¬»¯µÄ HTML£¬ËüÖ»ÔÚ¹¹½¨Ê±ÎªÁËÌØ¶¨µÄ·ÓÉÉú³ÉÌØ¶¨µÄ¼¸¸ö¾²Ì¬Ò³Ã棬ÎÒÃÇ¿ÉÒÔͨ¹ý webpack²å¼þ½«Ò»Ð©Ìض¨Ò³ÃæÔÚ±àÒëʱ¾Í×¢ÈëDOM½á¹¹£¬ÕâÑù×öÓм¸¸öºÃ´¦£ºµÚÒ»Ëõ¶ÌÒ³Ãæ°×ÆÁʱ¼ä£¬µÚ¶þÏà¶ÔÓÚ·þÎñÆ÷¶ËäÖȾ½ÚÊ¡ÔÆ»ù´¡ÉèÊ©×ÊÔ´³É±¾£¬µÚÈýÊä³ö¸øËÑË÷ÒýÇæÅÀÈ¡Ò³ÃæÍ¨ÓÃÄÚÈÝ¡£

½áºÏʵ¼ÊÓ¦Óó¡¾°ºÍÊÐÃæÉÏÖ÷Á÷µÄÔ¤¾²Ì¬»¯·½Ê½£¬×îÖÕÎÒÃÇ¿ª·¢ÁË»ùÓÚReactDomServerÔ­ÉúµÄ·þÎñ¶ËäÖȾÄÜÁ¦µÄwebpack²å¼þ£¬ÌáÉýÔ¤¾²Ì¬»¯ÐÔÄܺÍЧÂÊ¡£

ͨ¹ýwebpack²å¼þϵͳ»ñȡÿ´Î¹¹½¨µÄcompilationÉÏÏÂÎÄ£¬Í¨¹ýhtml-webpack-pluginµÄbefore AssetTagGeneration hook»ñÈ¡µ±Ç°Ò³Ãæbundle£¬afterTemplateExecution hook»ñÈ¡µ±Ç°Ò³Ãæ±àÒëºóµÄÄ£°åHTML£¬Í¨¹ýevalÖ´ÐÐbundleµ¼³öµÄÕû¸öÒ³ÃæAPPÄ£¿é£¬Í¨¹ýReactDomServer¶Ôµ¥Ò³Ó¦ÓõÄÿ¸ö·Óɲú³öAPP HTMLÓëÄ£°åHTMLºÏ²¢ºóÂäÅÌΪԤ¾²Ì¬»¯µÄHTML¡£

H5Ô¤¾²Ì¬»¯µ÷ÓÃÐòÁÐÈçÏ£º

¡÷H5Ô¤¾²Ì¬»¯µ÷ÓÃÐòÁÐ

Ò³ÃæÈë¿Úexport APP£º

module.exports = (locals) =>
Promise.resolve(locals.preRender({id: containerId, main: App}));

»ùÓÚNode.js»·¾³£¬´´½¨JSDOMʵÀýÌṩä¯ÀÀÆ÷ËÞÖ÷»·¾³£¬Ê¹ÓÃReactDOMServer½«×é¼þäÖȾΪ¾²Ì¬HTML±ê¼Ç¡£Ê¹ÓÃ×ÔÑеÄÔ¤¾²Ì¬»¯webpack²å¼þÌæ»»html-webpack-plugin£¬²¢²»Ôö¼ÓеıàÒë½×¶Î¡£

Webpack²å¼þÓëÊÐÃæÉÏÖ÷Á÷µÄÔ¤¾²Ì¬»¯·½·¨×ö¸ö¶Ô±È£¬Èç»ùÓÚÎÞÍ·ä¯ÀÀÆ÷µÄ¡¢»ùÓÚ±¾µØÆô¶¯HTTP Server¡¢Í¨Óõľ²Ì¬Õ¾µãÉú³É¹¤¾ßµÈ¡£½á¹ûÈçÏ£º

½á¹ûÈçÏ£º

×ۺ϶Աȣ¬ÎÒÃǵÄÔ¤¾²Ì¬»¯ËÙ¶È×îÓÅ£¬¿ÉÔÚ¿ª·¢½×¶Îʵʱ¿´µ½Ô¤¾²Ì¬»¯½á¹û£¬Ëù¼û¼´ËùµÃ£¬·½±ãÑз¢µ÷ÊÔ£¬²»ÐèÒªÔö¼ÓеıàÒë½×¶Î¡£

×ñÑ­¾¡¿ÉÄÜÈÃÒ³Ãæ¹Ç¼ÜÄÚÈÝÏÔʾ×îÖÕÄÚÈݵÄÔ­Ôò£¬²ú³öÔ¤¾²Ì¬»¯µÄHTMLÎļþ£¬¶ÔÓÚչʾÓû§¸öÐÔ»¯ÄÚÈݵĶ¯Ì¬×é¼þ£¬ÈÔÐèÒªµÈ´ýÒ»¸öAJAXÇëÇóµÄʱ¼ä£¬Õⲿ·Ö×é¼þÔÚÖ´ÐÐAJAXÇëÇóûÓзµ»ØÖ®Ç°£¬ÎÒÃDzÉÓÃÁË×é¼þ¼¶±ðµÄSkeleton·½°¸£¬ÒÔ±£Ö¤ÊׯÁʹÓÃͨÓÃÄÚÈÝ+¶¯Ì¬×é¼þ¹Ç¼ÜÌî³ä£º

1. ¾²Ì¬×é¼þ¿ª·¢Ê±¶¨Ò幫¹²²¿·Östate£¬Ìî³äÒ³Ãæ¹«¹²²¿·ÖÄÚÈÝ£¬´úÂëʾÀý£º

this.state = {
// Ô¤¾²Ì¬»¯»·¾³µÄ±ê¼Ç£¨±àÒë½×¶ÎÔ¤¾²Ì¬»¯²å¼þ×¢È룩
isPreRender: window.isPreRender,

// Ò³Ãæ¹«¹²ÄÚÈÝ
rights: [ // È¨Òæ
{
dataIndex: 'cameraAction',
icon: require('../../../../assets/cashVideoActivity
/ricon_1.png'), button: require('../../../../assets/
cashVideoActivity/do_shoot.png'), text:
<span className='dt-text'>ÒÚÍò½±½ð£¬<br />È«Íø×î¸ß£¡</span>,
action: {} // ͨ¹ý dataIndex ÔÚ½Ó¿ÚÊý¾ÝÀï»ñÈ¡
}, {
dataIndex: 'renzhengAction',
icon: require('../../../../assets/cashVideoActivity/
ricon_2.png'), button: require('../../../..
/assets/cashVideoActivity/
do_auth.png'), text: <span className='dt-text'
>¼ÓVÈÏÖ¤£¬<br />Ê®±¶ÊÕÒæ£¡</span>,
action: {}
}
]
};

2. ¶¯Ì¬×é¼þ¸ù¾Ýwindow.isPrerender±ê¼Ç×öÔ¤¾²Ì¬»¯»·¾³Óëä¯ÀÀÆ÷äÖȾ»·¾³Á½ÖÖ»·¾³ÏµÄÏìÓ¦£¬´úÂëʾÀý£º


// ×é¼þ¹Ç¼Ü¿ÉʹÓà http://danilowoz.com/
create-content-loader/ ÔÚÏßÉú³É
import ContentLoader from 'react-content-loader';
const GrowthCardLoader = props => (
<ContentLoader
uniquekey="growth-card-loader"
animate
height={68}
width={320}
speed={1}
primaryColor="#333"
secondaryColor="#333"
{...props}
>
<rect x="0" y="0" rx="10" ry="10" width="320" height="68" />
</ContentLoader>
);
// ×é¼þ»·¾³ÏìÓ¦ºËÐÄÂß¼­
{
window.isPreRender
? (
<GrowthCardLoader
className="growth-card-swiper-slide-loader"/>
)
: (
<Õýʽ×é¼þ ...
)
}

¡÷¶¯Ì¬×é¼þÔÚÁ½ÖÖ»·¾³ÏµÄÏìÓ¦Á÷³Ì

¾­¹ýÔ¤¾²Ì¬»¯ºóµÄÒ³ÃæÊׯÁÄÚÈÝ£¨FCP£©²»ÒÀÀµJSÖ´ÐÐÍê±Ï£¬Í¨¹ýÒ»´ÎÊ×´ÎäÖȾ£¨FP£¬First Paint£¬Ê״λæÖÆ£©¼´¿ÉÏòÓû§Õ¹Ê¾³öÒ³Ãæ¹«¹²ÄÚÈÝ£¬´ýAJAX·µ»ØºóÌæ»»³ÉÍêÈ«äÖȾµÄÒ³Ãæ¡£

ËÄ¡¢WebViewÔ¤´´½¨

ÔÚAPPÆô¶¯Ê±Á¢¼´³õʼ»¯ºÃWebView×é³ÉµÄ»º´æ³Ø£¬±£Ö¤¼ÓÔØÃ¿¸öURLʱʡȥÁËWebView³õʼ»¯µÄʱ¼ä£¬²¢ÀûÓÃÉÏÔ¤¾²Ì¬»¯µÄHTML»º´æ£¬×îÖÕÊ¹Ò³ÃæÎÞ°×ÆÁ¼ÓÔØÌ¬¡£

Îå¡¢ÕûÌåÊÕÒæ

ÓÅ»¯Ð§¹û¿É¸ÐÖª¶Ô±È£¨×óÐÂÓҾɣ©

äÖȾÁ÷³Ì¸Ä½øÇ°ºó¶Ô±È£º

¡÷äÖȾÁ÷³Ì¸Ä½øÇ°ºó¶Ô±È

Ö±½ÓÊÕÒæ£º

¡÷H5ÐÔÄÜÓÅ»¯Ö±½ÓÊÕÒæ

Ô¤¾²Ì¬»¯ÊÕÒæ£º

1. ·¢²¼Ç°¶ËͨÓøßÐÔÄÜÔ¤¾²Ì¬»¯²å¼þ£»

2. ÌṩÁ˹¤³Ì»¯ÒýÈë¹Ç¼ÜÆÁ£¨Skeleton£©µÄ·½Ê½¡£

·ÓÉ·ÖÀëÊÕÒæ£º

1. Ô¼¶¨Ê½µÄÒ³ÃæURL·¾¶£¬¼õСά»¤³É±¾£¬¼õÉÙǰºó¶Ë¹µÍ¨³É±¾£»

2. BrowserRouterÖ§³Ö£¬Õë¶ÔSPA£¨Single Page Application£©Ò³Ã泡¾°£¬Ö§³ÖÁË»ùÓÚhistory APIµÄBrowserRouter·ÃÎÊ·½Ê½£»

3. ɾ³ýÄ£°æÅäÖùÜÀí²½Ö裬¶ÔÓÚºó¶Ëͬѧ¿ÉÒÔ¸ü¼ÓרעÓÚÊý¾ÝÂß¼­¡£

Áù¡¢¹¤³Ì»¯

ǰ¶Ë×éÖ¯´ÓС×÷·»·¢Õ¹µ½ÁË´óǰ¶Ëʱ´ú£¬Ç°¶Ë¹¤³Ì¿ª·¢Ä£Ê½Êܵ½ÁËеÄÌôÕ½ÈçÄ£¿é»¯¡¢×é¼þ»¯¡¢¹æ·¶»¯¡¢×Ô¶¯»¯µÈ¡£

ǰ¶Ë¹¤³Ì±¾ÖÊÉÏÊÇÈí¼þ¹¤³ÌµÄÒ»ÖÖ¡£Èí¼þ¹¤³Ì»¯¹Ø×¢µÄÊÇÐÔÄÜ¡¢Îȶ¨ÐÔ¡¢¿ÉÓÃÐÔ¡¢¿Éά»¤ÐԵȷ½Ãæ£¬×¢ÖØ»ù±¾µÄ¿ª·¢Ð§ÂÊ¡¢ÔËÐÐЧÂʵÄͬʱ£¬Ë¼¿¼Î¬»¤Ð§ÂÊ¡£²ÉÓù¤³Ì»¯µÄ˼Ïë¹ÜÀíǰ¶Ë¹¤³Ì·¶³ëµÄ¸÷»·½Ú£¬×ª»¯ÌôսΪ»úÓö£¬´´½¨Ö§³Ö¶àÍŶÓЭ×÷µÄ¿ª·¢Á÷£¬½¨Á¢¼áʵµÄ¹¤ÒµÇ°¶Ë»ù´¡ÉèÊ©¡£

Æß¡¢×ܽá

Web H5ÐÔÄÜÓÅ»¯²»ÔÙÊÇÖ»×·ÇóÒ»Á½¸öÒ³Ãæ×°ÔØËÙ¶ÈÖ¸±êµÄÌáÉý£¬¸ü¿¼ÑéÒ»¸öǰ¶ËÍŶӵÄ×ÛºÏÄÜÁ¦£º

1. ¶¥²ãÉè¼ÆÄÜÁ¦

ÔÚÉè¼ÆÊ±Ìáǰ²¼¾Ö£¬Ñ°ÕÒÍ´µãÒ»»÷¼´ÖУ¬²¢¸ù¾Ýʵ¼ÊÇé¿ö²»¶Ïά»¤¡¢½øÐе÷Õû¡¢ÓÅ»¯¡¢±£Ö¤¹æ·¶ÓÐЧÐÔ£»

2. ¹¤³Ì¹ÜÀíÄÜÁ¦

ÓøüÓÐЧµÄ¹¤×÷·½·¨ºÍÊÖ¶Îʹȫ¾Öʵ¼ù×îÓÅ£¬½ÚÔ¼³É±¾²¢ÌáÉýÑз¢Ð§ÂÊ£»

3. ÎÄ»¯´´ÐÂÄÜÁ¦

³ÖÐøÑ§Ï°ÊÇ×îºÃµÄ´´Ð°취£¬Ê¼ÖÕ±£³Ö×ÅÓëʱ¾ã½øµÄ»ù±¾¼ÛÖµ¹Û£¬Ã¿Ò»´ÎÆõ»ú¶¼¿ÉÄÜ»á´Ù³ÉÒ»´Î³É¹¦µÄ´´Ð£¬´´Ôì¶ÀÌØ¼ÛÖµ¡£

WebÉú̬¼¼ÊõÈÕÐÂÔÂÒ죬ÐÔÄÜÊÇÈÕÇ÷¹æ·¶»¯µÄÁìÓò£¬ÈçPWA/¿ìÓ¦ÓÃ/С³ÌÐò£¬±ê×¼»¯Êdz¹µ×½â¾öƵ·¢ÎÊÌâ¡¢¸ÄÉÆ¹¤×÷ÖÊÁ¿µÄºÃ°ì·¨¡£

 

 

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