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

使用Nuxt.js改造已有項目的方法

 更新時間:2018年08月07日 10:57:54   作者:wopelo  
這篇文章主要介紹了使用Nuxt.js改造已有項目的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

前言

如果我們需要對現(xiàn)有的vue項目進行ssr改造,使用nuxt.js是一個不錯的選擇。這里用作例子的“現(xiàn)有項目”是一個“高仿”餓了么外賣APP的spa。不過我沒有把全部功能開發(fā)出來(全部做出來就不得了了),只是做出幾個基本界面意思意思

 

下面就以這個demo為小白鼠進行ssr改造

準備

現(xiàn)有目錄

 

很明顯,這是使用vue-cli搭建的項目

其中prod.server.js是build之后的啟動文件

dataa.json文件是模擬數(shù)據(jù),在build/dev-server.js中會用到它

安裝與配置

安裝nuxt

npm install --save-dev nuxt

新建nuxt文件夾

我們需要在根目錄下建立一個nuxt文件夾,該文件夾的內(nèi)部組織按照nuxt本身的應(yīng)用目錄架構(gòu)進行組織(參考

 

注意,在static目錄下有一個logo.png,它將作為項目圖標,在nuxt.config.js中這張圖片的地址直接寫成/logo.png。下一節(jié)會對nuxt文件夾的組織進行詳細說明。

新建并設(shè)置nuxt.config.js

當(dāng)然,我們也需要在根目錄下創(chuàng)建nuxt.config.js文件用于組織Nuxt.js 應(yīng)用的個性化配置,在這個項目中,需要進行設(shè)置的點有:

  1. 源碼目錄路徑
  2. head中的meta以及l(fā)ink(主要是圖標)
  3. 全局的css樣式
  4. 項目中需要使用圖片和字體文件,雖然nuxt默認對其進行配置,但我們需要重新定義部分內(nèi)容(項目中是擴大limit)
  5. 項目中使用了sass,需要對其進行配置

所以,nuxt.config.js的代碼如下

module.exports = {
  // 設(shè)置nuxt源碼目錄路徑
  srcDir: "nuxt/",
  head: {
    title: "sell-nuxt",
    meta: [
      {
        charset: "utf-8"
      },
      {
        name: "viewport",
        content: "width=device-width, initial-scale=1,user-scalable=no,maximum-scale=1.0,minimum-scale=1.0"
      }
    ],
    link: [
      {
        rel: "shortcut icon",
        type: "image/png",
        // 注意圖片的路徑直接指向static下的logo.png
        href: "/logo.png"
      }
    ]
  },
  css: [
    "~assets/reset.css"
  ],
  build: {
    vendor: ['axios'],
    loaders: [
      {
        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
        loader: 'url-loader',
        options: {
         limit: 10000,
         name: 'img/[name].[hash:7].[ext]'
        }
      },
      {
        test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
        loader: 'url-loader',
        options: {
         limit: 10000,
         name: 'fonts/[name].[hash:7].[ext]'
        }
      },
      {
        test: /\.scss$/,
        loader: "vue-style-loader!css-loader!sass-loader"
      }
    ]
  }
}

配置package.json

package.json是npm的配置文件,現(xiàn)在,我們需要對script選項進行配置

"scripts": {
  "dev": "nuxt",
  "build": "nuxt build",
  "start": "nuxt start",
  "generate": "nuxt generate",
  "lint": "eslint --ext .js,.vue --ignore-path .gitignore .",
  "precommit": "npm run lint"
 }

可以參考nuxt的命令列表

改造后的目錄

 

其中有個nuxt.api.js,這個文件是為完成ssr改造后的項目提供api接口的,使用koa,運行在3001端口

nuxt文件夾組織

因為我們已經(jīng)把項目代碼開發(fā)出來了,所以nuxt文件夾里面的大部分代碼可以直接從已有代碼中拷貝

layouts

布局目錄 layouts 用于組織應(yīng)用的布局組件,nuxt可通過添加 layouts/default.vue 文件來擴展應(yīng)用的默認布局,在layouts下新建default.vue

<template>
 <div id="app">
  <v-header v-bind:seller="seller"></v-header>
  <v-tab></v-tab>
  <nuxt/>
 </div>
</template>

<script>
 import axios from 'axios';
 // 引入組件
 import header from "~/components/header/header.vue";
 import tab from "~/components/tab/tab.vue";
 export default {
  data:function(){
   return {
    seller:{}
   }
  },
  created:function(){
   axios.get("http://localhost:3001/seller").then(res=>{
    console.log(res.data);
    this.seller = res.data.data;
   });
  },
  components:{
   "v-header":header,
   "v-tab":tab
  }
 }
</script>

<style lang="scss" rel="text/css">

</style>

<nuxt/> 組件用于顯示頁面的主體內(nèi)容,即“商品”、“評論”、“商家”這幾個部分

pages

nuxt依據(jù) pages 目錄結(jié)構(gòu)自動生成 vue-router 模塊的路由配置,這無疑是非常方便的

 

不難看出goods、patings、seller分別對應(yīng)“商品”、“評論”、“商家”

這樣子設(shè)置,則nuxt自動生成的路由配置如下

router: {
 routes: [
  {
   name: 'index',
   path: '/',
   component: 'pages/index.vue'
  },
  {
   name: 'goods',
   path: '/goods',
   component: 'pages/goods/index.vue'
  },
  {
   name: 'patings',
   path: '/patings',
   component: 'pages/patings/index.vue'
  },
  {
   name: 'seller',
   path: '/seller',
   component: 'pages/seller/index.vue'
  }
 ]
}

但我們希望默認進入goods,nuxt官方文檔并沒有說如何設(shè)置默認路徑,這就是為什么要在pages下面創(chuàng)建一個index.vue

<template>

</template>

<script>
 export default {
  created:function(){
   this.$router.push('/goods'); // 頁面加載時跳轉(zhuǎn)
  }
 }
</script>

<style lang="scss" rel="text/css">

</style>

對于那些不需要像在pages下的頁面組件那樣有 asyncData 方法的特性的組件,我們可以將他們放到components目錄下

assets

資源目錄 assets 用于組織未編譯的靜態(tài)資源如 LESS、SASS 或 JavaScript,這個目錄是我感覺在引用路徑時最坑的一個。
在官方文檔中,每個目錄都有別名,這些別名在nuxt.config.js中配置時是有效的,比如之前配置的css選項,但不代表我們在組件中使用這些別名會有效,在組件中我們最好使用相對路徑,比如在components/header/header.vue中就不能直接寫~assets,而得老老實實寫相對路徑

<style lang="scss" rel="text/css" src="../../assets/base.scss"></style>
<style type="text/css" src="../../assets/style.css"></style>
<style lang="scss" rel="text/css">
  @import "../../assets/mixin.scss";
  @import "./header.scss";
</style>

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

相關(guān)文章

  • VUE實現(xiàn)強制渲染,強制更新

    VUE實現(xiàn)強制渲染,強制更新

    今天小編就為大家分享一篇VUE實現(xiàn)強制渲染,強制更新,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • 詳解VSCode配置啟動Vue項目

    詳解VSCode配置啟動Vue項目

    這篇文章主要介紹了VSCode配置啟動Vue項目,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • vue解決彈出蒙層滑動穿透問題的方法

    vue解決彈出蒙層滑動穿透問題的方法

    這篇文章主要介紹了vue解決彈出蒙層滑動穿透問題的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • Vue過濾器使用方法詳解

    Vue過濾器使用方法詳解

    過濾器的功能是對要顯示的數(shù)據(jù)進行格式化后再顯示,其并沒有改變原本的數(shù)據(jù),只是產(chǎn)生新的對應(yīng)的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Vue中過濾器定義以及使用方法的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • vue自定義可選時間的日歷組件

    vue自定義可選時間的日歷組件

    這篇文章主要為大家詳細介紹了vue自定義可選時間的日歷組件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Vue用戶管理的增刪改查功能詳解

    Vue用戶管理的增刪改查功能詳解

    這篇文章主要為大家詳細介紹了Vue用戶管理的增刪改查功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • VUE注冊全局組件和局部組件過程解析

    VUE注冊全局組件和局部組件過程解析

    這篇文章主要介紹了VUE注冊全局組件和局部組件過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • vue3中7種路由守衛(wèi)的使用大全舉例

    vue3中7種路由守衛(wèi)的使用大全舉例

    最近在學(xué)習(xí)vue,感覺路由守衛(wèi)這個地方知識點挺多的,而且很重要,下面這篇文章主要給大家介紹了關(guān)于vue3中7種路由守衛(wèi)的使用大全,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-03-03
  • Vue router傳遞參數(shù)并解決刷新頁面參數(shù)丟失問題

    Vue router傳遞參數(shù)并解決刷新頁面參數(shù)丟失問題

    這篇文章主要介紹了Vue router傳遞參數(shù)并解決刷新頁面參數(shù)丟失問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • vue下的@change事件的實現(xiàn)

    vue下的@change事件的實現(xiàn)

    這篇文章主要介紹了vue下的@change事件的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10

最新評論

长沙市| 德钦县| 神木县| 玉林市| 玛沁县| 桑日县| 甘肃省| 无锡市| 庄浪县| 永济市| 图们市| 井冈山市| 玉山县| 水城县| 渑池县| 和硕县| 海南省| 乐平市| 荆门市| 皋兰县| 衡山县| 锡林郭勒盟| 宁国市| 海盐县| 绿春县| 阿克苏市| 合山市| 永城市| 西峡县| 贞丰县| 台东市| 德化县| 龙岩市| 北川| 泊头市| 沁源县| 丹阳市| 桐柏县| 江都市| 望江县| 灌南县|