Back to Question Center
0

ການກໍ່ສ້າງກິດຕິກິລິຍາຕອບຂອງວິທະຍາໄລທົ່ວໄປ: ຄູ່ມືຂັ້ນຕອນໂດຍຂັ້ນຕອນ            ການກໍ່ສ້າງກິດຕິກິລິຍາຕອບຂອງວິທະຍາໄລທົ່ວໂລກ: ຄູ່ມືຂັ້ນຕອນໂດຍຂັ້ນຕອນການຖອນຕົວ: AngularJSNodejsReactAjaxES6More Sponsors

1 answers:
ການກໍ່ສ້າງປະຕິກິລິຍາປື້ມບລັອກທົ່ວໄປ: ຄູ່ມືຂັ້ນຕອນ

ເມື່ອຫົວຂໍ້ຂອງການນໍາໃຊ້ຫນ້າດຽວ (SPAs) ມາ, ພວກເຮົາມີແນວໂນ້ມທີ່ຈະຄິດກ່ຽວກັບຕົວທ່ອງເວັບ, Semalt, ຄວາມໄວ, ແລະການເບິ່ງບໍ່ເຫັນກັບເຄື່ອງຈັກຊອກຫາ. ນີ້ແມ່ນຍ້ອນວ່າ SPA ຈະສະແດງເນື້ອຫາຂອງຫນ້າໂດຍໃຊ້ Semalt ແລະເນື່ອງຈາກນັກທ່ອງເວັບເວັບບໍ່ໄດ້ໃຊ້ຕົວທ່ອງເວັບເພື່ອເບິ່ງຫນ້າເວັບ, ພວກເຂົາບໍ່ສາມາດເບິ່ງແລະດັດແກ້ເນື້ອຫາ - ຫຼືຢ່າງຫນ້ອຍພວກເຂົາສ່ວນໃຫຍ່ບໍ່ສາມາດເຮັດໄດ້.

ນີ້ແມ່ນບັນຫາທີ່ນັກພັດທະນາບາງຄົນໄດ້ພະຍາຍາມແກ້ໄຂໂດຍວິທີຕ່າງໆ:

  1. ເພີ່ມສະບັບພາສາທີ່ແຕກຫນີຂອງເວັບໄຊທ໌, ເຊິ່ງຮຽກຮ້ອງໃຫ້ທຸກເພດມີຢູ່ໃນຮູບແບບຄົງທີ່ແລະເພີ່ມວຽກຫຼາຍ (ປະຈຸບັນບໍ່ໄດ້ຮັບການສະຫນັບສະຫນູນ).
  2. ການນໍາໃຊ້ການບໍລິການທີ່ຈ່າຍເພື່ອ un-browserify SPA ເຂົ້າໄປໃນເຄື່ອງຫມາຍການເຕືອນສໍາລັບ spider ເຄື່ອງຈັກຊອກຫາການລວບລວມ.
  3. ເຊື່ອຫມັ້ນວ່າເຄື່ອງມືຄົ້ນຫາໃນປັດຈຸບັນມີຄວາມກ້າວຫນ້າພຽງພໍທີ່ຈະອ່ານເນື້ອຫາຂອງ JavaScript ເທົ່ານັ້ນ - url rewrite force ssl. (ຂ້າພະເຈົ້າຈະບໍ່ພຽງແຕ່ເທື່ອ).

ການໃຊ້ Node. js ເທິງເຊີຟເວີແລະ React ເທິງລູກຄ້າເລົາສາມາດສ້າງ app JavaScript ຂອງເລົາເປັນ universal (ຫລື isomorphic ) ນີ້ສາມາດສະຫນອງຜົນປະໂຫຍດຫຼາຍຈາກການສະແດງຜົນຂອງເຊີຟເວີແລະເບົາເຊີ, ໃຫ້ທັງເຄື່ອງຈັກຊອກຫາແລະມະນຸດໃຊ້ຕົວທ່ອງເວັບເພື່ອເບິ່ງເນື້ອຫາຂອງພວກເຮົາ.

ໃນບົດແນະນໍາຂັ້ນຕອນໂດຍຂັ້ນນີ້, ຂ້ອຍຈະສະແດງວິທີການສ້າງ Blog App React Semalt ເຊິ່ງຄັ້ງທໍາອິດຈະເຮັດໃຫ້ມີ markup ຢູ່ເບື້ອງ server ເພື່ອເຮັດໃຫ້ເນື້ອຫາຂອງພວກເຮົາມີໃຫ້ກັບເຄື່ອງຈັກຊອກຫາ. ຫຼັງຈາກນັ້ນ, ມັນຈະເຮັດໃຫ້ຕົວທ່ອງເວັບໃຊ້ເວລາໃນຄໍາຮ້ອງສະຫມັກຫນ້າຫນຶ່ງທີ່ມີທັງໄວແລະຕອບສະຫນອງ.

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

ການເລີ່ມຕົ້ນ

app ເວັບບຼາວເຊີຂອງພວກເຮົາຈະນໍາໃຊ້ເຕັກໂນໂລຊີແລະເຄື່ອງມືດັ່ງຕໍ່ໄປນີ້:

  1. Node js ສໍາລັບການຄຸ້ມຄອງການຫຸ້ມຫໍ່ແລະການ rendering ຂ້າງເທິງຂອງເຄື່ອງແມ່ຂ່າຍ
  2. ຕອບຮັບການເບິ່ງ UI
  3. ສະແດງອອກສໍາລັບໂຄງການແມ່ຂ່າຍ JS server back-end ງ່າຍ
  4. React Router for routing
  5. React Hot Loader ສໍາລັບການໂຫຼດຮ້ອນໃນການພັດທະນາ
  6. Flux ສໍາລັບການໄຫລຂອງຂໍ້ມູນ
  7. Cosmic JS ສໍາລັບການຄຸ້ມຄອງເນື້ອຫາ

ເພື່ອເລີ່ມຕົ້ນ, ໃຫ້ຄໍາສັ່ງຕໍ່ໄປນີ້:

     mkdir react-universal-blogcd react-universal-blog    

ຕອນນີ້ສ້າງຊຸດ . json ແລະເພີ່ມເນື້ອຫາຕໍ່ໄປນີ້:

   {"ຊື່": "react-universal-blog","ຮຸ່ນ": "1 0 0","ເຄື່ອງຈັກ": {"node": "4 1. 2","npm": "3 5 2"},"ລາຍລະອຽດ": "","ຕົ້ນຕໍ": "app-server js","ຄວາມພຶ່ງພາ": {"babel-cli": "^ 6 26. 0","babel loader": "^ 7 1. 2","babel-preset-es2015": "^ 6 24. 1","babel-preset-es2017": "^ 6 24. 1","babel-preset-react": "^ 6 24. 1","babel-register": "^ 6 26. 0","cosmicjs": "2 0 0","flux": "3 1,3","ປະຫວັດສາດ": "1.13 0","hogan-express": "^ 0 5. 2","html-webpack-plugin": "^ 2 30. 1","ເສັ້ນທາງ": "0 12 7","ປະຕິບັດ": "15.6 1","react-dom": "^ 15 6. 1","ໂຕ້ຕອບ" - "router," 1. "0 1","webpack": "3 5 6","webpack-dev-server": "^ 2 7. 1"},"ອັກສອນ": {"webpack-dev-server": "NODE_ENV = ການພັດທະນາ PORT = 8080 webpack-dev-server - content-base public / --hot -inline --devtool inline-source-map -history-api-fallback","ການພັດທະນາ": "cp views / index html public / index html && NODE_ENV = webpack ການພັດທະນາ & npm run webpack-dev-server"},"ຜູ້ຂຽນ": "","ໃບອະນຸຍາດ": "ISC","devDependencies": {"react-hot-loader": "^ 1 3. 0"}}    

ໃນໄຟລ໌ນີ້, ທ່ານຈະສັງເກດເຫັນວ່າພວກເຮົາໄດ້ເພີ່ມດັ່ງຕໍ່ໄປນີ້:

  1. Babel ຈະຫຸ້ມຫໍ່ໂມດູນ CommonJS ຂອງພວກເຮົາແລະປ່ຽນແປງ ES6 ແລະ React JSX ຂອງພວກເຮົາເຂົ້າໃນ JavaScript ທີ່ເຫມາະສົມກັບເບົາເຊີ
  2. The Node ຢ່າງເປັນທາງການຂອງ Cosmic JS. js ລູກຄ້າໄດ້ຢ່າງງ່າຍດາຍໃຫ້ບໍລິການເນື້ອຫາ blog ຂອງພວກເຮົາຈາກ Cosmic JS cloud-hosted content API
  3. Flux ສໍາລັບການຄຸ້ມຄອງຂໍ້ມູນ app (ເຊິ່ງເປັນອົງປະກອບທີ່ສໍາຄັນໃນຄໍາຮ້ອງສະຫມັກ React ຂອງພວກເຮົາ). js file

ພວກເຮົາຍັງໄດ້ເພີ່ມສະຄິບໃນຊຸດຂອງພວກເຮົາ . json file ໃນເວລາທີ່ພວກເຮົາດໍາເນີນການ npm ດໍາເນີນການພັດທະນາ , ສະຄິບສໍາເນົາ ດັດຊະນີ. ແຟ້ມ html ຈາກແຟ້ມ ມຸມເບິ່ງ ຂອງເລົາໃນໂຟເດີ ສາທາລະນະ ຂອງເລົາ ຫຼັງຈາກນັ້ນ, ມັນຕັ້ງພື້ນຖານເນື້ອຫາສໍາລັບເວັບໄຊຕ໌ຂອງພວກເຮົາ , ແລະ public / ແລະເຮັດໃຫ້ການໂຫຼດຮ້ອນ (ສຸດ . js ໄຟລ໌ປະຫຍັດ). ສຸດທ້າຍ, ມັນຊ່ວຍໃຫ້ພວກເຮົາ debug ອົງປະກອບຂອງພວກເຮົາທີ່ແຫຼ່ງຂໍ້ມູນແລະເຮັດໃຫ້ພວກເຮົາຫຼຸດລົງສໍາລັບຫນ້າເວັບທີ່ບໍ່ສາມາດຊອກຫາ (ກັບຄືນໄປບ່ອນ ດັດຊະນີ. html ).

ຕອນນີ້ໃຫ້ຕັ້ງຄ່າໄຟລ໌ການຕັ້ງຄ່າເວັບໄຊຕ໌ຂອງພວກເຮົາໂດຍການດັດແກ້ໄຟລ໌ webpack. config js :

   // webpack config jsvar webpack = require ('webpack')module export = {devtool: 'eval',entry: '. / app-client. js ',output: {ເສັ້ນທາງ: __dirname + '/ public / dist',filename: 'bundle. js ',publicPath: '/ dist /'},module: {loaders: [{test: / \. js $ /, loaders: 'babel-loader', exclude: / node_modules /},{test: / \. jsx $ /, loaders: 'babel-loader', exclude: / node_modules /}]},plugins: [new webpack DefinePlugin ({'ຂະບວນການ. env COSMIC_BUCKET ': JSON stringify (process env COSMIC_BUCKET),'ຂະບວນການ. env COSMIC_READ_KEY ': JSON. stringify (process env COSMIC_READ_KEY),'ຂະບວນການ. env COSMIC_WRITE_KEY ': JSON. stringify (process env COSMIC_WRITE_KEY)})]}    

ທ່ານຈະສັງເກດເຫັນວ່າພວກເຮົາໄດ້ເພີ່ມຄຸນສົມບັດ ທີ່ມີຄຸນຄ່າຂອງ ລູກຄ້າ app. js ໄຟລ໌ນີ້ເປັນຈຸດເຂົ້າຂອງລູກຄ້າຂອງພວກເຮົາ, ຊຶ່ງຫມາຍຄວາມວ່າຈາກເວັບໄຊທ໌ນີ້ຈະມັດຄໍາຮ້ອງສະຫມັກຂອງພວກເຮົາແລະສົ່ງອອກໃຫ້ກັບ / public / dist / bundle. js (ຕາມທີ່ລະບຸໄວ້ໃນຜະລິດຕະພັນ ). ພວກເຮົາຍັງໃຊ້ເຄື່ອງໂຫລດເພື່ອໃຫ້ Babel ເຮັດວຽກ magic ໃນລະຫັດ ES6 ແລະ JSX ຂອງພວກເຮົາ. React Hot Loader ແມ່ນໃຊ້ສໍາລັບການໂຫຼດຮ້ອນ (ບໍ່ມີການໂຫຼດຫນ້າໃຫມ່!) ໃນໄລຍະການພັດທະນາ.

ກ່ອນທີ່ພວກເຮົາຈະເຂົ້າໄປໃນສິ່ງທີ່ກ່ຽວຂ້ອງກັບ React, ໃຫ້ເຮົາໄດ້ຮັບການເບິ່ງແລະຮູ້ສຶກຂອງ blog ຂອງພວກເຮົາພ້ອມທີ່ຈະໄປ. ນັບຕັ້ງແຕ່ຂ້າພະເຈົ້າຢາກໃຫ້ທ່ານມຸ່ງເນັ້ນການເຮັດວຽກຫຼາຍກວ່າແບບໃນບົດຮຽນນີ້, ພວກເຮົາຈະນໍາໃຊ້ຫົວຂໍ້ດ້ານຫນ້າທາງດ້ານຫນ້າກ່ອນຫນ້າ. ຂ້ອຍໄດ້ເລືອກຫນຶ່ງຈາກ Start Bootstrap ທີ່ເອີ້ນວ່າ Semalt Blog. ໃນ terminal ຂອງທ່ານໃຊ້ຄໍາສັ່ງຕໍ່ໄປນີ້:

ສ້າງໂຟເດີທີ່ເອີ້ນວ່າ views ແລະພາຍໃນມັນ ດັດຊະນີ. html ໄຟລ໌. ເປີດເອກະສານ HTML ແລະເພີ່ມລະຫັດດັ່ງຕໍ່ໄປນີ້:

    {{site title}} {{# page}} | {{ ຫນ້າ. title}} {{/ page}} </ title><! - Bootstrap Core CSS -><link href = "/ css / bootstrap min css" rel = "stylesheet"><! - Custom CSS -><link href = "/ css / clean-blog min css" rel = "stylesheet"><link href = "/ css / cosmic-custom css" rel = "stylesheet"><! - Custom Fonts -><link href = "// maxcdn bootstrapcdn com / font-awesome / 4 0 / css / font-awesome min css" rel = "stylesheet" type = "text / css"><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 Shim and Respond js IE8 ສະຫນັບສະຫນູນຂອງອົງປະກອບ HTML5 ແລະສື່ການສອບຖາມ -><! - WARNING: ຕອບ. js ບໍ່ເຮັດວຽກຖ້າທ່ານເບິ່ງຫນ້າຜ່ານແຟ້ມ: // -><! - [if lt IE 9]><script src = "https: // oss maxcdn com / libs / html5shiv / 3 7 0 / html5shiv js"> </ script><script src = "https: // oss maxcdn com / libs / respond js / 1 4 2 / reply min js"> </ script><! [endif] -></ head><body class = "hidden"><div id = "app"> {{{reactMarkup}}}  </div> <script src = "/ js / jquery min js"> </ script><script src = "/ js / bootstrap min js"> </ script><script src = "/ js / clean-blog min js"> </ script><script src = "/ dist / bundle. ກົດທີ່ນີ້ເພື່ອດາວໂຫລດໄຟລ໌.  </p>  <p>  ໂດຍທົ່ວໄປຂ້ອຍຈະໃຊ້ຊຸດ React Bootstrap ທີ່ດີເລີດແລະຫຼີກເວັ້ນການນໍາໃຊ້ jSemalt. ຢ່າງໃດກໍຕາມ, ສໍາລັບ sake of brevity, ພວກເຮົາຈະຮັກສາການທໍາງານຂອງ pre-built jSemalt ຂອງຫົວຂໍ້.  </p>  <p>  ໃນດັດຊະນີຂອງພວກເຮົາ  <code> . ໄຟລ໌ html  </code> , ພວກເຮົາຈະມີຈຸດເຊື່ອມຕໍ່ React ຂອງພວກເຮົາທີ່ຕັ້ງຢູ່ທີ່  <code>  div  </code>  ບ່ອນທີ່  <code>  id = "app"  </code> . ການປ່ຽນແປງແບບຟອມ  <code>  {{{reactMarkup}}}  </code>  ຈະຖືກປ່ຽນແປງເປັນເຄື່ອງຫມາຍການສະແດງຜົນຂອງເວັບໄຊທ໌ຂອງພວກເຮົາແລະຫຼັງຈາກນັ້ນ, ຕົວທ່ອງເວັບຂອງພວກເຮົາຈະໃຊ້ເວລາແລະຕິດຕໍ່ກັບ  <code>  div  </code>  ມີ  <code>  id = "app"  </code> . ເພື່ອປັບປຸງປະສົບການຂອງຜູ້ໃຊ້ໃນຂະນະທີ່ JavaScript ຂອງພວກເຮົາ loads ທຸກສິ່ງທຸກຢ່າງ, ພວກເຮົາຕື່ມ  <code>  class = "ເຊື່ອງ"  </code>  ກັບຮ່າງກາຍຂອງພວກເຮົາ. ຫຼັງຈາກນັ້ນ, ພວກເຮົາເອົາຫ້ອງຮຽນນີ້ເມື່ອ React ໄດ້ຕິດຕັ້ງ. ມັນອາດຈະມີຄວາມສັບສົນ, ແຕ່ຂ້ອຍຈະສະແດງໃຫ້ທ່ານຮູ້ວ່າພວກເຮົາຈະເຮັດແນວໃດໃນເວລາຕໍ່ມາ.  </p>  <p>  ຈຸດນີ້, app ຂອງທ່ານຄວນມີໂຄງສ້າງຕໍ່ໄປນີ້:  </p>  <pre>  <code class="text language-text"> ຊຸດ jsonສາທາລະນະ| -css| -bootstrap min css| -cosmic-custom css| -js| -jquery min js| -bootstrap min js| -clean-blog min jsviews| -index htmlwebpack config js </code>   </pre>  <p>  ຕອນນີ້ວ່າພວກເຮົາມີຕ່ອນຂອງພວກເຮົາແລ້ວ, ໃຫ້ເລີ່ມຕົ້ນສ້າງບາງປະຕິກິລິຍາໃຫມ່.  </p> <h2 id="ourblogappcomponentsbasicexample"> ອົງປະກອບຂອງ Blog App ຂອງພວກເຮົາ (ຕົວຢ່າງພື້ນຖານ)  </h2>  <p>  ເລີ່ມຕົ້ນສ້າງ UI ສໍາລັບ app ຂອງພວກເຮົາໂດຍການສ້າງຫນ້າເວັບຕ່າງໆສໍາລັບ blog ຂອງພວກເຮົາ. Semalt ນີ້ຈະເປັນ blog ຫຼັກຊັບສໍາລັບຜູ້ຊ່ຽວຊານດ້ານການສ້າງສັນ, blog ຂອງພວກເຮົາຈະມີຫນ້າຕໍ່ໄປນີ້:  </p>  <ol>  <li>  ບ້ານ  </li>  <li>  ກ່ຽວກັບ  </li>  <li>  ວຽກ  </li>  <li>  ຕິດຕໍ່  </li>  </ol>  <p>  ເລີ່ມຕົ້ນໂດຍການສ້າງໄຟລ໌ທີ່ເອີ້ນວ່າ  <code>  app-client. js  </code>  ແລະເພີ່ມເນື້ອຫາຕໍ່ໄປນີ້:  </p>  <pre>  <code class="jsx language-jsx"> // app-client. jsການນໍາເຂົ້າ React ຈາກ 'react'ນໍາເຂົ້າ (render) ຈາກ 'react-dom'import {Router} ຈາກ 'react-router'ນໍາເຂົ້າ createBrowserHistory ຈາກ 'history / lib / createBrowserHistory'const history = createBrowserHistory  <span class="f-c-white l-mr3"> // Routesເສັ້ນທາງນໍາເຂົ້າຈາກ '. / routes 'const Routes = (<Router history = {history}>{routes}</ Router>)const app = document getElementById ('app')render (ເສັ້ນທາງ, app) </code>   </pre>  <p>  ເພື່ອເຂົ້າໃຈເຖິງວິທີການ React Router ເຮັດວຽກ, ທ່ານສາມາດໄປຢ້ຽມຢາມ GitHub repo ຂອງພວກເຂົາ. gist ນີ້ແມ່ນວ່າພວກເຮົາມີຢູ່ໃນ  <code>  app-client. js  </code>  ຂອງພວກເຮົາ  <code>  ອົງປະກອບ Router  </code>  ທີ່ມີປະຫວັດຂອງຕົວທ່ອງເວັບສໍາລັບເສັ້ນທາງຂ້າງລູກຄ້າຂອງພວກເຮົາ. ເຄື່ອງແມ່ຂ່າຍຂອງພວກເຮົາຈະບໍ່ຕ້ອງການປະຫວັດຂອງຕົວທ່ອງເວັບ, ດັ່ງນັ້ນພວກເຮົາຈະສ້າງເສັ້ນທາງແຍກຕ່າງຫາກ  <code> . js  </code>  ໄຟລ໌ທີ່ຈະແບ່ງປັນລະຫວ່າງຈຸດເຂົ້າຂອງລູກຄ້າແລະລູກຄ້າຂອງພວກເຮົາ.  </p>  <p>  ຕື່ມຂໍ້ມູນດັ່ງຕໍ່ໄປນີ້ຕໍ່ເສັ້ນທາງ  <code> . js  </code>  file:  </p>  <pre>  <code class="jsx language-jsx"> // ເສັ້ນທາງ jsນໍາເຂົ້າ React, {Component} ຈາກ 'react'ນໍາເຂົ້າ {Route, IndexRoute, Link} ຈາກ 'react-router'// ອົງປະກອບຕົ້ນຕໍclass App extends Component {componentDidMount  <span class="f-c-white l-mr3">  {document ຮ່າງກາຍ. className = ''}render  <span class="f-c-white l-mr3">  {ກັບມາ (<div><h1> React Universal Blog </ h1><nav><ul> <li>  <Link to = "/"> ຫະນ້າທໍາອິດ </ Link>  </li>  <li>  <Link to = "/ about"> ກ່ຽວກັບ </ Link>  </li>  <li>  <Link to = "/ work"> ເຮັດວຽກ </ Link>  </li>  <li>  <Link to = "/ contact"> ຕິດຕໍ່ </ Link>  </li> </ ul></ nav>{this props. ຕອນນີ້, ໃຫ້ດໍາເນີນການຄໍາຮ້ອງສະຫມັກຂອງພວກເຮົາແລະກວດເບິ່ງມັນອອກ! ຢູ່ປາຍຂອງທ່ານ, ດໍາເນີນການຄໍາສັ່ງຕໍ່ໄປນີ້:  </p>  <pre>   <code class="bash language-bash">  mkdir publicnpm ຕິດຕັ້ງnpm ດໍາເນີນການພັດທະນາ </code>   </pre>  <p>  ຫຼັງຈາກນັ້ນ, ຄົ້ນຫາ http: // localhost: 8080 ໃນຕົວທ່ອງເວັບຂອງທ່ານເພື່ອເບິ່ງ blog ພື້ນຖານຂອງທ່ານໃນການປະຕິບັດ.  </p>  <p>  ສິ່ງເຫຼົ່ານີ້ໄດ້ເຮັດແລ້ວ, ມັນເປັນເວລາທີ່ໃຊ້ເວລາເພື່ອໃຫ້ມັນເຮັດວຽກຢູ່ໃນເຄື່ອງແມ່ຂ່າຍ. ສ້າງໄຟລ໌ທີ່ເອີ້ນວ່າ  <code>  app-server. js  </code>  ແລະເພີ່ມເນື້ອຫານີ້:  </p>  <pre>  <code class="jsx language-jsx"> // app-server. jsການນໍາເຂົ້າ React ຈາກ 'react'ນໍາເຂົ້າ {match, RoutingContext} ຈາກ 'react-router'ນໍາເຂົ້າ ReactDOMServer ຈາກ 'react-dom / server'ນໍາເຂົ້າຈາກ express 'express'ການນໍາເຂົ້າອາຫານຈາກ 'hogan-express'// Routesເສັ້ນທາງນໍາເຂົ້າຈາກ '. / routes '// Expressconst app = express  <span class="f-c-white l-mr3"> app ເຄື່ອງຈັກ ('html', hogan)app set ('views', __dirname + '/ views')app ໃຊ້ ('/', express static (__ dirname + '/ public /'))app set ('port', (process env PORT || 3000))app get ('*', (req, res) => {match ({routes, location: req url}, (error, redirectLocation, renderProps) => {const reactMarkup = ReactDOMServer renderToStaticMarkup (<RoutingContext {renderProps} />)res ທ້ອງຖິ່ນ. reactMarkup = reactMarkupຖ້າ (ຄວາມຜິດພາດ) {res ສະຖານະ (500). ສົ່ງ (ຂໍ້ຄວາມຜິດພາດ)} else if (redirectLocation) {res redirect (302, redirectLocation pathname + redirectLocation ຄົ້ນຫາ)} else if (renderProps) {// ຄວາມ​ສໍາ​ເລັດ!res ສະຖານະ (200). render ('index html')} else {res ສະຖານະ (404). render ('index html')}})})app ຟັງ (app get ('port'))console info ('==> ເຊີຟເວີກໍາລັງຟັງຢູ່ໃນ + + ຂະບວນການ env. NODE_ENV +' mode ')console info ('==> ໄປທີ່ http: // localhost:% s', app get ('port')) </code>   </pre>  <p>  ໃນ  <code>  app-server. js  </code> , ພວກເຮົາກໍາລັງໂຫຼດເສັ້ນທາງຂັ້ນພື້ນຖານທີ່ພວກເຮົາສ້າງຂຶ້ນ. ເຫຼົ່ານີ້ແມ່ນການປ່ຽນແປງການຕີລາຄາ rendered ເຂົ້າໄປໃນຊ່ອຍແນ່ແລະຫຼັງຈາກນັ້ນຖ່າຍມັນເປັນຕົວປ່ຽນແປງກັບແມ່ແບບຂອງພວກເຮົາ.  </p>  <p>  Semalt ກຽມພ້ອມທີ່ຈະເລີ່ມຕົ້ນເຄື່ອງແມ່ຂ່າຍຂອງພວກເຮົາແລະເບິ່ງລະຫັດຂອງພວກເຮົາກ່ຽວກັບມັນ, ແຕ່ທໍາອິດໃຫ້ສ້າງ script ໃຫ້ເຮັດ.  </p>  <p>  ເປີດຊຸດ  <code>  ຂອງທ່ານ. json  </code>  ໄຟລ໌ແລະແກ້ໄຂພາກສ່ວນ  <code>   </code>  ເບິ່ງຄືດັ່ງຕໍ່ໄປນີ້:  </p>  <pre>  <code class="jsx language-jsx"> //"ອັກສອນ": {"ເລີ່ມຕົ້ນ": "npm ດໍາເນີນການຜະລິດ","production": "rm -rf public / index html && NODE_ENV = production webpack -p && NODE_ENV = production babel-node app-server js --presets es2015","webpack-dev-server": "NODE_ENV = ການພັດທະນາ PORT = 8080 webpack-dev-server - content-base public / --hot -inline --devtool inline-source-map -history-api-fallback","ການພັດທະນາ": "cp views / index html public / index html && NODE_ENV = webpack ການພັດທະນາ & npm run webpack-dev-server"},// </code>   </pre>  <p>  ຕອນນີ້ພວກເຮົາມີລະຫັດການຜະລິດ  <code>  ຂອງພວກເຮົາ  </code> , ພວກເຮົາສາມາດດໍາເນີນການລະຫັດຂອງພວກເຮົາທັງຝ່າຍເຊີຟເວີແລະຝ່າຍລູກຄ້າ. ໃນ terminal ຂອງທ່ານປະຕິບັດ:  </p>  <pre>   <code class="bash language-bash">  npm start </code>   </pre>  <p>  Semalt ໃນຕົວທ່ອງເວັບຂອງທ່ານໄປທີ່ http: // localhost: 3000. ທ່ານຄວນເຫັນເນື້ອຫາຂອງ blog ທີ່ງ່າຍດາຍຂອງທ່ານແລະສາມາດຫາໄດ້ງ່າຍແລະງ່າຍດາຍໂດຍຜ່ານຫນ້າໃນຮູບແບບ SPA.  </p>  <p>  ສືບຕໍ່ເດີນຫນ້າແລະກົດ  <code>  ແຫຼ່ງເບິ່ງ  </code> . ສັງເກດລະຫັດ SPA ຂອງພວກເຮົາແມ່ນມີສໍາລັບຫຸ່ນຍົນທັງຫມົດເພື່ອຊອກຫາເຊັ່ນດຽວກັນ. ພວກເຮົາໄດ້ຮັບທີ່ດີທີ່ສຸດຂອງໂລກທັງສອງ!  </p> <h2 id="conclusions"> ສະຫຼຸບ  </h2>  <p>  ໃນສ່ວນທໍາອິດນີ້, ພວກເຮົາໄດ້ເລີ່ມຂຸດເຂົ້າໄປໃນໂລກຂອງ React ແລະເບິ່ງວ່າພວກເຮົາສາມາດນໍາໃຊ້ມັນໄດ້, ພ້ອມກັບ Node. js, ເພື່ອສ້າງທີມງານ React Universal Blog.  </p>  <p>  ຖ້າທ່ານຕ້ອງການເອົາບລັອກຂອງທ່ານໄປໃນລະດັບຕໍ່ໄປແລະຮູ້ວິທີການເພີ່ມແລະແກ້ໄຂເນື້ອຫາ, ຢ່າລືມອ່ານສ່ວນທີສອງ, "ການສ້າງບັນຊີ Blog ແບບ Universal React: ການປະຕິບັດ Flux". ພວກເຮົາຈະເຂົ້າໄປໃນຊີ້ນທີ່ແທ້ຈິງຂອງວິທີການງ່າຍຂະຫນາດຂອງເວັບ React Universal Blog ໂດຍໃຊ້ React concepts ອົງການຈັດຕັ້ງແລະຮູບແບບ Flux  <strong> .  </p>  <p>  <em> ພວກເຮົາໄດ້ຮ່ວມມືກັບ Open SourceCraft ເພື່ອເອົາມາໃຫ້ທ່ານ  <strong>  6 ຂໍ້ແນະນໍາຈາກ Pro Developers  </strong> . ສໍາລັບເນື້ອຫາແຫຼ່ງເປີດຫຼາຍ, ໃຫ້ກວດເບິ່ງ Open SourceCraft. js ລາວຍັງເປັນຜູ້ຮ່ວມກໍ່ຕັ້ງແລະ CEO ຂອງ Cosmic JS. ໃນທີ່ໃຊ້ເວລາຟຣີຂອງທ່ານ, ທ່ານສາມາດຊອກຫາເຂົາຫຼີ້ນດົນຕີ, binging ກ່ຽວກັບຮູບເງົາແລະໂທລະພາບສະແດງໃຫ້ເຫັນແລະຫ້ອຍອອກຢູ່ເຮືອນທີ່ມີເມຍແລະຫມາລາວ.  </div>  </div>  </div>  </div>  </span>  </span>  </span>  </span>  </p>  </strong>  </pre>  </pre>  </code>  </code>  </html>  </head>  </meta>  </meta>  </meta>  </meta>  </meta>                                                                                 
March 1, 2018