1.vue.jsåjsçåºå«ï¼
2.eval(function(p,程f程a,c,k,e,r) 解密
3.wordpressådjangoåªä¸ªå¥½ï¼
4.可能是你见过最专业的表单方案---解密Formily2.0
vue.jsåjsçåºå«ï¼
å端éé¢node.jsåvue.jsåºå«æ¯ä»ä¹ï¼
两è çåºå«æ¯ï¼ä¸ä¸ªæ¯æå¡ç«¯è¯è¨ï¼ä¸ä¸ªæ¯å端æ¡æ¶ã
1ãnodejsæ¯ä¸ä¸ªjsè¿è¡äºæå¡ç«¯çç¯å¢ï¼æ¯ä¸ä¸ªæå¡ç«¯è¯è¨ï¼èvueæ¯å端渲æçåºï¼æ¯ä¸ä¸ªå端æ¡æ¶ã
2ãNodeç¨äºæ¹ä¾¿å°æ建ååºé度快ãæäºæ©å±çç½ç»åºç¨ï¼
3ãèvueç¨äºå®ç°ååºçæ°æ®ç»å®åç»åçè§å¾ç»ä»¶ãæ¯ä¸å¥ç¨äºæ建ç¨æ·çé¢çæ¸è¿å¼JavaScriptæ¡æ¶ã
Node.js
æ¯ä¸ä¸ªåºäºChromeV8å¼æçJavaScriptè¿è¡ç¯å¢ã
Node.js使ç¨äºä¸ä¸ªäºä»¶é©±å¨ãéé»å¡å¼I/Oç模åï¼ä½¿å ¶è½»éåé«æã
Node.jsçå 管çå¨npmï¼æ¯å ¨çæ大çå¼æºåºçæç³»ç»ã
Vue.js
æ¯ä¸ä¸ªæ建æ°æ®é©±å¨çwebçé¢çæ¸è¿å¼æ¡æ¶ã
Vue.jsçç®æ æ¯éè¿å°½å¯è½ç®åçAPIå®ç°ååºçæ°æ®ç»å®åç»åçè§å¾ç»ä»¶ãå®ä¸ä» æäºä¸æï¼è¿ä¾¿äºä¸ç¬¬ä¸æ¹åºææ¢æ项ç®æ´åãå¦ä¸æ¹é¢ï¼å½ä¸åæ件ç»ä»¶åVueçæç³»ç»æ¯æçåºç»å使ç¨æ¶ï¼Vueä¹å®å ¨è½å¤ä¸ºå¤æçå页åºç¨ç¨åºæä¾é©±å¨ã
vue.jsåjqueryçåºå«ä¸ã主ä½ä¸å
1ãvue.jsï¼æ¯ä¸å¥ç¨äºæ建ç¨æ·çé¢çæ¸è¿å¼JavaScriptæ¡æ¶ã
2ãjqueryï¼æ¯ä¸ä¸ªå¿«éãç®æ´çJavaScriptæ¡æ¶ï¼æ¯ç»§Prototypeä¹ååä¸ä¸ªä¼ç§çJavaScript代ç åºã
äºãç¹ç¹ä¸å
1ãvue.jsï¼Vue被设计为å¯ä»¥èªåºåä¸éå±åºç¨ãVueçæ ¸å¿åºåªå ³æ³¨è§å¾å±ï¼æ¹ä¾¿ä¸ç¬¬ä¸æ¹åºææ¢æ项ç®æ´åã
2ãjqueryï¼å ·æç¬ç¹çé¾å¼è¯æ³åçå°æ¸ æ°çå¤åè½æ¥å£ï¼å ·æé«æçµæ´»çcsséæ©å¨ï¼å¹¶ä¸å¯å¯¹CSSéæ©å¨è¿è¡æ©å±ï¼æ¥æ便æ·çæ件æ©å±æºå¶å丰å¯çæ件ã
ä¸ãä¼å¿ä¸å
1ãvue.jsï¼ç®æ æ¯éè¿å°½å¯è½ç®åçAPIå®ç°ååºçæ°æ®ç»å®åç»åçè§å¾ç»ä»¶ã
2ãjqueryï¼æä¾äºå¯¹åºæ¬JavaScriptç»æçå¢å¼ºï¼æ¯å¦å ç´ è¿ä»£åæ°ç»å¤ççæä½ã
åèèµææ¥æºï¼ç¾åº¦ç¾ç§-jQuery
åèèµææ¥æºï¼ç¾åº¦ç¾ç§-Vue.js
认è¯Vue.js+Vue.jsçä¼ç¼ºç¹+åä¸å ¶ä»å端æ¡æ¶çåºå«Vue.jsä¸å ¶ä»æ¡æ¶çåºå«ï¼
1.ä¸AngularJSçåºå«
ç¸åç¹ï¼
é½æ¯ææ令ï¼å ç½®æ令åèªå®ä¹æ令ã
é½æ¯æè¿æ»¤å¨ï¼å ç½®è¿æ»¤å¨åèªå®ä¹è¿æ»¤å¨ã
é½æ¯æååæ°æ®ç»å®ã
é½ä¸æ¯æä½ç«¯æµè§å¨ã
ä¸åç¹ï¼
1.AngularJSçå¦ä¹ ææ¬é«ï¼æ¯å¦å¢å äºDependencyInjectionç¹æ§ï¼èVue.jsæ¬èº«æä¾çAPIé½æ¯è¾ç®åãç´è§ã
2.å¨æ§è½ä¸ï¼AngularJSä¾èµå¯¹æ°æ®åèæ£æ¥ï¼æ以Watcherè¶å¤è¶æ ¢ã
Vue.js使ç¨åºäºä¾èµè¿½è¸ªçè§å¯å¹¶ä¸ä½¿ç¨å¼æ¥éåæ´æ°ãææçæ°æ®é½æ¯ç¬ç«è§¦åçã
对äºåºå¤§çåºç¨æ¥è¯´ï¼è¿ä¸ªä¼åå·®å¼è¿æ¯æ¯è¾ææ¾çã
2.ä¸Reactçåºå«
ç¸åç¹ï¼
Reactéç¨ç¹æ®çJSXè¯æ³ï¼Vue.jså¨ç»ä»¶å¼åä¸ä¹æ¨å´ç¼å.vueç¹æ®æä»¶æ ¼å¼ï¼å¯¹æ件å 容é½æä¸äºçº¦å®ï¼ä¸¤è é½éè¦ç¼è¯å使ç¨ã
ä¸å¿ææ³ç¸åï¼ä¸åé½æ¯ç»ä»¶ï¼ç»ä»¶å®ä¾ä¹é´å¯ä»¥åµå¥ã
é½æä¾åççé©åå½æ°ï¼å¯ä»¥è®©å¼åè å®å¶åå°å»å¤çéæ±ã
é½ä¸å ç½®åæ°AJAXï¼Routeçåè½å°æ ¸å¿å ï¼èæ¯ä»¥æ件çæ¹å¼å è½½ã
å¨ç»ä»¶å¼åä¸é½æ¯æmixinsçç¹æ§ã
ä¸åç¹ï¼
Reactä¾èµVirtualDOM,èVue.js使ç¨çæ¯DOM模æ¿ãReactéç¨çVirtualDOMä¼å¯¹æ¸²æåºæ¥çç»æåèæ£æ¥ã
Vue.jså¨æ¨¡æ¿ä¸æä¾äºæ令ï¼è¿æ»¤å¨çï¼å¯ä»¥é常æ¹ä¾¿ï¼å¿«æ·å°æä½DOMã
nodejsåvuejsçåºå«nodejsåvuejsçåºå«
å®å ¨ä¸¤ç äºï¼ä¸ä¸ªæ¯å端æ¡æ¶ï¼ä¸ä¸ªæ¯æå¡ç«¯è¯è¨ã
Node.jsæ¯ä¸ä¸ªåºäºChromeV8å¼æçJavaScriptæ§è¡ç¯å¢ã
Node.js使ç¨äºä¸ä¸ªäºä»¶é©±å¨ãéé»å¡å¼I/Oç模åï¼ä½¿å ¶è½»éåé«æã
Node.jsçå 管çå¨npmï¼æ¯å ¨çæ大çå¼æºåºçæç³»ç»ã
Vue.jsæ¯ä¸ä¸ªæ建èµæ驱å¨çwebä»é¢çæ¸è¿å¼æ¡æ¶ãVue.jsçç®æ æ¯éè¿å°½å¯è½ç®åçAPIå®ç°ååºçèµæç³»ç»åç»åçæ£è§å 件ãå®ä¸ä» æäºä¸æï¼è¿ä¾¿äºä¸ç¬¬ä¸æ¹åºææ¢æä¸æ¡æ´åã
å¦ä¸æ¹é¢ï¼å½ä¸åæ¡£æ¡å 件åVueçæç³»ç»æ¯æ´çåºç»å使ç¨æ¶ï¼Vueä¹å®å ¨è½å¤ä¸ºå¤æçå页åºç¨ç¨å¼æä¾é©±å¨ã
vuejs2.0å1.0çåºå«
å»é¤äºä¸äºç³ç²ï¼ä¾å¦:vm.$dispatch,vm.$broadcase
ç®åäºä¸äºç¨æ³,ä¾å¦ï¼v-el:å为ref=
æ´å¤ååå¯ä»¥å°githubçvuejsç¨å¼ç ä»åºæ£è§ç¬¬ä¸æèµæ~
vuejsvue-cliåwebpackçåºå«
ç§è®¤ä¸ºYeomançGeneratorsæ¯å¤©ççæä¾èææ¶çå·¥å ·ï¼å¦æç¨webstormæ°å»ºYeomanä¸æ¡ï¼å°±å¯ä»¥æ¾å°ä¸äºæå ³reactçèææ¶
nodejsåjavascriptsdkåleancloudçåºå«
node.jsåjavascriptåºå«è¿æ¯æºå¤§çï¼1个平å°ï¼1个æ¯ç¨å¼è¯è¨ï¼
javascriptæ¯å®¢æ·ç«¯ç¨å¼è¯è¨ï¼éè¦æµè§å¨çjavascriptç´è¯å¨è¿è¡è§£éæ§è¡ï¼
node.jsæ¯ä¸ä¸ªåºäºChromeJavaScriptæ§è¡æ¶å»ºç«çå¹³å°ï¼å®æ¯å¯¹GoogleV8å¼æè¿è¡äºå°è£ çæ§è¡ç¯å¢ï¼
ç®åç说node.jså°±æ¯ææµè§å¨çç´è¯å¨å°è£ èµ·æ¥ä½ä¸ºä¼ºæå¨æ§è¡å¹³å°ï¼ç¨ç±»ä¼¼javascriptçç»æè¯æ³è¿è¡ç¨å¼è®¾è®¡ï¼å¨node.jsä¸æ§è¡ã
apacheånodejsçåºå«
apacheæ¯å¤æ§è¡ç»ªæºå¶ï¼ä»ä¸ºæ¯ä¸ä¸ªè®¿é®ä½¿ç¨è 建ç«åç¬çæ§è¡ç»ªï¼å½¼æ¤äºä¸å½±åï¼ä½æ¯æ§è¡ç»ªå ç¨è®°å¿ä½ï¼è®¿é®é大记å¿ä½ä¼åä¸æ¶ï¼
nodejsåApacheçä¸ä¸ªå¾å¤§ä¸åå¨äºâåæ§è¡ç»ªæºå¶âï¼ä¸åç使ç¨è 使ç¨åä¸ä¸ªæ§è¡ç»ªï¼éç¨éé»å¡I/Oåäºä»¶é©±å¨æææé«äºä¼ºæå¨ç并åæ°ä¸éï¼åæ¶çº¿ä¸äººæ°ï¼ã
nodejsstreamåbufferçåºå«
max_allowed_packet=M
[mysql]
disable-auto-rehash#å 许éè¿TABé®æ示
default-character-set=utf8
connect-timeout=3
getåpostçåºå«ï¼nodejsï¼use
getæ¯ä»ä¼ºæå¨ä¸è·åèµæï¼postæ¯å伺æå¨ä¼ éèµæã2getæ¯æå¼æ°èµæ伫åå å°æ交表åçACTIONå±æ§ææçURLä¸ï¼å¼å表åå å个æ ä½ä¸ä¸å¯¹åºï¼å¨URLä¸å¯ä»¥çå°ãpostæ¯éè¿HTTPpostæºå¶ï¼å°è¡¨åå å个æ ä½ä¸å ¶å 容æ¾ç½®å¨HTMLHEADERå ä¸èµ·ä¼ éå°ACTIONå±æ§ææçURLå°åã使ç¨è çä¸å°è¿ä¸ªè¿ç¨ã
3对äºgetæ¹å¼ï¼ä¼ºæå¨ç«¯ç¨Request.QueryStringè·ååæ°çå¼ï¼å¯¹äºpostæ¹å¼ï¼ä¼ºæå¨ç«¯ç¨Request.Formè·åæ交çèµæã?4getä¼ éçèµæéè¾å°ï¼ä¸è½å¤§äº2KBãpostä¼ éçèµæéè¾å¤§ï¼ä¸è¬è¢«é¢è®¾ä¸ºä¸åéå¶ãä½ç论ä¸ï¼IIS4ä¸æ大é为KBï¼IIS5ä¸ä¸ºKBã?
5getå®å ¨æ§é常ä½ï¼postå®å ¨æ§è¾é«ã
6HTTPå®ä¹äºä¸ä¼ºæå¨äºå¨çä¸åæ¹æ³ï¼æåºæ¬çæ¹æ³æ¯GETåPOSTãäºå®ä¸GETéç¨äºå¤æ°è¯·æ±ï¼èä¿çPOSTä» ç¨äºæ´æ°ç«ç¹ãæ ¹æ®HTTPè§èï¼GETç¨äºèµè®¯è·åï¼èä¸åºè¯¥æ¯å®å ¨çåå¹ççãæè°å®å ¨çæå³ç该æä½ç¨äºè·åèµè®¯èéä¿®æ¹èµè®¯ãæ¢å¥è¯è¯´ï¼GET请æ±ä¸è¬ä¸åºäº§çå¯ä½ç¨ãå¹ççæå³ç对åä¸URLçå¤ä¸ªè¯·æ±åºè¯¥è¿ååæ ·çç»æãå®æ´çå®ä¹å¹¶ä¸åçèµ·æ¥é£æ ·ä¸¥æ ¼ãä»æ ¹æ¬ä¸è®²ï¼å ¶ç®æ æ¯å½ç¨æ·å¼å¯ä¸ä¸ªè¿ç»æ¶ï¼å¥¹å¯ä»¥ç¡®ä¿¡ä»èªèº«çè§åº¦æ¥ç没ææ¹åèµæºãæ¯å¦ï¼æ°é»ç«ç¹ç头çä¸ææ´æ°ãè½ç¶ç¬¬äºæ¬¡è¯·æ±ä¼è¿åä¸åçä¸æ¹æ°é»ï¼è¯¥æä½ä»ç¶è¢«è®¤ä¸ºæ¯å®å ¨çåå¹ççï¼å 为å®æ»æ¯è¿åå½åçæ°é»ãåä¹äº¦ç¶ãPOST请æ±å°±ä¸é£ä¹è½»æ¾äºãPOST表示å¯è½æ¹å伺æå¨ä¸çèµæºç请æ±ãä»ç¶ä»¥æ°é»ç«ç¹ä¸ºä¾ï¼è¯»è 对æç« ç注解åºè¯¥éè¿POST请æ±å®ç°ï¼å 为å¨æ³¨è§£æ交ä¹åç«ç¹å·²ç»ä¸åäº7å¨FORMæ交çæ¶åï¼å¦æä¸æå®Methodï¼åé¢è®¾ä¸ºGET请æ±ï¼Formä¸æ交çèµæå°ä¼éå å¨urlä¹åï¼ä»¥?åå¼ä¸urlåå¼ãåæ¯æ°ååå åæ ·ä¼ éï¼ä½ç©ºæ ¼è½¬æ¢ä¸ºâ+âå·ï¼å ¶å®ç¬¦å·è½¬æ¢ä¸º%XX,å ¶ä¸XX为该符å·ä»¥è¿å¶è¡¨ç¤ºçASCIIï¼æISOLatin-1ï¼å¼ãGET请æ±è¯·æ交çèµææ¾ç½®å¨HTTP请æ±å议头ä¸ï¼èPOSTæ交çèµæåæ¾å¨å®ä½èµæä¸ï¼GETæ¹å¼æ交çèµææå¤åªè½æä½å ç»ï¼èPOSTå没ææ¤éå¶nodejs4.0å5.0çåºå«
Node.jsv5isanintermediatefeaturereleaselinethatisbestsuitedforuserswhohaveaneasiertimeupgradingtheirNode.jsinstallations,suchasdevelopersusingthetechnologyforfront-endtoolchains.Thisversionwillbesupportedforamaximumofonlyeightmonthsandwillbecontinuallyupdatedwithnewfeaturesandbetterperformance;itisnotsupportedunderourLTSplan.
Thereleasecadenceforv5.xwillbemorerapidthaninthepast.Expectanewreleaseonceeveryonetooweeksforv5.x.Ifupgradingisachallengeforyou,wesuggestyoudonotusethisrelease.Therewillbesignificantongoingdevelopment.Thefocusisongettingthereleasestousersassoonaspossible.
npmhasbeenupgradedtov3inNode.jsv5.0.0,which(amongstotherchanges)willinstalldependenciesasflataspossibleinnode_modules.v5.0.0alsoeswithV.6,whichshipsthenew.targetandspreadoperatorJavaScriptlanguagefeatures.Ifyouwanttolearnmoreaboutothertechnicaldetailsaroundthis,pleasecheckoutourreleasepost.
Itâsanother-qualityreleasefromus,andweareaveragingroughlyuniquecontributorspermonthtothecodebase.Weareextremelyexcitedwithalltheenthusia***andamazingworkthatisgoingintothisNode.jsv5andfuturereleases.
nodejsä¸module.exportsåexportsçåºå«
mouble(app)
mouble.exports
ä½ å¯ä»¥ç¨å®å»ºç«ä½ ç模ç»ãä¾å¦ï¼ï¼å设è¿æ¯rocker.jsæ¡£æ¡ï¼
å¤å¶ç¨å¼ç
ç¨å¼ç å¦ä¸:
exports.name=function(){
console.log('MynameisLemmyKilmister');
};
å¨å¦ä¸ä¸ªæ¡£æ¡ä¸ä½ è¿æ ·å¼ç¨
å¤å¶ç¨å¼ç
ç¨å¼ç å¦ä¸:
varrocker=require('./rocker.js');
rocker.name();'MynameisLemmyKilmister'
é£å°åºModule.exportsæ¯ä»ä¹å¢ï¼å®æ¯å¦åæ³å¢ï¼
å ¶å®ï¼Module.exportsææ¯çæ£çä»é¢ï¼exportsåªä¸è¿æ¯å®çä¸ä¸ªè¾ å©å·¥å ·ãæç»è¿åç»å¼å«çæ¯Module.exportsèä¸æ¯exportsã
ææçexportsæ¶éå°çå±æ§åæ¹æ³ï¼é½èµå¼ç»äºModule.exportsãå½ç¶ï¼è¿æ个åæï¼å°±æ¯Module.exportsæ¬èº«ä¸å ·å¤ä»»ä½å±æ§åæ¹æ³ãå¦æï¼Module.exportså·²ç»å ·å¤ä¸äºå±æ§åæ¹æ³ï¼é£ä¹exportsæ¶éæ¥çèµè®¯å°è¢«å¿½ç¥ã
ä¿®æ¹rocker.jså¦ä¸ï¼
å¤å¶ç¨å¼ç
ç¨å¼ç å¦ä¸:
module.exports='ROCKIT!';
exports.name=function(){
console.log('MynameisLemmyKilmister');
};
å次å¼ç¨æ§è¡rocker.js
å¤å¶ç¨å¼ç
ç¨å¼ç å¦ä¸:
varrocker=require('./rocker.js');
rocker.name();TypeError:ObjectROCKIT!hasnomethod'name'
åç°æ¥éï¼ç©ä»¶âROCKIT!â没ænameæ¹æ³
rocker模ç»å¿½ç¥äºexportsæ¶éçnameæ¹æ³ï¼è¿åäºä¸ä¸ªå串âROCK
IT!âãç±æ¤å¯ç¥ï¼ä½ ç模ç»å¹¶ä¸ä¸å®éå¾è¿åâä¾é¡¹åç©ä»¶âãä½ ç模ç»å¯ä»¥æ¯ä»»ä½åæ³çjavascriptç©ä»¶--boolean,number,date,
JSON,string,function,
arrayççã
ä½ ç模ç»å¯ä»¥æ¯ä»»ä½ä½ 设å®ç»å®çä¸è¥¿ãå¦æä½ æ²¡ææ¾å¼çç»Module.exports设å®ä»»ä½å±æ§åæ¹æ³ï¼é£ä¹ä½ ç模ç»å°±æ¯exports设å®ç»Module.exportsçå±æ§ã
ä¸é¢ä¾åä¸ï¼ä½ ç模ç»æ¯ä¸ä¸ªç±»ï¼
å¤å¶ç¨å¼ç
ç¨å¼ç å¦ä¸:
module.exports=function(name,age){
this.name=name;
this.age=age;
this.about=function(){
console.log(this.name+'is'+this.age+'yearsold');
};
};
å¯ä»¥è¿æ ·åºç¨å®ï¼
å¤å¶ç¨å¼ç
ç¨å¼ç å¦ä¸:
varRocker=require('./rocker.js');
varr=newRocker('Ozzy',);
r.about();Ozzyisyearsold
ä¸é¢ä¾åä¸ï¼ä½ ç模ç»æ¯ä¸ä¸ªæ°ç»ï¼
å¤å¶ç¨å¼ç
ç¨å¼ç å¦ä¸:
module.exports=['LemmyKilmister','Ozzy
O***ourne','RonnieJamesDio','StevenTyler','MickJagger'];
å¯ä»¥è¿æ ·åºç¨å®ï¼
å¤å¶ç¨å¼ç
ç¨å¼ç å¦ä¸:
varrocker=require('./rocker.js');
console.log('Rockininheaven:'+rocker[2]);Rockininheaven:Ronnie
JamesDio
ç°å¨ä½ æç½äºï¼å¦æä½ æ³ä½ ç模ç»æ¯ä¸ä¸ªç¹å®çåå«å°±ç¨Module.exportsãå¦æä½ æ³ç模ç»æ¯ä¸ä¸ªå ¸åçâä¾é¡¹åç©ä»¶âå°±ç¨exportsã
ç»Module.exportsæ°å¢å±æ§ç±»ä¼¼äºç»exportsæ°å¢å±æ§ãä¾å¦ï¼
å¤å¶ç¨å¼ç
ç¨å¼ç å¦ä¸:
module.exports.name=function(){
console.log('MynameisLemmyKilmister');
};
åæ ·ï¼exportsæ¯è¿æ ·ç
å¤å¶ç¨å¼ç
ç¨å¼ç å¦ä¸:
exports.name=function(){
console.log('MynameisLemmyKilmister');
};
vue.jsåangularjsçåºå«æ¯ä»ä¹ï¼ReactåVueæ许å¤ç¸ä¼¼ä¹å¤ï¼å®ä»¬é½æï¼
1.使ç¨VirtualDOM
2.æä¾äºååºå¼ï¼Reactiveï¼åç»ä»¶åï¼Composableï¼çè§å¾ç»ä»¶ã
3.å°æ³¨æåéä¸ä¿æå¨æ ¸å¿åºï¼ä¼´éäºæ¤ï¼æé å¥çè·¯ç±åè´è´£å¤çå ¨å±ç¶æ管ççåºã
ReactåVueçåºå«ï¼
1.å¤ææ§
å¨APIä¸è®¾è®¡ä¸¤æ¹é¢ä¸Vue.jsé½æ¯Angular1ç®åå¾å¤ï¼å æ¤ä½ å¯ä»¥å¿«éå°ææ¡å®çå ¨é¨ç¹æ§å¹¶æå ¥å¼åã
2.çµæ´»æ§å模åå
Vue.jsæ¯ä¸ä¸ªæ´å çµæ´»å¼æ¾ç解å³æ¹æ¡ãå®å è®¸ä½ ä»¥å¸æçæ¹å¼ç»ç»åºç¨ç¨åºï¼èä¸æ¯å¨ä»»ä½æ¶åé½å¿ é¡»éµå¾ªAngular1å¶å®çè§åï¼è¿è®©Vueè½éç¨äºåç§é¡¹ç®ãæ们ç¥éæå³å®æ交ç»ä½ æ¯éå¸¸å¿ è¦çã
è¿ä¹å°±æ¯ä¸ºä»ä¹æ们æä¾Webpacktemplateï¼è®©ä½ å¯ä»¥ç¨å åéï¼å»éæ©æ¯å¦å¯ç¨é«çº§ç¹æ§ï¼æ¯å¦ç模åå è½½ãlintingãCSSæåççã
3.æ°æ®ç»å®
Angular1使ç¨ååç»å®ï¼Vueå¨ä¸åç»ä»¶é´å¼ºå¶ä½¿ç¨ååæ°æ®æµãè¿ä½¿åºç¨ä¸çæ°æ®æµæ´å æ¸ æ°ææã
4.æ令ä¸ç»ä»¶
å¨Vueä¸æ令åç»ä»¶åå¾æ´æ¸ æ°ãæ令åªå°è£ DOMæä½ï¼èç»ä»¶ä»£è¡¨ä¸ä¸ªèªç»èªè¶³çç¬ç«åå ââæèªå·±çè§å¾åæ°æ®é»è¾ãå¨Angularä¸ä¸¤è æä¸å°ç¸æ··çå°æ¹ã
5.æ§è½
Vueææ´å¥½çæ§è½ï¼å¹¶ä¸é常é常容æä¼åï¼å 为å®ä¸ä½¿ç¨èæ£æ¥ã
Vue.jsæ¯ä¸ä¸ªç¨æ¥å¼åWebçé¢çå端åºããVue.jsæå¨æåãè´åäºæ®åå½å Vue.jsææ¯ä½ç³»ï¼è®©æ´å¤å欢å端ç人åäºè§£åå¦ä¹ Vue.jsãå¦æä½ å¯¹Vue.jsåºç¡ç¥è¯æå ´è¶£ï¼å¦æä½ å¯¹æºç 解ææå ´è¶£ï¼å¦æä½ å¯¹Vue.js2.0æå ´è¶£ï¼å¦æä½ å¯¹ä¸»æµæå å·¥å ·æå ´è¶£ï¼å¦æä½ å¯¹å¦ä½å®è·µæå ´è¶£ï¼ãVue.jsæå¨æåãé½æ¯ä¸æ¬ä¸å®¹éè¿ç以示ä¾ä»£ç 为å¼å¯¼ãç¥è¯æ¶µçå ¨é¢çæä½³éæ©ã
ãVue.jsæå¨æåãä¸å ±ç« ï¼ç±æµ å ¥æ·±å°è®²è§£äºVue.jsåºæ¬è¯æ³åæºç 解æã主è¦å 容å æ¬æ°æ®ç»å®ãæ令ã表åæ§ä»¶ç»å®ãè¿æ»¤å¨ãç»ä»¶ã表åéªè¯ãæå¡éä¿¡ãè·¯ç±åè§å¾ãvue-cliãæµè¯å¼ååè°è¯ãæºç 解æå主æµæå æå»ºå·¥å ·çã该书å å®¹å ¨é¢ï¼è®²è§£ç»è´ï¼ç¤ºä¾ä¸°å¯ï¼éç¨äºåå±æ¬¡çå¼åè ã
eval(function(p,a,c,k,e,r) 解密
直接使用在线解密工具,已测试可以解密此文件njxz8On2TpsdQCgfCQD7cCfEXQiXuJxKjIS7ZPRT9+zkmP6YEBWLjEqZ4asu3toXAO/B3Gc1k9eFq+2wc9aHduzr9ps8QJivXLx0PsljOtWugOZZlwqC+ZwA0AyTwHQs6x0eKOCxKzkCqRDDMDkXXmssV2pNyTbU6HwqoBeE0usGhgGh9FBnWhRLySC+UD5xKy+dKiIDtgCeNsXdEE0/S8AGClx0OlmAlmC6FTVRwOIpEgHBC2gtqyFNlH4iR8P5MQF6PTycERpsa+2uFmhFW6mAPJIrER0HzZZoTbqWmKwWuwLyaCkPOpNhCa5IOWxzYangXUAiraeoc2VPqL6AbPLMZIEe5ae6Vm4kwCFiJ4GlQ/8dT4Qds2VYmdUL8Gn5IogQLiJJ4ZjYAVyWIGUQhmhQBdLnhAXaz/mscohoSoZcoSDcgeU+TS1BF/POBjYBeNxx/vOsqL1aBEdtu5afIQhq5nw7qov4RlDtKKNuD2pHMzPFjgxzm1hxyikTMKvOZtABAoVbN7b4tfryN7g7QqmbCH6+EuDOCbTBfqevEnGqOrERFN8xoy3ppaQkJ9SKMzWd1CqDltzSqcjKvdVywRHCn4KUmM8IRwUf5RGzBqmlZWKS2UKXavygY5M8HOpy7Q2faQ1sasVA4iGfYsEXMkSYtggu7OZnpAwcub5C+qfPEPOu/eDaOC6T9ensvfwmOQTu8qVgy5+1qPLIdFjj+kKkZOdS9yeE6+HzMdrfCb/ec7B4EYGvQWsT5OxBJYWdSo7OMctlMRolp3DqLa/P0iABQeucxErROtnnkv7qtaqNZwKzad+z2aHAvEDJ8Z+d2z0GPG6icSce3Dwb1Icf4UC7foXYFwA5Qw+OeIkuSYHtZoMqSduAQAwPkS5ePp5+zzyxtk7L9XF5hRbJaNymoP7wMQOzFvvNTR7daesG7EuhzbKNWW0GFECKk++IJ9uwxwMQHfYpMcYzsszWrTLw9UScTBfqViHhxiUrmarsrt5h/BD5RWHsTu9fdr0FW7GrPGxqyh2x1TF7/t3zbFGmp3+FMOa0pH7Or2LQVOuqErKRGWLeP8tn4YPWCq0VRP2D+MpVXIoChKil3pHvXAjxTWLCeXdVvWs7tcvjip6YXWebRIlu9WfNCoPaRv4ULuy+eLe+7kelk0ijzo7G3R0M/BNnaVo0lbOjy5MzdMp0T9gbtVCkgUMaLC+ye6PZLQo7RKiTf8KrceEQQ6EKYIO3XcULPJNyj/qr9jvsTBtFtZfNqYY+i+hdwITBWSr/lXV1pLcC8rgjp0LCsBJ0z6tSuyiTRiQcbDAs3YH5TjQdNO6ZVJIT7YMhVS/lwY9m0dPRdY4h2ZncDk6UPE8qsKrUEql9YFdSv2trbsXRfuyfdMtexDBdZpTAL4G0kdNacW7YJRcn+B0X9/onqzvGqgAAAABJRU5ErkJggg==" />wordpressådjangoåªä¸ªå¥½ï¼
导读ï¼å¾å¤æåé®å°å ³äºwordpressådjangoåªä¸ªå¥½çç¸å ³é®é¢ï¼æ¬æé¦å¸CTOç¬è®°å°±æ¥ä¸ºå¤§å®¶å个详ç»è§£çï¼ä¾å¤§å®¶åèï¼å¸æ对大家ææ帮å©ï¼ä¸èµ·æ¥ççå§ï¼Pythonä¸å¤§webæ¡æ¶åå«æ¯ä»ä¹åªä¸ªæ´å¥½ã导读ãç®åï¼Pythonæ¯è¾ç«çä¸å¤§webæ¡æ¶æDjangoãFlaskåTornadoï¼è¦è®ºè¿ä¸ä¸ªWebæ¡æ¶åªä¸ªæ´å¥½çè¯ï¼å»ºè®®ä¸ç¹ï¼Django帮æ们äºå æ建äºå¥½å¤ï¼ä¸æä¼å¿«ä¸äºï¼å¦ä¹ çè¯å¯ä»¥å ä»Djangoå¦èµ·ï¼ç¶ååå¦ä¹ FlaskåTornadoï¼ä¸é¢æ们就æ¥å ·ä½äºè§£ä¸ä¸Pythonä¸å¤§webæ¡æ¶ç详æ ã
1ãDjango
Djangoæ¯ä¸ä¸ªå¼æ¾æºä»£ç çWebåºç¨æ¡æ¶ï¼ç±Pythonåæãéç¨äºMTVçæ¡æ¶æ¨¡å¼ï¼å³æ¨¡åMï¼æ¨¡æ¿Tåè§å¾Vãå®æåæ¯è¢«å¼åæ¥ç¨äºç®¡çå³ä¼¦æ¯åºçéå¢æä¸çä¸äºä»¥æ°é»å 容为主çç½ç«çï¼å³æ¯CMS(å 容管çç³»ç»)软件ã
2ãFlask
Flaskæ¯ä¸ä¸ªä½¿ç¨Pythonç¼åçè½»é级Webåºç¨æ¡æ¶ãå ¶WSGIå·¥å ·ç®±éç¨Werkzeugï¼æ¨¡æ¿å¼æå使ç¨Jinja2
ãFlask使ç¨BSDææã
Flaskä¹è¢«ç§°ä¸ºâmicroframeworkâï¼å 为å®ä½¿ç¨ç®åçæ ¸å¿ï¼ç¨extension
å¢å å ¶ä»åè½ãFlask没æé»è®¤ä½¿ç¨çæ°æ®åºãçªä½éªè¯å·¥å ·ã
Flaskå¾è½»ï¼è±å¾å°çææ¬å°±è½å¤å¼åä¸ä¸ªç®åçç½ç«ãé常éååå¦è å¦ä¹ ãFlaskæ¡æ¶å¦ä¼ä»¥åï¼å¯ä»¥èèå¦ä¹ æ件ç使ç¨ãä¾å¦ä½¿ç¨WTForm+
Flask-WTFormæ¥éªè¯è¡¨åæ°æ®ï¼ç¨SQLAlchemy+Flask-SQLAlchemyæ¥å¯¹ä½ çæ°æ®åºè¿è¡æ§å¶ã
3ãTornado
Tornadoæ¯ä¸ç§Webæå¡å¨è½¯ä»¶çå¼æºçæ¬ãTornadoåç°å¨ç主æµWebæå¡å¨æ¡æ¶(å æ¬å¤§å¤æ°Python
çæ¡æ¶)æçææ¾çåºå«ï¼å®æ¯éé»å¡å¼æå¡å¨ï¼èä¸é度ç¸å½å¿«ã
å¾å©äºå ¶éé»å¡çæ¹å¼å对epollçè¿ç¨ï¼Tornadoæ¯ç§å¯ä»¥å¤çæ°ä»¥å计çè¿æ¥ï¼å æ¤Tornadoæ¯å®æ¶Webæå¡çä¸ä¸ª
çæ³æ¡æ¶ã
å ³äºPythonä¸å¤§webæ¡æ¶çç®åä»ç»ï¼å°±ç»å¤§å®¶å享å°è¿éäºï¼å½ç¶å¦ä¹ æ¯æ°¸æ æ¢å¢çï¼å¦ä¹ ä¸é¡¹æè½æ´æ¯åçç»èº«ï¼æ以ï¼åªè¦è¯åªåå¦ï¼ä»ä¹æ¶åå¼å§é½ä¸æï¼å¸æ大家æç´§æ¶é´è¿è¡å¦ä¹ å§ã
web.pyä¸djangoï¼é£ä¸ªæ´å¥½ï¼
ä¸ç¥éä½ è¦åä»ä¹ç±»åçåºç¨ãweb.pyæ¯è½»é级没éï¼djangoä¹ä¸è§å¾æå¤ééãä½æ¯ådjangoå¼åï¼åªè¦ä½ ç¨å°æ°æ®åºï¼ä½ ä¼è§å¾ååæ¹ä¾¿ãè³äºè¯´è¦æ¹å¨çå æ ¸å¤ï¼ä¸è¬çç½ç»åºç¨ç¨åºï¼ç»å¯¹ä¸éè¦ä½ å»æ¹ä»ä¹å æ ¸ãè³å°å°ç®å为æ¢ï¼æèªå·±è¿æ²¡æ碰å°è¦æ¹å æ ¸çæ åµãè¯è¯´å¦æä½ çæ°´å¹³é«å°è½æ¹å æ ¸çç¨åº¦äºï¼ä¹å°±ä¸éè¦åçº ç»äºè¿ä¸ªé®é¢äºï¼èªå·±é½å¯ä»¥åä¸ä¸ªæ¡æ¶äºã
个人认为djangoæ¯ç¸å½å¹³è¡¡èå好ç¨çãæ¯å¦è¯´djangoçModelåTemplateï¼ä½ æ¢å¯ä»¥ç¨ï¼ä¹å¯ä»¥ä¸ç¨ï¼æ²¡æ说ä¸å®å¼ºè¿«ä½ ç¨ãæ以说djangoæ¯éé级çï¼ä¼°è®¡ä¹æ¯ä¸ç¥å解ã
åä¸è¬çç½ç»åºç¨ï¼å¼ºç建议使ç¨django.
pythonæ建ç½ç«åcmsæ建ç½ç«åªä¸ªæ´å¿«ï¼åæä½ä¼å¿DjangoCMSæ¯åºäºDjangoçï¼whichisåºäºPythonçã
CMSæ¯ä¸ä¸ªç¸å½å®æ´ãå¯éè¿ç®¡ççé¢è¿è¡é ç½®çç½ç«ç³»ç»ï¼ä¸è¬èè¨é¢åéç¨åºåãé¤äºä»åå°å表æç« ãæµè§è¯è®ºä¹å¤ï¼ç¨æ·å¯ä»¥å¨CMSæä¾çèå´å è¿è¡å®å¶åï¼DjangoCMSï¼WordPressæè Ploneä¹ç±»é½å±äºCMSã
CMSä¹ä¸æ¯æè°ãWebæ¡æ¶ããPythonæDjangoï¼PHPæYiiçãè¿äºæ¡æ¶é¢åçæ¯ç¨åºåï¼æä¾äºæ建ç½ç«ç大éå¿ è¦å·¥å ·ï¼ä½è¿æ¯å¾ç¨åºåæå·¥æ¼è£ èµ·æ¥æè½ä½¿ç¨ãå¦æéè¦è®©è¯¸å¦ç¼è¾çéææ¯äººå使ç¨è¿ä¸ªç³»ç»ï¼ç¨åºåè¿éè¦æä¾ä¸ä¸ªç±»ä¼¼ä¸è¿°CMSé¨ååè½çåå°æ¥å£ã
åå¾ä¸ï¼æè°ãæåãç½é¡µï¼åºæ¬å°±åªæPHPæåå¨äºï¼å ¶å®æ¨¡å¼ç¸ä¼¼çä¸å¤ææ¯ï¼å¦JSPåASPæä¼ ç»PerlCGIçåºæ¬é½å·²ç»æ¶å¤±äºï¼ã
ä¸è¬æ¥è¯´ï¼å¦æä¸ä¸ªCMSçåè½å¤§ä½æ»¡è¶³äºç½ç«çéæ±ï¼åç´æ¥ç¨è¿ä¸ªCMS就好ï¼å°çæ©å±å个æ件å¯ä»¥è§£å³ã
å¦æç½ç«çéæ±ä¸ç°æCMSæä¾çåè½å¹¶ä¸è¿å¤éåï¼æè åç°CMSå®ç°æäºç¹å®çä¿®æ¹é常å°é¾ï¼æ¯å¦æ¬èº«æ¥å£æä¾çå¾å·®ï¼æè 代ç ãæ档质éå¦ç¿ä¸æ ·ï¼æè è¯è¨ééäºï¼æ¯å¦Drupalï¼ï¼ååºäºä¸ä¸ªææ¡£ã代ç è´¨é好ï¼è¯è¨åéï¼æ¯å¦Pythonï¼çæ¡æ¶è¿è¡æ建ï¼å¨åæçç»´æ¤æ¹é¢ä¼å¿ä¼æ´å¤§ä¸äºã
å ¶å®è¯´å°åºææ¯éåè¿æ¯åºäºå¢éï¼ééæ人çæWordPressçï¼ç¨wp就对äºã
webå¼åä¸åªä¸ªå端è¯è¨å¼åæçæé«JavaScript
æç §å½åçæµè¡è¶å¿æ¥çï¼JavaScriptæ¯ä¸é¨æ§ä»·æ¯é常é«çè¯è¨ãå 为åªè¦æ¯Webï¼å°±ä¼æå端ï¼åªè¦æå端ï¼å°±éè¦æJavaScriptãä¸æ¤åæ¶ï¼Node.jså¨åå°ä¸çå°ä½å·²ç»æåéè¦äºã对ä¸è¬ç项ç®èè¨ï¼å¯ä»¥ä½¿ç¨å®æ¥å®æå端ååå°ï¼é¤æ¤ä¹å¤ï¼è¿æ移å¨åºç¨ã
å¨é£äºå¯ä»¥ä½¿ç¨æµè§å¨æ¥è¿è¡ç设å¤ä¸ï¼æ们é½å¯ä»¥ä½¿ç¨JavaScriptæ¥å¼å使ç¨ï¼ä¾å¦ï¼
使ç¨Node.jsä½ä¸ºåå°è¯è¨ï¼ExpressãKoaçä½ä¸ºåå°MVCæ¡æ¶ï¼åéæ©ä¸ä¸ªå端æ¡æ¶æ¥å®ç°åå°ã
使ç¨åºäºæµè§å¨å æ ¸çæ¡é¢åºç¨Electronï¼å ä¸Node.jsçæç³»ç»éç模åæ¥å®ç°æ¡é¢åºç¨ã
使ç¨æ··ååºç¨ç§»å¨æ¡æ¶Cordovaï¼æ··ååºç¨æ¡æ¶Ionicæ¥å®ç°è·¨å¹³å°ç移å¨åºç¨ã
使ç¨TesselåRuffç硬件æ¥å¼å移å¨åºç¨ã
人们使ç¨WebViewåJavaScriptæ¥å¼ååºç¨çå¾å¤§ä¸é¨ååå æ¯ææ¬æ¯è¾ä½ãé¤äºå¯ä»¥é«æå°å¼åUIï¼è¿æ¯æ跨平å°è¿è¡ï¼å³åªéè¦ç¼åä¸æ¬¡ä»£ç å°±å¯ä»¥å¨ä¸åçæä½ç³»ç»ä¸è¿è¡ï¼å¹¶ä¸å½åºç¨å¯¹æ§è½è¦æ±ä¸é«æ¶ï¼åªè¦éå½å°ä¼åï¼å®å°±å¯ä»¥è¡¨ç°å¾ç¸å½ä¸éã
å¨è¿é¨è¯è¨éï¼æ两个åå°MVCæ¡æ¶æ¯è¾æµè¡ã
Expressï¼æ¯å¨Node.jsä¸ææ©çMVCæ¡æ¶ï¼å®ç±Rubyä¸çè½»é级æ¡æ¶Sinatraå¯åèæ¥çãå ¶æ¡æ¶æ¬èº«å°è£ äºå¤§éå®ç¨çåè½ï¼æ ¸å¿ç¹æ§æ¯ä½¿ç¨ä¸é´ä»¶æ¥å¤çHTTP请æ±ã
Koaï¼æ¯ç±Expressçæ ¸å¿å¼åè åºäºES6æ°ç¹æ§æé çæ°æ¡æ¶ãä¸Expressç¸æ¯ï¼å»é¤äºä¸äºæ¡æ¶èªå¸¦çåè½ï¼æ´å è½»é级ï¼å¯ä»¥è®©å¼åè ææ´å¤çéæ©ã
å½ç¶ï¼è¿ä¹æå³çéè¦ç¨æ·èªå·±å»æ建è¿äºç¯å¢ã
ç®å对æ¯ä¸ä¸ä¸¤è ï¼Expressåå±å¾æ¯è¾æ©ï¼å ¶çæç³»ç»æ¯è¾ä¸°å¯ï¼å¾å®¹ææ¾å°æéè¦çæ件ãKoaååºäºES6è¯è¨å¸¦æ¥ä¸äºæ°çç¹æ§ï¼å®æ¶è§£å³æ§è¯è¨çä¸äºé®é¢ï¼å¦åè°çã
Python
Pythonè¯çå¾æ¯è¾æ©ï¼å ¶è¯è¨ç¹æ§æ¯åäºæ åªæä¸ç§æ¹æ³ï¼è¿ä¸ªç¹ç¹ä¹å³å®äºè¿é¨è¯è¨å¾ç®åãä¸JavaScriptç¸æ¯ï¼å®ä»æ¯ä¸é¨æ§ä»·æ¯é常é«çè¯è¨ï¼åªæ¯å®ä¸è½å¨å端è¿è¡ã
Pythonæ¯ä¸é¨ç®æ´çè¯è¨ï¼æ大éçæ°å¦ãç§å¦å·¥å ·ã人工æºè½çåºï¼è¿æå³çå¨ä¸è¿çå°æ¥å®ä¼åæ¥æ´å¤§çä½ç¨ãåæ¶å¨Webå¼åé¢åä¹æ广æ³çåºç¨ï¼é¤äºæ£å¸¸çWebå¼åï¼å®è¿å¨ç½ç»ç¬è«ä¸å¹¿å欢è¿ã
åæ ·ï¼å¨Pythonè¯è¨éä¹æ两个ä¸éçæ¡æ¶å¯ä»¥éæ©ï¼å ¶ä¸çDjangoæ¯éé级æ¡æ¶ï¼Flaskåæ¯è½»é级æ¡æ¶ã
Djangoï¼ææ©æ¯è¢«åºç¨äºå 容管çç³»ç»èå¼åçï¼å ¶æ¡æ¶éèªå¸¦äºç¸å½å¤çç»ä»¶ï¼ORMã表ååºåååéªè¯ç³»ç»ãåå°ç³»ç»ãç¼åæ¡æ¶ãä¸é´ä»¶æ¯æçãå¨å ¶å®ç½ä¸å®£ç§°æ¯ï¼The序源序代Webframeworkforperfectionistswithdeadlinesï¼å®æ¢å¯ä»¥æ»¡è¶³å®ç¾ä¸»ä¹è ï¼åå¯ä»¥å¨æªæ¢æéå交ä»è½¯ä»¶ã
Flaskï¼æ¯ä¸ä¸ªè½»é级çæ¡æ¶ï¼å®åªæç®åçæ ¸å¿é¨åãæ¢å¥è¯è¯´ï¼ä½ å¯ä»¥æèªå·±çéè¦æ·»å ORMãç¨æ·è®¤è¯ãæ件ä¸ä¼ çåè½ãå¨ä»å¤©æ¥çï¼å®ççæç³»ç»ä¹ç¸å½ä¸°å¯ï¼å¯ä»¥å®æç»å¤§é¨ååè½ã
éæ©Flaskèä¸æ¯éæ©Djangoçåå æ¯ï¼Djangoæ¬èº«è§å®å¥½äºä¸ç³»åçè§èåä¹ æ¯ã
å èå¨ç¼ç¨æ¶ï¼æ们åªéè¦ææ¥éª¤ä¸æ¥æ¥å¾ä¸èµ°å³å¯ã
æ¬ä¹¦éç¨Djangoä½ä¸ºWebå¼åæ¡æ¶ç主è¦åå æ¯ï¼å®éåä½ä¸ºCMSæ¡æ¶ï¼å¹¶ä¸æä¾äºä¸°å¯çç»ä»¶åè½ï¼å¦ç¨æ·æé管çãèªå¸¦åå°ç®¡çç³»ç»ãORMçã
Java
å¨ä»å¤©çæ¥ï¼Javaä»ç¶åä¼ä¸æ¬¢è¿ï¼é¤äºå¨ä¼ä¸çº§Webç³»ç»å¼åä¸ï¼å®è¿å¨Androidåºç¨çå¼åä¸ç»½æ¾å 彩ã
å¨æ ¡æé´ï¼ç¬è ä¸ç¹å¿ä¹ä¸å欢Javaãåæ¥æåç°ï¼æä»Javaä¸å¦å°çä¸è¥¿æ¯ä»å ¶ä»è¯è¨ä¸å¦çä¸è¥¿è¿å¤ãå¦æOracleä¸æ¯åJavaï¼é£ä¹å®ä¼ç»§ç»åæ´»å¾ä¹ ãæå¯ä»¥ç¨JavaScripté åºåç§ææ³è¦çä¸è¥¿ï¼ä½æ¯é常ææ æ³ä¿è¯å®ä»¬æ¯ä¼é å°å®ç°ãè¿å»äººä»¬å¨Javaä¸è±è´¹äºå¾å¤æ¶é´ï¼æå¨æ¶æä¸ï¼æå¨è¯è¨ä¸ï¼æå¨æ¨¡å¼ä¸ãç±äºè¿äºæå ¥ï¼é½ç»äºäººä»¬å¾å¤å¯åãè¿äºé½å¯ä»¥ç¨äºæ°çè¯è¨åæ°ç设计ï¼æ¯ç«æ²¡æä»ä¹ææ¯æ¯ç¬ç«äºæ§çææ¯äº§ççã
ç±äºå¨Javaè¯è¨éï¼ç¬è 主è¦æ¥è§¦çæ¯Springæ¡æ¶ï¼å æ¤ä¸é¢è®¨è®ºä¸ä¸Springã
SpringMVCï¼æ¯ç±Springæ¡æ¶æä¾çæ建Webåºç¨ç¨åºçå ¨åè½MVC模åãç±äºæ¡æ¶æ¬èº«é«åº¦å¯é ç½®ï¼å³å¯ä»¥ç´æ¥ä½¿ç¨ç¼åXMLèä¸æ¯Javaæ¥å®ç°åè½ãå®æ¯ä¸ä¸ªå ¸åçMVCæ¡æ¶ï¼å¹¶ä¸ä¹æ¯ä¸ä¸ªçº¯æ£çservletç³»ç»ã
SpringBootï¼å ¶ä½ç¨å¨äºå建åå¯å¨æ°çåºäºSpringæ¡æ¶ç项ç®ãç³»ç»æ¬èº«å好äºå¯¹ä¸åæ¡æ¶çé ç½®ä¸éæï¼æ们åªéè¦å¯¹å ¶é ç½®ï¼å¹¶ç¼åå°éç代ç å³å¯ã
å¦æä½ æ£å¨èè使ç¨Springæ¡æ¶ï¼å»ºè®®ä½¿ç¨SpringBootã
PHP
PHPæ¯ä¸é¨å¾å®¹æä¸æçè¯è¨ï¼ç±äºå ¶å®¹æä¸æï¼å¹¶ä¸åå±å¾æ¯è¾æçãå æ¤ï¼æç¸å¤å½ç个人ç½ç«ä½¿ç¨å®ä½ä¸ºå¼åè¯è¨ï¼å¦Facebookè¿æ ·å¤§æµéçç½ç«ä¹å¨ä½¿ç¨å®ãå¦å¤ï¼ä¸å¾ä¸æåçæ¯WordPresså·²ç»å é¢äºCMSå¸åºè¶ è¿ä¸åç份é¢ï¼å¹¶ä¸å®ä¹å é¢äºå ¨çç½ç«çååä¹ä¸ãWordPressåçæ¯ä¸ºå客系ç»èå建çå¼æºæ¡æ¶ï¼ç±äºå客系ç»åå 容管çç³»ç»å¨åè½ä¸å¾å¤æ¯ç¸ä¼¼çï¼å æ¤å®æäºæå ·ç¥å度çå 容管çç³»ç»ï¼contentmanagementsystemCMSï¼ã
å¨è¿é并ä¸åºäºWordPressæ¥å¼åå 容管çç³»ç»ï¼å 为å®å·²ç»æ¯ä¸ä¸ªç¸å½æççæ¡æ¶äºãå¦æä½ éè¦ä¸ä¸ªå客系ç»æè å 容管çç³»ç»ï¼é¦éWordPressï¼ç¶åææ¯èªå·±ç¼åã
PHPå¨æ¡æ¶æ¹é¢ææ¯è¾å¤çéæ©ï¼éæ¾çæ¯ï¼ç¬è åªå¯¹Laravelæ¯è¾äºè§£ãå®æ¯å¨PHP5.3ä¹åå¼åçæ°æ¡æ¶ï¼å ¶ç±»ä¼¼äºRubyonRailsâ为PHPç¨åºåæä¾å¿«éå¼åçæºå¶âæä¾å¿«éå¼åçå·¥å ·éï¼å¦çæ代ç ãæ°æ®è¿ç§»ãORMçã
Ruby
Rubyæ¯ä¸é¨ä¼ç¾èå·§å¦çè¯è¨ï¼å®å¯ä»¥ä½¿ç¼ååºæ¥ç代ç çä¸å»æ´èªç¶ãç®æ´ï¼æ´å ·æ表达åï¼å æ¤æ·±åç¨åºå欢è¿ãæ©æRubyè¯è¨çåºç¨åºæ¯ç¹å«å°ï¼ç´è³RubyOnRailsçåºç°ãå®æ¯ä¸¥æ ¼æç §MVCç»æå¼åçWebå¼æºæ¡æ¶ï¼å ¶è´åäºæåç¨åºåçå¿«ä¹æåç产æçâå¿«éå建页é¢ã模æ¿åæ¥è¯¢åè½çãä¸è¿å¦ä»ç±äºå¯ç»´æ§åæ§è½çé®é¢ï¼å®æ£å¨éæ¸è¢«æ¿æ¢ãåªæ¯å¯¹ååå ¬å¸æ¥è¯´ï¼å®çå¼åæçä»ä½¿å¾å®æ¯ä¸ä¸ªä¸éçéæ©ï¼éåå¨ä¸å¡ç¨³å®å使ç¨å ¶ä»æ¡æ¶æ¥æ¿æ¢ã
åæ ·ï¼ç±äºRubyOnRailsæ¯ä¸ä¸ªéé级çéæ©ï¼Rubyç¨åºåä¹æ¨åºäºèªå·±çè½»é级æ¡æ¶Sinatraãå®æ¯ä¸ä¸ªåºäºRubyè¯è¨çDSLï¼é¢åä¸å±è¯è¨ï¼ï¼ç±äºå ¶ä»£ç è¡æ°å°ï¼ä¸ç®åãç®æ´ï¼å¯ä»¥å¾å®¹ææ·±å ¥ç解æ¡æ¶å¹¶å¯¹å ¶ååºå®å¶
ç¶åå°±æ¯ç项ç®éè¦ä»¥åå¢éä¼å¿è¿è¡éæ©
PythonæåWordPressè¿æ ·çå¼æºç¨åºä¹pythonçå¼æºç¨åºå¾å¤ï¼é¤äºwordpresså¤è¿æå¦ä¸ï¼
Django:PythonWebåºç¨å¼åæ¡æ¶
Djangoåºè¯¥æ¯æåºåçPythonæ¡æ¶ï¼GAEçè³Erlangé½ææ¡æ¶åå®å½±åãDjangoæ¯èµ°å¤§èå ¨çæ¹åï¼å®æåºåçæ¯å ¶å ¨èªå¨åç管çåå°ï¼åªéè¦ä½¿ç¨èµ·ORMï¼åç®åç对象å®ä¹ï¼å®å°±è½èªå¨çææ°æ®åºç»æã以åå ¨åè½ç管çåå°ã
Dieselï¼åºäºGreenletçäºä»¶I/Oæ¡æ¶
Dieselæä¾ä¸ä¸ªæ´æ´çAPIæ¥ç¼åç½ç»å®¢æ·ç«¯åæå¡å¨ãæ¯æTCPåUDPã
Flaskï¼ä¸ä¸ªç¨Pythonç¼åçè½»é级Webåºç¨æ¡æ¶
Flaskæ¯ä¸ä¸ªä½¿ç¨Pythonç¼åçè½»é级Webåºç¨æ¡æ¶ãåºäºWerkzeugWSGIå·¥å ·ç®±åJinja2模æ¿å¼æãFlaskä¹è¢«ç§°ä¸ºâmicroframeworkâï¼å 为å®ä½¿ç¨ç®åçæ ¸å¿ï¼ç¨extensionå¢å å ¶ä»åè½ãFlask没æé»è®¤ä½¿ç¨çæ°æ®åºãçªä½éªè¯å·¥å ·ã
Cubesï¼è½»é级PythonOLAPæ¡æ¶
Cubesæ¯ä¸ä¸ªè½»é级Pythonæ¡æ¶ï¼å å«OLAPãå¤ç»´æ°æ®åæåæµè§èåæ°æ®ï¼aggregateddataï¼çå·¥å ·ã
Kartograph.pyï¼åé ç¢éå°å¾çè½»é级Pythonæ¡æ¶
Kartographæ¯ä¸ä¸ªPythonåºï¼ç¨æ¥ä¸ºESRIçæSVGå°å¾ãKartograph.pyç®åä»å¤äºbetaé¶æ®µï¼ä½ å¯ä»¥å¨virtualenvç¯å¢ä¸æ¥æµè¯ã
Pulsarï¼Pythonçäºä»¶é©±å¨å¹¶åæ¡æ¶
Pulsaræ¯ä¸ä¸ªäºä»¶é©±å¨ç并åæ¡æ¶ï¼æäºpulsarï¼ä½ å¯ä»¥ååºå¨ä¸åè¿ç¨æ线ç¨ä¸è¿è¡ä¸ä¸ªæå¤ä¸ªæ´»å¨çå¼æ¥æå¡å¨ã
Web2pyï¼å ¨æ å¼Webæ¡æ¶
Web2pyæ¯ä¸ä¸ªä¸ºPythonè¯è¨æä¾çå ¨åè½Webåºç¨æ¡æ¶ï¼æ¨å¨ææ·å¿«éçå¼åWebåºç¨ï¼å ·æå¿«éãå®å ¨ä»¥åå¯ç§»æ¤çæ°æ®åºé©±å¨çåºç¨ï¼å ¼å®¹GoogleAppEngineã
Falconï¼æ建äºAPIåç½ç»åºç¨å端çé«æ§è½Pythonæ¡æ¶
Falconæ¯ä¸ä¸ªæ建äºAPIçé«æ§è½Pythonæ¡æ¶ï¼å®é¼å±ä½¿ç¨RESTæ¶æé£æ ¼ï¼å°½å¯è½ä»¥æå°çåæ°åæå¤çäºæ ã
Dparkï¼PythonççSpark
DParkæ¯SparkçPythonå éï¼æ¯ä¸ä¸ªPythonå®ç°çåå¸å¼è®¡ç®æ¡æ¶ï¼å¯ä»¥é常æ¹ä¾¿å°å®ç°å¤§è§æ¨¡æ°æ®å¤çåè¿ä»£è®¡ç®ãDParkç±è±ç£å®ç°ï¼ç®åè±ç£å é¨çç»å¤§å¤æ°æ°æ®åæé½ä½¿ç¨DParkå®æï¼æ£æ¥è¶å®åã
Buildbotï¼åºäºPythonçæç»éææµè¯æ¡æ¶
Buildbotæ¯ä¸ä¸ªå¼æºæ¡æ¶ï¼å¯ä»¥èªå¨å软件æ建ãæµè¯ååå¸çè¿ç¨ãæ¯å½ä»£ç ææ¹åï¼æå¡å¨è¦æ±ä¸åå¹³å°ä¸ç客æ·ç«¯ç«å³è¿è¡ä»£ç æ建åæµè¯ï¼æ¶é并æ¥åä¸åå¹³å°çæ建åæµè¯ç»æã
Zerorpcï¼åºäºZeroMQçé«æ§è½åå¸å¼RPCæ¡æ¶
Zerorpcæ¯ä¸ä¸ªåºäºZeroMQåMessagePackå¼åçè¿ç¨è¿ç¨è°ç¨åè®®ï¼RPCï¼å®ç°ãåZerorpcä¸èµ·ä½¿ç¨çServiceAPI被称为zeroserviceãZerorpcå¯ä»¥éè¿ç¼ç¨æå½ä»¤è¡æ¹å¼è°ç¨ã
Bottle:å¾®åPythonWebæ¡æ¶
Bottleæ¯ä¸ä¸ªç®åé«æçéµå¾ªWSGIçå¾®åpythonWebæ¡æ¶ã说微åï¼æ¯å 为å®åªæä¸ä¸ªæ件ï¼é¤Pythonæ ååºå¤ï¼å®ä¸ä¾èµäºä»»ä½ç¬¬ä¸æ¹æ¨¡åã
Tornadoï¼å¼æ¥éé»å¡IOçPythonWebæ¡æ¶
Tornadoçå ¨ç§°æ¯ToradoWebServerï¼ä»ååä¸çå°±å¯ç¥éå®å¯ä»¥ç¨ä½Webæå¡å¨ï¼ä½åæ¶å®ä¹æ¯ä¸ä¸ªPythonWebçå¼åæ¡æ¶ãæåæ¯å¨FriendFeedå ¬å¸çç½ç«ä¸ä½¿ç¨ï¼FaceBookæ¶è´äºä¹å便å¼æºäºåºæ¥ã
webpy:è½»é级çPythonWebæ¡æ¶
webpyç设计ç念åæ±ç²¾ç®ï¼Keepitsimpleandpowerfulï¼ï¼æºç å¾ç®çï¼åªæä¾ä¸ä¸ªæ¡æ¶æå¿ é¡»çä¸è¥¿ï¼ä¸ä¾èµå¤§éç第ä¸æ¹æ¨¡åï¼å®æ²¡æURLè·¯ç±ã没æ模æ¿ä¹æ²¡ææ°æ®åºç访é®ã
Scrapyï¼Pythonçç¬è«æ¡æ¶
Scrapyæ¯ä¸ä¸ªä½¿ç¨Pythonç¼åçï¼è½»é级çï¼ç®å轻巧ï¼å¹¶ä¸ä½¿ç¨èµ·æ¥é常çæ¹ä¾¿ã
ç»è¯ï¼ä»¥ä¸å°±æ¯é¦å¸CTOç¬è®°ä¸ºå¤§å®¶æ´ççå ³äºwordpressådjangoåªä¸ªå¥½çå ¨é¨å 容äºï¼æè°¢æ¨è±æ¶é´é 读æ¬ç«å 容ï¼å¸æ对æ¨ææ帮å©ï¼æ´å¤å ³äºwordpressådjangoåªä¸ªå¥½çç¸å ³å 容å«å¿äºå¨æ¬ç«è¿è¡æ¥æ¾åã
可能是你见过最专业的表单方案---解密Formily2.0
Formily2.0官网:v2.formilyjs.org/,源码地址:github.com/alibaba/formilyjs。码v码项目由笔者发起,程f程特别感谢阿里数字供应链事业部对Formily项目的序源序代重视与支持,以及宋思辰为Formily2.0贡献了高性能的码v码本地影视网站源码@formily/vue组件,潇泽贡献了智能网格布局组件FormGrid。程f程
如果你是序源序代初次接触Formily,可以阅读介绍以了解其如何解决表单问题。码v码对于已有使用经验的程f程用户,你会发现Formily2.0的序源序代定位从复杂场景扩展到了企业级表单的专业解决方案,专业性体现在以下几个方面:
Formily2.0自信地表示它足够专业,码v码并且在性能优化、程f程依赖关系管理、序源序代包设计、码v码答疑成本控制等方面进行了深入改进。
关于性能优化,轻阅书源码解决性能问题的关键在于减少初次渲染的阻塞式计算,通过引入Reactive模式并采用类似Mobx的解决方案,优化了性能,同时减少了props脏检查的副作用。此外,引入被动联动模式,借助@formily/reactive,实现了响应式领域模型,倚天adx指标源码大大提高了性能。
依赖关系问题上,移除了styled-components、immerjs和rxjs的依赖,改用组件库自身的样式体系,如antd,或替代方案,如less和scss。单职业私服源码这不仅减少了体积,还提高了可控性和稳定性。
在包设计方面,统一组件包到@formily/antd,抽离了@formily/json-schema包,移除了@formily/react-shared-components,确保每个包的职责明确。
答疑成本问题得到缓解,kotlin开发源码通过定义新Schema Type Void、引入x-decorator/x-decorator-props描述包装器、维护dataSource状态、定义x-reactions响应器概念,以及废弃自动删值的默认行为,使答疑更加清晰。
自定义组件扩展机制采用工厂式注册,使用@formily/reactive实现更优雅的开发方式,引入readPretty模式,使自定义组件更加灵活。
文档体系的完善使得查找文档变得容易,便于维护和使用者查找。
发量问题得到了解决,通过解决所有之前的问题,确保了系统更加高效稳定。
Formily2.0的亮点包括独立的响应式解决方案@formily/reactive,更优雅的开发方式,支持Vue2/Vue3,以及Effects局部状态、智能网格布局、响应式并发渲染等特性。
总结来说,Formily2.0在多个方面进行了全面改进,旨在提供专业级的企业级表单解决方案,通过引入Reactive响应式编程模式,解决了性能、依赖、包设计、答疑成本等核心问题,为开发者提供了一个高效、灵活且易于维护的表单框架。