摘要:好了,項(xiàng)目啟動(dòng)了,目錄結(jié)構(gòu)也清楚了,接下來(lái)就是整個(gè)現(xiàn)有項(xiàng)目的遷移了目前正在改造項(xiàng)目,文章尚未寫(xiě)完,會(huì)抽時(shí)間不定期的繼續(xù)更新項(xiàng)目的改造過(guò)程及分享改造過(guò)程中遇到的問(wèn)題
公司項(xiàng)目,最初只為了實(shí)現(xiàn)前后端分離式開(kāi)發(fā),直接選擇了vue框架進(jìn)行開(kāi)發(fā),然而現(xiàn)在項(xiàng)目基本完成了,發(fā)現(xiàn)蜘蛛根本就抓取不到網(wǎng)站數(shù)據(jù),搜索引擎搜出來(lái),都是一片空白沒(méi)有數(shù)據(jù),需要對(duì)項(xiàng)目做SEO優(yōu)化。
本人第一次接觸SEO的優(yōu)化,完全是零基礎(chǔ),開(kāi)啟了小白菜的SEO探索之旅,記錄一下一路的過(guò)程,方便自己回顧與大家的探討,如有不度之處,還請(qǐng)路過(guò)的大神指導(dǎo)一下。
常用SEO優(yōu)化方式在查閱了一些資料后,常見(jiàn)的SEO優(yōu)化有以下兩種:
prerender-spa-plugin客戶端預(yù)渲染
ssr服務(wù)端渲染
在選擇預(yù)渲染模式還是服務(wù)端渲染的模式時(shí),簡(jiǎn)單做了個(gè)demo進(jìn)行了一下測(cè)試,由于公司項(xiàng)目以檢索為主的產(chǎn)品,后期需要蜘蛛抓取的界面太龐大,最終選擇用vue提供的nuxt.js框架去改造現(xiàn)有的項(xiàng)目。
簡(jiǎn)單寫(xiě)一下prerender-spa-plugin客戶端預(yù)渲染的過(guò)程
prerender-spa-plugin客戶端預(yù)渲染相關(guān)文檔可查看:prerender-spa-plugin
安裝直接在vue項(xiàng)目中,通過(guò)npm或者yarn進(jìn)行安裝 ##### Yarn $ yarn add prerender-spa-plugin ##### NPM $ npm i prerender-spa-plugin -S配置
頂部引入:
const PrerenderSPAPlugin = require("prerender-spa-plugin") const Renderer = PrerenderSPAPlugin.PuppeteerRenderer
在plugins中配置
new PrerenderSPAPlugin({ //生成的預(yù)渲染html文件存放路徑 staticDir: path.join(__dirname, "../dist"), //需要預(yù)渲染的界面路徑(router) routes: ["/", "/index"], //跨域轉(zhuǎn)發(fā)配置,預(yù)渲染時(shí)獲取數(shù)據(jù)的api地址 server: { proxy: { "/api": { target: "http://192.168.1.223:9002", changeOrigin: true, pathRewrite: { "^/api": "/" } } } }, //在一定時(shí)間后再捕獲頁(yè)面信息,使得頁(yè)面數(shù)據(jù)信息加載完成, 必選,不然界面依然會(huì)沒(méi)有數(shù)據(jù) captureAfterTime: 5000, //忽略打包錯(cuò)誤 maxAttempts: 10, renderer: new Renderer({ //可選,頁(yè)面在被搜索時(shí)的關(guān)鍵詞 inject: { foo: "bar" }, //可選,無(wú)桌面系統(tǒng)可去掉 headless: false, //必選,‘render-event"必須與main.js中mounted下的配置名稱一致 renderAfterDocumentEvent: "render-event" }) })
new Vue({ el: "#app", router, store, template: "", mounted () { document.dispatchEvent(new Event("render-event")) } })
// build時(shí)需要將"/"切換為"./"
assetsPublicPath: "./"
到此整個(gè)預(yù)渲染模式,改造完成了。
此次demo中尚未處理meta信息,需要配置meta信息的,可查看文檔vue-meta-info,這是一個(gè)基于vue 2.0的插件,它會(huì)讓你更好的管理你的vue頁(yè)面里面的meta信息,詳細(xì)配置過(guò)程可參考:muwoo作者寫(xiě)的“處理 Vue 單頁(yè)面 Meta SEO的另一種思路”文章,里邊整個(gè)過(guò)程寫(xiě)的挺詳細(xì)的
作為新手,并不介意自己動(dòng)手去配置環(huán)境,建議直接用nuxt.js提供的腳手架(create-nuxt-app)進(jìn)行快速搭建項(xiàng)目,具體搭建過(guò)程可查看官網(wǎng)文檔:Nuxt.js
nuxt.js項(xiàng)目搭建確保安裝了npx(npx在NPM版本5.2.0默認(rèn)安裝了)
$ npx create-nuxt-app <項(xiàng)目名>
或者
$ yarn create nuxt-app <項(xiàng)目名>
之后會(huì)有一系列的選項(xiàng):
在集成的服務(wù)器端框架之間進(jìn)行選擇:
None (Nuxt默認(rèn)服務(wù)器)
Express
Koa
Hapi
Feathers
Micro
Adonis (WIP)
選擇您喜歡的UI框架:
None (無(wú))
Bootstrap
Vuetify
Bulma
Tailwind
Element UI
Ant Design Vue
Buefy
選擇你想要的Nuxt模式 (Universal or SPA),不懂此選項(xiàng)的可以看一下這篇文章render mode的區(qū)別
添加 axios module 以輕松地將HTTP請(qǐng)求發(fā)送到您的應(yīng)用程序中。
添加 EsLint 以在保存時(shí)代碼規(guī)范和錯(cuò)誤檢查您的代碼。
添加 Prettier 以在保存時(shí)格式化/美化您的代碼。
官網(wǎng)都有詳細(xì)的講解,根據(jù)自己的需求選擇就好了,當(dāng)安裝完后,項(xiàng)目就可以直接運(yùn)行了
npm run dev*問(wèn)題
在啟動(dòng)時(shí)遇到如下問(wèn)題:
找了一圈,發(fā)現(xiàn)搭建項(xiàng)目時(shí)默認(rèn)的element-ui版本太低,直接用npm uninstall element-ui卸載當(dāng)前版本,重新使用npm install element-ui@版本號(hào)安裝即可,版本號(hào)使用2.7.2及以上均可
項(xiàng)目目錄簡(jiǎn)介既然是對(duì)現(xiàn)有Vue項(xiàng)目的改造,就先看一下nuxt.js各目錄的功能及vue項(xiàng)目目錄的對(duì)比吧
nuxt.js的目錄結(jié)構(gòu)├── assets // 資源文件。用于組織未編譯的靜態(tài)資源入LESS、SASS 或 JavaScript │ └── logo.jpg // 默認(rèn)logo圖片 ├── components // 組件。用于自己編寫(xiě)的Vue組件,比如滾動(dòng)組件,日歷組件,分頁(yè)組件 │ └── AppLogo.vue // 默認(rèn)logo組件 ├── layouts // 布局。頁(yè)面都需要有一個(gè)布局,默認(rèn)為 default。它規(guī)定了一個(gè)頁(yè)面如何布局頁(yè)面。所有頁(yè)面都會(huì)加載在布局頁(yè)面中的nuxt.js目錄與vue.js目錄的對(duì)比標(biāo)簽中。 │ └── default.vue // 默認(rèn)模板頁(yè)面,類似mvc中的layout ├── middleware // 中間件。存放中間件??梢栽陧?yè)面中調(diào)用: middleware: "middlewareName" 。 ├── pages // 頁(yè)面。一個(gè) vue 文件即為一個(gè)頁(yè)面。 │ └── index.vue // 默認(rèn)首頁(yè)面 ├── plugins // 用于存放JavaScript插件的地方 │ └── element-ui.js // 上邊我們安裝的UI框架 ├── static // 用于存放靜態(tài)資源文件,比如圖片,此類文件不會(huì)被 Nuxt.js 調(diào)用 Webpack 進(jìn)行構(gòu)建編譯處理。 服務(wù)器啟動(dòng)的時(shí)候,該目錄下的文件會(huì)映射至應(yīng)用的根路徑 / 下。 ├── store // 用于組織應(yīng)用的Vuex 狀態(tài)管理。 ├── .editorconfig // 開(kāi)發(fā)工具格式配置 ├── .eslintrc.js // ESLint的配置文件,用于檢查代碼格式 ├── .gitignore // 配置git不上傳的文件 ├── nuxt.config.js // 用于組織Nuxt.js應(yīng)用的個(gè)性化配置,比如網(wǎng)站title,已便覆蓋默認(rèn)配置 ├── package.json // npm包管理配置文件 └── README.md // 說(shuō)明文檔
整體來(lái)看,目錄結(jié)構(gòu)沒(méi)有太大的變動(dòng),區(qū)別比較大的就是router文件夾,nuxt.js項(xiàng)目中并沒(méi)有router路由的配置,這個(gè)就是 nuxt 框架的獨(dú)到之處,為了能實(shí)現(xiàn)更好的SSR渲染,它使用的是根據(jù)頁(yè)面結(jié)構(gòu),自動(dòng)路由,所以你的文件名,就是你的路由名稱,具體規(guī)則可查看官網(wǎng)文檔路由。
好了,nuxt項(xiàng)目啟動(dòng)了,目錄結(jié)構(gòu)也清楚了,接下來(lái)就是整個(gè)現(xiàn)有Vue項(xiàng)目的遷移了
PS:目前正在改造項(xiàng)目,文章尚未寫(xiě)完,會(huì)抽時(shí)間不定期的繼續(xù)更新vue項(xiàng)目的改造過(guò)程及分享改造過(guò)程中遇到的問(wèn)題
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/106136.html
摘要:先來(lái)看一下容器的文件中間一些操作省略這里用了多階段構(gòu)建容器,如果直接通過(guò)設(shè)置環(huán)境變量只會(huì)在后面一個(gè)階段生效,但是是在第一個(gè)階段執(zhí)行的,所以環(huán)境變量不能應(yīng)用到當(dāng)中。 在今年年初的時(shí)候,完成了自己的個(gè)Fame博客系統(tǒng)的實(shí)現(xiàn),當(dāng)時(shí)也做了一篇博文Spring-boot+Vue = Fame 寫(xiě)blog的一次小結(jié)作為記錄和介紹。從完成實(shí)現(xiàn)到現(xiàn)在,也斷斷續(xù)續(xù)的根據(jù)實(shí)際的使用情況進(jìn)行更新。 只不過(guò)每...
摘要:腳手架安裝好的基本項(xiàng)目項(xiàng)目名,如,按照提示安裝你想要的東西,本次項(xiàng)目預(yù)裝模式下,默認(rèn)的項(xiàng)目目錄如下保存自動(dòng)格式化修復(fù)本人習(xí)慣縮進(jìn)為個(gè)空格,但是生成的項(xiàng)目默認(rèn)為個(gè),因此需要更改配置文件下的更改為保存時(shí)自動(dòng)修復(fù)錯(cuò)誤保存自動(dòng)格式化開(kāi)啟支 腳手架安裝好nuxt的基本項(xiàng)目 npx create-nuxt-app ,如:npx create-nuxt-app nuxt-ts,按照提示安裝你想要的...
摘要:所以,這次就來(lái)聊聊組件的服務(wù)器端渲染。這種模式下,后端只提供接口,傳統(tǒng)的服務(wù)器端路由模板渲染則都有層接管。這樣,前端開(kāi)發(fā)人員可以自由的決定哪些組件需要在服務(wù)器端渲染,哪些組件可以放在客戶端渲染,前后端完全解耦,但又保留了服務(wù)器端渲染的功能。 細(xì)說(shuō) Vue 組件的服務(wù)器端渲染 聲明:需要讀者對(duì) NodeJs、Vue 服務(wù)器端渲染有一定的了解 現(xiàn)在,前后端分離與客戶端渲染已經(jīng)成為前端開(kāi)發(fā)的...
摘要:注本文是我在開(kāi)發(fā)過(guò)程中遇到問(wèn)題及解決方法的總結(jié),之后會(huì)持續(xù)更新,希望幫助到更多的學(xué)習(xí)者。文中有不妥的地方希望指出共同學(xué)習(xí),同時(shí)歡迎一起補(bǔ)充。 注:本文是我在開(kāi)發(fā)過(guò)程中遇到問(wèn)題及解決方法的總結(jié),之后會(huì)持續(xù)更新,希望幫助到更多的學(xué)習(xí)者。文中有不妥的地方希望指出共同學(xué)習(xí),同時(shí)歡迎一起補(bǔ)充。 npm篇 npm安裝依賴報(bào)錯(cuò):permission denied,錯(cuò)誤信息大致如下: npm ERR!...
Element iView Vuex Mint UI Vant cube-ui,對(duì)比六大 vue ui 組件庫(kù),選中最適合的那個(gè)。 Element(pc) 介紹 & 版本 餓了么前端團(tuán)隊(duì)開(kāi)發(fā)的桌面端組件庫(kù),當(dāng)前最新版本:2.4.8 Star:32.067k 項(xiàng)目特色 團(tuán)隊(duì)維護(hù) 支持三個(gè)版本:vue、react、angular 支持 Nuxt.js 常規(guī)支持:多語(yǔ)言、自定義主題、按需引入、內(nèi)置...
閱讀 1756·2023-04-25 16:28
閱讀 691·2021-11-23 09:51
閱讀 1475·2019-08-30 15:54
閱讀 1158·2019-08-30 15:53
閱讀 2827·2019-08-30 15:53
閱讀 3422·2019-08-30 15:43
閱讀 3263·2019-08-30 11:18
閱讀 3281·2019-08-26 10:25