Нэг хуудсын хэрэглээний сэдэв (SPA) сэдэв гарч ирэхээр бид хайлтын хөдөлгүүрүүдэд хөтөч, semalt, хурд, ухагдахууны талаар бодох хандлагатай байдаг. Яагаад гэвэл SPA нь вэбсайтыг вэбсайтыг үзэхийн тулд вэб хөтөч ашиглахгүй учраас вэбсайтыг вэбсайтыг харах боломжгүй, эсвэл хамгийн багаар бодоход тэдгээрийг индексжүүлэх боломжгүй.
Энэ нь зарим хөгжүүлэгчид янз бүрийн аргаар шийдэхийг оролдож байгаа асуудал юм:
- Вэбсайтын зугтах фрагментийг нэмэх, бүх хуудсыг статик хэлбэрээр ашиглахыг шаарддаг, маш олон нэмэлт ажил (одоо хуучирсан) нэмдэг.
- ТХГН-ийг хамгаалалтад авахын тулд хайлтын системийн аалзнуудыг статик тэмдэглэгээнд оруулахын тулд төлбөрт үйлчилгээний төлбөрийг ашигладаг.
- Эдгээр хайлтын системүүд нь бидний JavaScript-ийн агуулгыг унших хангалттай боловсронгуй болсон гэдэгт итгэлтэй байна - custom made fascinators uk. (Би зүгээр л тийм биш байна.)
Node ашиглан ашиглах. js дээр сервер дээр Үйлчлүүлэгч дээр хариу үйлдэл үзүүлж, бидний JavaScript аппыг нийтэд түгээх (эсвэл isomorphic байх болно. Энэ нь сервер талд болон хөтөчийн талаас үзүүлэх хэд хэдэн давуу талыг санал болгодог бөгөөд бидний хайлтын систем болон хүн браузер ашиглан манай ДЦГ-ын агуулгыг үзэх боломжийг олгодог.
Энэхүү алхмын хичээлд би React Semalt Blog App-г хэрхэн бүтээхийг танд үзүүлэх болно. Ингэснээр серверийн нүүрэн дэх бидний агуулга нь хайлтын системд ашиглах боломжийг олгоно. Дараа нь, хөтөч нь хурдан, хариу үйлдэлтэй аль ч хуудсанд програмыг ашиглах боломжийг олгох болно.
Эхлэх
Манай түгээмэл блог апп дараах технологи, хэрэгсэлийг ашиглах болно:
-
Зангилаа. js багц зохицуулалт болон сервер талын рэндэр
-
UI үзэхэд дахин ашиглах
-
Илүү хялбар JS-серверийн хүрээг илэрхийлэх
-
Чиглүүлэгчийн чиглүүлэгчийг дахин эхлүүлэх
-
Хөгжиж буй халуун ачааллын хувьд халуун ачаалагчийг дахин эхлүүлэх
-
Өгөгдлийн урсгалын урсгал
-
Агуулгын удирдлагад Cosmic JS
Эхлээд дараах тушаалуудыг ажиллуулна:
mkdir урвалд нийтээр-блогcd урвалд нийтээр-блог
Одоо багцыг үүсгээрэй. json
файл болон дараах контент нэмэх:
{"нэр": "урвалд нийтээр-блог","хувилбар": "1. 0. 0","хөдөлгүүр": {"зангилаа": "4. 1. 2","npm": "3. 5. 2"},"тайлбар": "","гол": "апп-сервер. js","хамааралтай": {"babel-cli": "^ 6 26. 0","babel-loader": "^ 7." 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. 4. 0","урсгалын": "^ 3 .1 3","түүх": "1. 13. 0","hogan-express": "^ 0. 5. 2","html-webpack-plugin": "^ 2 .30. 1","зам": "^ 0. 12. 7","хариу үйлдэл": "15.1.6", ""хариу-дом": "^ 15. 6. 1","урвалд чиглүүлэгч": "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 үзэлт / индекс. html public / index. html && NODE_ENV = хөгжүүлэх вэбpack && npm ажиллуулах вэбpack-dev-server"},"зохиогч": "","лиценз": "ISC","devDependencies": {"урвалын халуун-дуудагч": "^ 1 .3 0"}}
Энэ файлд бид дараах зүйлсийг нэмж оруулсан болохыг анхаарна уу:
-
Babel манай CommonJS модулиудыг багцалж, манай ES6 болон React JSX-ийг браузертай нийцтэй Javascript болгон хувиргах
- JS Cosmic албан ёсны Node. js клиент нь бидний блогын агуулгыг амархан Cosmic JS үүлд hosted контент API
- Апп-ийн өгөгдлийн удирдлагад зориулсан урсгалын (бидний React програмд маш чухал элемент юм). js файл.
Бид бас багцад скрипт нэмж оруулсан. json
файл. Бид (npm) хөгжүүлэлтийн ажиллуулахад скрипт нь индексийг хуулдаг. Манай олон нийтийн хавтас
фолдерт манай үзсэн
фолдероос html
файл. Дараа нь бидний webpack-dev-server
-аас public /
гэсэн агуулгын баазыг тавьдаг бөгөөд (62). Js
файлыг хадгалах) дээр дахин ачаалах боломжийг олгодог. Эцэст нь, бидний бүрэлдэхүүн хэсгүүдийг эх сурвалжаа дибаг хийх, бидэнд олох боломжгүй хуудсуудад унах боломжийг олгодог index (html
).
Одоо файлын тохиргооны файлаа webpack файлаа засаад үзье. config. js
:
// webpack. config. jsvar webpack = шаардлагатай ('webpack')модуль. экспорт = {devtool: 'eval',нэвтрэх: '. / апп-клиент. js ',гарц: {зам: __dirname + '/ public / dist',файлын нэр: 'bundle. js ',publicPath: '/ dist /'},модуль: {ачигч: [{тест: / \. js $ /, loaders: 'babel-loader', хасах: / node_modules /},{тест: / \. jsx $ /, loaders: 'babel-loader', хасах: / node_modules /}]},залгаасууд: [шинэ вэбсайт. DefinePlugin ({'процесс. env. COSMIC_BUCKET ': JSON. String (процесс. env. COSMIC_BUCKET),'процесс. env. COSMIC_READ_KEY ': JSON. String (процесс. env. COSMIC_READ_KEY),'процесс. env. COSMIC_WRITE_KEY ': JSON. String (процесс. env. COSMIC_WRITE_KEY)})]};
Бид оролт
хөрөнгийг app-client-ийн үнээр нэмсэнийг бид анзаарах болно. js
. Энэ файл нь манай хэрэглэгчийн нэвтрэх цэг болж үйлчилдэг бөгөөд энэ үед вебсайп нь бидний програмыг багцалж, үүнийг / public / dist / bundle руу хүргэх болно. js
гаралт
-д тодорхойлсноор). Бид бас Бабелийг ES6 ба JSX код дээрээ ид шидээ ажиллуулахын тулд ачигчдыг ашигладаг. React Hot Loader нь хөгжүүлэлтийн үеэр халуун ачаалалтай (хуудасны ямар ч refresh!) Ашиглагддаг.
React-тэй холбоотой зүйлсийг үсрэхээс өмнө манай блог бэлэн боллоо. Энэ гарын авлагаас хэв маягаас илүү функц дээр илүү анхаарал төвлөрүүлэхийг хүсч байгаа болохоор энд урьдчилан урьдчилан бүтээсэн урд талын сэдэв ашиглах болно. Би эхлээд "Bootstrap" -ийг семальт блог гэж нэрлэсэн. Таны терминал дээр дараах тушаалуудыг ажиллуулна:
үзсэн хавтас
ба дотор нь индекс гэж нэрлэдэг фолдер үүсгээрэй. html
файл. HTML файлыг нээж, дараах кодыг нэмнэ:
{{сайт. нэр}} {{# хуудас}} | {{хуудас. нэр}} {{/ хуудас}} title>