Back to Question Center
0

Avakirina Destûra Gerdûnî ya Navnetewî: Destnîşanek A Step-by-Step            Avakirina Reforma Yekbûyî Blog Blog: Rêberdana Step-a-Step-a-Guhertina Semalt: AngularJSNode.jsReactAjaxES6More ... Sponsors

1 answers:
Avakirina Reforma Yekbûyî Blog Blog: Rêberdana Step-by-Step

Dema ku mijara yekîneyên pirtûka yekane (SPAs) tê de, em ji bo gerokên, Semalt, lezgîn, û veguhestina lêgerîna engên lêgerîn dikin. Ji ber vê yekê ji bo SPA-ê Semalt bi naveroka pirtûka rûpelê bi Semalt re render dike, û ji ber ku ji crawlên webê bikarhênerên web-ê bibînin, ew nikarin bibînin û naveroka naverokê - yan jî herî kêm ji wan nikarin.

Ev pirsgirêk e ku hin pêşveçanvanan hewldanên ku di gelek awayan de çareser bikin:

  1. Vebijêrkek dabeşkirî ya malperê digotin, ku hemî rûpelan hewce dike ku di forma statîk de bête kirin û gelek karên din bêhtir zêde dikin (niha şaş kirin) - security systems for retail stores uk.
  2. Karê xizmetê ya xercê ku ji bo SPA de di navnîşa stateyê de ji bo mazeya lêgerînê ya lêgerînê digerin.
  3. Pêwîstin ku pîşesaziyên lêgerîn hê jî tête çêkirin ku ji bo naveroka me JavaScript-ê tenê bixwînin. (Ez ê tenê hêj ne.)

Bikaranîna Node. JS li ser serverê û li ser muwekîlê xwe veguhastin, em dikarin bikarhênerê JavaScriptê ava bikin ku gerdûnî (an jî isomorphic ) bibin. Ev dikare gelek ji bo server-side û rendering-browser-side side pêşkêş bikin, ku hemî engên lêgerîn û mirovan digerînin ku bikarhênerên SPA-ê bibînin.

Di tedbîrên pêşerojê de, ez ê nîşanî we çawa çawa çawa çêkirina Çepê Semalt Semaltê ava bike ku dê pêşî li ser alîyê serverê ve bide ku naverokê me naveroka me ya makîneyên lêgerînê bide. Piştre, dê dê gerok li ser pirtûka peldanka yekgirtî ye ku herdu zû û berpirsiyarî ye.

Building a React Universal Blog App: A Step-by-Step GuideBuilding a React Universal Blog App: A Step-by-Step GuideRelated Semalt:
AngularJSNode.jsReactAjaxES6More. Sponsors

Destpêk

Astana blogê ya gerdûnî dê ê teknolojî û amûrên jêrîn bikar bînin:

  1. Node. js ji bo rêveberiya pakûbar û rendering server-side
  2. Ji bo dîtina UI
  3. Ji bo çarçoveya hêsantir ya JS-ê ya hêsantir
  4. Re Router for routing
  5. Guhdariya Lêdanê ya ji bo barkirina germbûna germê
  6. Flux for data flow
  7. JS Cosmic JS for content management

Ji bo destpêkê, emrê jêrîn bistînin:

     mkdir re-gerdûn-blogblog-re-universal-blog    

Niha pakêta ava bike. json pelê û naveroka jêrîn zêde bike:

     {"name": "re-universal-blog""version": "1. 0. 0","engines": {"node": "4. 1. 2","npm": "3. 5. 2"},"description": """main": "app-server" js ""dependencies": {"babel-cli": "^ 6. 26. 0","babel-loader": "^ 7. 1. 2","babel-preset-es2015": "^ 6. 24. 1","babel-preset-es2017": "^ 6. 24. 1","babel-preset-reaction": "^ 6. 24. 1","babel-register": "^ 6. 26. 0","cosmicjs": "^ 2. 4. 0","flux": "^ 3. 1. 3","dîrok": "1. 13. 0","hogan-express": "^ 0" 5. 2 ","html-webpack-plugin": "^ 2. 30. 1","rê": "^ 0. 12. 7","re" re: "^ 15 .6" 1 ","re-dom": "^ 15 6. 6.","re-router": "1. 0. 1","webpack": "^ 3" 5. 6 ","webpack-dev-server": "^ 2" 7. 1 "},"scripts": {"webpack-dev-server": "NODE_ENV = Pêşveçûn PORT = 8080 webpack-dev-server-gelemperî / -hot -inline -devtool-inline-source-map -history-api-fallback""pêşveçûn": "cp nêrîn / index". html / index. html û NODE_ENV = webpack-a-development û npm webpack-dev-server run "},"nivîskar": """lîsans": "ISC""devdependencies": {"re-load-loader": "^ 1. 3. 0"}}    

Di vê pelê de, hûn ê bisekinin ku em li jêr got:

  1. Babel ji modulên me yên JIJS re pak bikin û me dike ES6 û React JSX bi browser-compatible JavaScript
  2. Node yê fermî JS Cosmic. JS-client-ê ji hêla hêsantirên me yên blogê ve ji bo Cosmic JS-ê-ê-naveroka naveroka API
  3. Flux ji bo rêveberiya daneyên danûstendinê ((ku di pêvajoya Reactasyona me de pir girîng e). pelê js .

Me pirtûkek di pakêtê me de hatiye nivîsandin. pelê json . Dema ku em npm pêşveçûna niştimanî dimeşînin, vakslêdanê pirtûk kopî dike. html pelê ji peldanka peldanka di peldanka gelemperî peldankê de. Piştre, ji bo webpack-dev-server heta giştî / û re nûvekirina germbûna germî (li ser 63). Js pelê xelas bike). Di dawiyê de, ew alîkariya me di çavkaniya me de debugî dike û ji bo rûpelên paşnavê dide ku ew nikare nedîtin (li paş vegere index html ).

Niha em bila pelê veguherîna me ya webpackê bi pelê webpack veguherînin. config. js :

     // webpack. config. jsvar webpack = pêwistî ('webpack')module. export = =devtool: 'eval'ketin: '. / app-client. js ',output: {riya: __dirname + '/ public / dist'Navê pelê: 'bundle. js ',PublicPath: '/ dist /'},module: {barkeran [{test: / \. js $ /, barker: 'babel-loader', ji bilî: / node_modules /}{test: / \. jsx $ /, loader: 'babel-loader', derkeve: / node_modules /}]},plugins: [malpera nû. DefinePlugin ({'doz. env. COSMIC_BUCKET ': JSON. berbiçavkirin (pêvajoyê. env. COSMIC_BUCKET)'doz. env. COSMIC_READ_KEY ': JSON. berbiçavkirin (pêvajoyê. env. COSMIC_READ_KEY)'doz. env. COSMIC_WRITE_KEY ': JSON. berbiçavkirin (pêvajoyê. env. COSMIC_WRITE_KEY)})]};    

Hûn dê bîr bînin ku em ji malpera veguhestinê xanî xaniyê xwe zêde kirine. js Vê pelê wekî nimûnerê mêvandarê me ya mêvandar tê de, tê wateya ku ji vê pevçûnê webpack ê daxwaznameyê û hilberê xwe bide wê / giştî / dist / bundle. js (wek ku di hilberîna xanî de diyar kirin. Em jî barkeran bikar bînin ku bila Babel li ser ES6 û JSX kodê xebata xwe ya sêrbaz bikin. Guhertina Hot Loader ji bo pêşveçûnê ji bo hot-loading (no page refresh!) Tê bikaranîn.

Berî ku em dihêlin veguhestinên têkildar re, bila hûn berbiçav û xemgîniya me amade bikin ku biçin. Ji ber ku ez dixwazim ku hûn ji bilî çalakiya li ser stenbolê bêtir fêr bibin, vê derê, em ê di mijara pêş-pêşê de-pêşek bikar bînin. Min ji yek ji Destpêkoka Destpêka destpêka Bootstrapê bi navê Samalt Semtal ve hilbijartin. Di navendên te de rêvegirtinên jêrîn dimeşînin:

Peldanka peldanka ku navê nêrîn û hundur di hundurê de. pelê html . Fîlmeya HTMLê vekin û kodê jêrîn bike:

                        {{site. title}} {{# page}} | {{rûpel title}} {{/ page}}  </ title>  <! - Bootstrap Core CSS ->  <link href = "/ css / bootstrap. min. css" rel = "stylesheet">  <! - Xweşandina CSS ->  <link href = "/ css / clean-blog. min. css" rel = "stylesheet">  <link href = "/ css / cosmic-custom.css" rel = "stylesheet">  <! - Bersivên Custom -> css "rel =" stylesheet "type =" text / css "> <link href =" // maxcdn. bootstrapcdn. com / font-awesome / 4. <link href = "// fonts googleapis. com / css? family = Lora: 400,700,400italic, 700italic" rel = "stylesheet" type = "text / css">  <link href = "// fonts googleapis. com / css? family = Open + Sans: 300italic, 400italic, 600italic, 700italic, 800italic, 400,300,600,700,800" rel = "stylesheet" type = "text / css">  <! - HTML5 Şim û Bersivê. JS IE8 piştgiriya HTML5 element û pirsên medyayê ->  <! - WARNING: BERSÎVAN. JS nikare karê ku hûn riya pelê bi pelê bibînin xebitîne: // ->  <! - [eger lt IE 9]>  <script src = "https: // oss. maxcdn com / libs / html5shiv / 3 7. 7. / html5shiv. js">   </ script>  <script src = "https: // oss. maxcdn com / libs / bersiv js / 1. 4. 2 / bersivê min .JS">   </ script>  <! [endif] ->  </ head>  <class class = "hidden">  <div id = "app">  {{{rekêşek}}}  </div>  <script src = "/ js / jquery. min. js">   </ script>  <script src = "/ js / bootstrap. min. js">   </ script>  <script src = "/ js / pak-pak-min. js">   </ script> <script src = "/ dist / bundle. Ji vir re pelan bikî li vir binivîse.  </p>  <p>  Bi gelemperî ez ê pakêla React Bootstrap bikar bînin û ji jSemalt bikar bînin. Lê belê, çimkî ji bo birçîbûnê, em ê çalakiya jSemaltê ya pêşîn ya mijarê bimînin.  </p>  <p>  Di navnîşa me  <code>  de. html  </code>  pelê, em ê li ser  <code>  div  </code>  li cihê ku  <code>  id = "app"  </code>  pêk tê destnîşan kirin. Vebijêrk a guherîn  <code>  {{{rekêşkarkirî}}}  </code>  dê di navenda server-pêşkêşkirî ya me de veguherîn û paşê carek geroktorek di kicksê de tê guhertin, bi  <code>  id = "app"  </code> . Ji bo jibo Javascriptê her tiştek bisekine, ji bo pisporê bikarhênerê çêtir bike, em  <code>  kategoriya "veşartî"  </code>  ji bedena me ve zêde bikin. Hingê, paşê paşê veguhestin vê çaxê derxistin. Ew dibe ku hinekî tevlihev e, lê ez ê nîşanî we dikim ka em ê di çend deqîqê de çawa bikin.  </p>  <p>  Di vê helwestê de, sepana we divê pergala jêrîn bin:  </p>  <pre>  (pakistan). jsonalenî| -css| -bootstrap min. css| -cosmic-custom. css| -js| -jquery. min. js| -bootstrap min. js| -clean-blog min. jsdîtin| -index. htmlwebpack. config. js </code>   </pre>  <p>  Niha em gihîştin em perçeyên me yên bêdeng hene, em dest bi destûra Reactan ava bikin.  </p>  <h2 id="ourblogappcomponentsbasicexample">  Saziya me ya Blog Blog Apparel (mînakek bingehîn)  </h2>  <p>  Let's start page for our blog. Semalt ev e ku blogê ji bo profesyonelek pîşesazik e, blogê me dê jêrîn hene:  </p>  <ol>  <li>  Serûpel  </li>  <li>  Li ser  </li>  <li>  Kar  </li>  <li>  Têkilî  </li>  </ol>  <p>  Let's start by a file called "63" apprentice. js  </code>  û naveroka jêrîn ji bo vê yekê add:  </p>  <pre>   <code class="jsx language-jsx">  // app-client. jsImport 'Ji'import {render} ji 're-dom'import {router} ji 're-router'ji nû ve çêbikin createBrowserHistory 'dîrok / lib / createBrowserHistory'dîrokek dîrok = createBrowserHistory  <span class="f-c-white l-mr3"> // riyênrêyên import ve ji '. / riyênRûway = ( <Dîroka router = {dîrok}> {routes} </ Router> )const app = belge. getElementById ('app')pêşkêşî (rêyên, anîn) </code>   </pre>  <p>  Ji bo çêtirîn fêmkirina çiqas Rafiqa Reformê dixebitin, hûn dikarin gîtê xwe GitHub bikin. Li vir xist e ku em di  <code>  app-client de heye. js  </code>  ya me  <code>  Router  </code>  ku dîrokek gerdûnî ji bo rêvegirtinê ya mişterî ya me. Divê navnîşa pêşkêşkara server-ê hewceyê dîrokek gerdûnî hewce ne, da ku em ê di rêyên cuda de  <code>  çêbikin. js  </code>  pelê ku di nav xalên gerîlêdanê û navnîşa xwe de tête hevbeş be.  </p>  <p>  jêrîn li ser rêyên  <code>  ve zêde bikin. js  </code>  pelê:  </p>  <pre>   <code class="jsx language-jsx">  // riyên jsImport React, {Component} ji 'reaktîf'Import {Route, IndexRoute, Link} ji 're-router'// Main componentApp-class Appendix {DîdMount  <span class="f-c-white l-mr3">  {belge. beden. className = ''}render  <span class="f-c-white l-mr3">  {vegera ( <div>  <h1>  Reforma Navnetewî Reform  </ h1>  <nav>  <ul>  <li>   <Link to = "/">  Malper  </ Link>   </li>  <li>   <Link to = "/ about">  Derbarê  </ Link>   </li>  <li>   <Link to = "/ work">  Karûbar  </ Link>   </li>  <li>   <Link to = "/ contact">  Têkilî  </ Link>   </li>  </ ul>  </ nav> {ev pêşniyar. Niha, bihêle serîlêdanê me bistînin û wê bizanin! Di termînalê de te, run emrên jêr e:  </p>  <pre>   <code class="bash language-bash">  mkdir gelemperînpm saz kirinnpm pêşveçûna pêşveçûn </code>   </pre>  <p>  Piştre http: // localhost navîgasyon: 8080 li geroka we di bloggerê bingehîn de çalakiya xwe bibînin.  </p>  <p>  Van tiştan pêk anîn, dem e ku niha ev gihîştiye ser vê yekê ser serverê. Pelê  <code>  app-server tê afirandin. js  </code>  û vê rûpelê zêde bike:  </p>  <pre>   <code class="jsx language-jsx">  // app-server. jsImport 'Ji'import {match, RoutingContext} ji bertek-router 'Import ReactDOMServer ji 're-dom / server'import from 'express'hogan ji 'hogan-express'// riyênrêyên import ve ji '. / riyên// Expressconst app = express  <span class="f-c-white l-mr3"> app. engine ('html', hogan)app. set ('nêrînên', __dirname + '/ dîtin')app. bikar bînin ('/', zelal eşkere (__ dirname + '/ public /'))app. set ('port', ((pêvajoyê env. PORT || 3000))app. get ('*', (req, res) => {match ({rêgez, cihan: req. url}, (çewtiyê, redirectPocation, renderProps) => {reaksiyonê pêk têMarkup = ReactDOMServer. renderToStaticMarkup ( <RoutingContext {. renderProps} /> )res. herêmî. reaksiyonê bişîneMarkup =heger (error) {res. statuya (500) (şîfre peyda bikin)} din ku eger (redirectLocation) {res. redirect (302, redirectPocation) rastername + navîgasyon lêgerîn.)} din ku eger (renderProps) {// Success!res. statuya (200) render ('index html')} else {res. statuya (404) render ('index html')}})})app. listen (app.) ('port')console Agahdariya ('==> Server guhdarî dike' + pêvajoyê .NET-NODE_ENV + '')console info ('==> Biçe http: // localhost:% s', app. (get 'port')) </code>   </pre>  <p>  Di  <code>  app-server. js  </code> , em barkirina rêyên bingehîn ku em set hiştine. Ev guhertinên navnîşan ên ku di çarçoveya veguhastinê de guhertin, û paşê wekî vîdyoyek bi guhertinên me veguherînin.  </p>  <p>  Pêşbaziya amadekar amadekirin ku ji bo servera xwe dest pê bikin û kodê me binêrin, lê pêşî, em pirtûkek çêbikin ku vê yekê bikin.  </p>  <p>  pakêtê xwe  <code>  vekin. json  </code>  pel û pelê  <code>  lîpan  </code>  biguherînin ku li jêr binêrin:  </p>  <pre>   <code class="jsx language-jsx">  // ."scripts": {"destpêkirin": "hilberîna npm","hilberandin": "rm-rf public / index html / & NODE_ENV = webpotkirina hilberandinê -p & NODE_ENV = hilberandina betal-node-server-es2015","webpack-dev-server": "NODE_ENV = Pêşveçûn PORT = 8080 webpack-dev-server-gelemperî / -hot -inline -devtool-inline-source-map -history-api-fallback""pêşveçûn": "cp nêrîn / index". html / index. html û NODE_ENV = webpack-a-development û npm webpack-dev-server run "},// . </code>   </pre>  <p>  Niha Niha em ji me re  <code>  lîberyona  </code>  şîfre kirine, em dikarin kodê me li her du aliyekî server û alîgirê xwe bidin. Di darvekirina termînalê de:  </p>  <pre>   <code class="bash language-bash">  npm dest pê dike </code>   </pre>  <p>  Semalt di geroka te bi http: // localhost: 3000. Hûn divê hûn naveroka blogê ya xwe bibînin û bi xwe bi zûtirîn rûpelan di SPA modê de bi lez û bi hêsanî navîgasyon binêrin.  </p>  <p>  Go berî û xist  <code>  çavkaniyan bibîne  </code> . Bala xwe code SPA me ye li wê derê ji bo hemû robotan bibîne wek baş. Em ji herdu cîhanê çêtirîn!  </p>  <h2 id="conclusions">  Vebijêrk  </h2>  <p>  Di beşa yekemîn de, em dest pê kir li cîhanê ya Reaction û destnîşan kir ku em dikarin çawa bikar bînin, bi Node re. js, ji bo çêkirina gerdûnî ya gerdûnî çêbikin.  </p>  <p>  Heke hûn bixwazin blogê xwe li pêşiya xwe bistînin û bizanin ka çawa çawa binivîse û naverokê biguherînin, ji bîr nekin beşek duyemîn bixwînin, "Bêguman Gerînendek Navneteweyî ya Bernameyê: Pêdiviya Flux". Em ê xwarina rastîn dihêle ku çawa bi hêsantirên rêxistinî yên Reform re veguherînin û çawa  <strong>  bi rengek xerîb  </strong>  bi hêsantirên xwe re hêsantir dikin.  </p>  <p>   <em>  Me bi Open SourceCraft re heval kir ku ji we re  <strong>  6 Pêşniyarên Pêşniyarên ji Reşkerên React  </strong>  re bînin. Ji bo naveroka çavkaniya vekirî ya vekirî, Open SourceCraft kontrol bikin. js. Ew jî Hevpeyman û CEO ya Cosmic JS jî ye. Di demeke azad de hûn dikarin muzîka lîstik bikin, li ser fîlmên û filmên televîzyonê digerin û xaniyê xwe û kûçikê li malê dikişînin.  </div>  </div>  </div>  </div>  </span>  </span>  </span>  </span>  </p>  </pre>  </pre>  </html>  </head>  </meta>  </meta>  </meta>  </meta>  </meta>                                                                               
March 1, 2018