最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

從0到1構(gòu)建vueSSR項(xiàng)目之路由的構(gòu)建

 更新時(shí)間:2019年03月07日 09:51:02   作者:紳士  
這篇文章主要介紹了從0到1構(gòu)建vueSSR項(xiàng)目之路由的構(gòu)建,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

vue開發(fā)依賴的相關(guān)配置

Vue SSR 指南

今天先做客戶端方面的配置,明天再做服務(wù)端的部分。

那么馬上開始吧~

修改部分代碼

腳手架生成的代碼肯定是不適合我們所用的 所以要修改一部分代碼

//App.vue
<template>
  <div id="app">
    <router-view></router-view>
  </div>
</template>

<script>
export default {
  name: 'app'
}
</script>

<style>
  html,body,#app,#app>*{
    width: 100%;
    height: 100%;
  }
  body{
    font-family: 'Avenir', Helvetica, Arial, sans-serif;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-align: center;
    color: #2c3e50;
    font-size: 16px;
    margin: 0;
    overflow-x: hidden;
  }

  img{
    width: 200px;
  }
</style>

修改main.js

為什么要這么做?為什么要避免狀態(tài)單例

main.js 是我們應(yīng)用程序的「通用 entry」。

在純客戶端應(yīng)用程序中,我們將在此文件中創(chuàng)建根 Vue 實(shí)例,并直接掛載到 DOM。

但是,對于服務(wù)器端渲染(SSR),責(zé)任轉(zhuǎn)移到純客戶端 entry 文件。

main.js 簡單地使用 export 導(dǎo)出一個(gè) createApp 函數(shù):

import Vue from 'vue';
Vue.config.productionTip = false;
import App from './App.vue';
//router store 實(shí)例
//這么做是避免狀態(tài)單例
export function createApp() {

  const app = new Vue({
    //掛載router,store
    render: h => h(App)
  })
  //暴露app實(shí)例
  return { app };
}

添加Vue.config.js配置

webpack的入口文件有兩個(gè),一個(gè)是客戶端使用,一個(gè)是服務(wù)端使用。

為何這么做?

今天只做客戶端部分。

  src/vue.config.js
  module.exports = {
    css: {
      extract: false//關(guān)閉提取css,不關(guān)閉 node渲染會報(bào)錯
    },
    configureWebpack: () => ({
      entry: './src/entry/client'
    })
  }

根目錄創(chuàng)建 entry 文件夾,以及webpack入口代碼

  mdkir entry
  cd entry
  創(chuàng)建 入口文件
    client.js 作為客戶端入口文件。
    server,js 作為服務(wù)端端入口文件。 //先創(chuàng)建不做任何配置
  entry/client.js

    import { createApp } from '../main.js';

    const { app } = createApp();

    app.$mount('#app');

路由和代碼分割

官方說明的已經(jīng)很清楚了,我就不做過多介紹了,下面直接展示代碼

添加新路由,這里將存放pages的相關(guān)路由

src/pages/router/index.js

/**
 *
 * @method componentPath 路由模塊入口
 * @param {string} name 要引入的文件地址
 * @return {Object}
 */
function componentPath (name = 'home'){
  return {
    component:() => import(`../${name}/index.vue`)
  }
}

export default [
  {
    path: '/home',
    ...componentPath(),
    children: [
      {
        path: "vue",
        name: "vue",
        ...componentPath('home/vue')
      },
      {
        path: "vuex",
        name: "vuex",
        ...componentPath('home/vuex')
      },
      {
        path: "vueCli3",
        name: "vueCli3",
        ...componentPath('home/vueCli3')
      },
      {
        path: "vueSSR",
        name: "vueSSR",
        ...componentPath('home/vueSSR')
      }
    ]

  }
]

src/router.config.js作為路由的總配置 易于管理

//路由總配置
  import Vue from 'vue';
  import VueRouter from 'vue-router';

  Vue.use(VueRouter);
  //為什么采用這種做法。
  //如果以后有了別的大模塊可以單獨(dú)開個(gè)文件夾與pages平級
  //再這里導(dǎo)入即可。這樣易于管理

  // pages
  import pages from './pages/router';

  export function createRouter() {
    return new VueRouter({
      mode: 'history',
      routes: [
        {
          path: "*",
          redirect: '/home/vue'
        },
        ...pages
      ]
    })
  }

更新main.js

import Vue from 'vue';
Vue.config.productionTip = false;
import App from './App.vue';
+ import { createRouter } from './router.config.js'
//router store 實(shí)例
//這么做是避免狀態(tài)單例
export function createApp() {
+  const router = createRouter()
  const app = new Vue({
+    router,
    render: h => h(App)
  })
  //暴露app,router實(shí)例
  return { app, router };
}

更新 client.js

由于使用的路由懶加載,所以必須要等路由提前解析完異步組件,才能正確地調(diào)用組件中可能存在的路由鉤子。

// client.js
import { createApp } from '../main.js';

const { app, router } = createApp();

router.onReady( () => {
  app.$mount('#app');
})

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue實(shí)現(xiàn)PDF文件預(yù)覽的方法詳解

    Vue實(shí)現(xiàn)PDF文件預(yù)覽的方法詳解

    pdf文件預(yù)覽是開發(fā)業(yè)務(wù)時(shí)常見的一個(gè)交互,在toB項(xiàng)目中是經(jīng)常用到的,對于用戶上傳文件,預(yù)覽文件等操作時(shí)有一個(gè)更好的體驗(yàn),下面我結(jié)合實(shí)際業(yè)務(wù),在vue的基礎(chǔ)上與大家分享這個(gè)實(shí)現(xiàn)方法,需要的朋友可以參考下
    2023-09-09
  • 詳解Vue 普通對象數(shù)據(jù)更新與 file 對象數(shù)據(jù)更新

    詳解Vue 普通對象數(shù)據(jù)更新與 file 對象數(shù)據(jù)更新

    本篇文章主要介紹了詳解Vue 普通對象數(shù)據(jù)更新與 file 對象數(shù)據(jù)更新 ,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-04-04
  • Vue中如何使用mock模擬數(shù)據(jù)

    Vue中如何使用mock模擬數(shù)據(jù)

    這篇文章主要介紹了Vue中如何使用mock模擬數(shù)據(jù),具有很好的價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • vue/cli?配置動態(tài)代理無需重啟服務(wù)的操作方法

    vue/cli?配置動態(tài)代理無需重啟服務(wù)的操作方法

    vue-cli是vue.js的腳手架,用于自動生成vue.js+webpack的項(xiàng)目模板,分為vue?init?webpack-simple?項(xiàng)目名和vue?init?webpack?項(xiàng)目名兩種,這篇文章主要介紹了vue/cli?配置動態(tài)代理,無需重啟服務(wù),需要的朋友可以參考下
    2022-05-05
  • Vue中key的具體使用

    Vue中key的具體使用

    在vue中,key是dom對象的標(biāo)識,本文主要介紹了Vue中key的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • vite項(xiàng)目如何從0開始配置eslint

    vite項(xiàng)目如何從0開始配置eslint

    這篇文章主要介紹了vite項(xiàng)目如何從0開始配置eslint問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 解決vue scoped scss 無效的問題

    解決vue scoped scss 無效的問題

    這篇文章主要介紹了解決vue scoped scss 無效的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue實(shí)現(xiàn)在data里引入相對路徑

    vue實(shí)現(xiàn)在data里引入相對路徑

    這篇文章主要介紹了vue實(shí)現(xiàn)在data里引入相對路徑,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Vue中的虛擬DOM、diff算法、key的作用詳解

    Vue中的虛擬DOM、diff算法、key的作用詳解

    這篇文章主要介紹了Vue中的虛擬DOM、diff算法、key的作用,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Vue中添加滾動事件設(shè)置的方法詳解

    Vue中添加滾動事件設(shè)置的方法詳解

    這篇文章主要給大家介紹了關(guān)于Vue中添加滾動事件設(shè)置的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09

最新評論

曲阜市| 铜川市| 称多县| 莲花县| 迁安市| 郁南县| 穆棱市| 武威市| 泰兴市| 陇南市| 衡阳县| 彰化市| 赣州市| 广安市| 岳普湖县| 潜江市| 上林县| 泰顺县| 广德县| 临桂县| 福鼎市| 福州市| 密云县| 河北区| 海南省| 高州市| 本溪| 沾益县| 鲁甸县| 谢通门县| 温泉县| 额敏县| 耒阳市| 和平区| 麻城市| 梧州市| 故城县| 竹北市| 江川县| 阳城县| 德令哈市|