day07-Vue04

来源:https://www.cnblogs.com/liyuelian/archive/2023/01/11/17044939.html
-Advertisement-
Play Games

Vue04 12.Vue2 腳手架模塊化開發 目前開發模式的問題: 開發效率低 不夠規範 維護和升級,可讀性比較差 12.1基本介紹 官網地址 什麼是Vue Cli腳手架 12.2環境配置,搭建項目 VUE安裝教程+VScode配置 搭建Vue腳手架工程,需要用到NPM(node package m ...


Vue04

12.Vue2 腳手架模塊化開發

目前開發模式的問題:

  1. 開發效率低
  2. 不夠規範
  3. 維護和升級,可讀性比較差

12.1基本介紹

官網地址

什麼是Vue Cli腳手架

12.2環境配置,搭建項目

VUE安裝教程+VScode配置

  1. 搭建Vue腳手架工程,需要用到NPM(node package manager),npm是隨node.js安裝的一款包管理工具,類似Maven。所以我們需要先安裝Node

  2. 為了更好相容,這裡我們安裝node.js10.16.3,後面使用Vue3的腳手架工程搭建時再對Node升級

    如果以前安裝過node.js,為防止版本衝突,先卸載

  3. 下載node.js10.16.3 地址:https://nodejs.org/en/blog/release/v10.16.3/

    image-20230110192811970
  4. 安裝node.js10.16.3,直接點擊下一步即可

  5. 在命令視窗中輸入命令node -v驗證是否安裝成功

    C:\WINDOWS\system32>node -v
    v10.16.3
    
  6. 先刪除以前的cli版本(不論之前有沒有下載過):npm uninstall vue-cli -g

    C:\WINDOWS\system32>npm uninstall vue-cli -g
    up to date in 0.032s
    
  7. 安裝淘寶鏡像-cnpm:npm install -g cnpm --registry=https://registry.npm.taobao.org

    npm和cnpm的區別:

    1. 兩者只是node中包管理器的不同,都可以使用
    2. npm是node官方的包管理器。cnpm淘寶定製的(gzip壓縮支持)命令行工具,代替預設的npm
    3. 如果因為網路原因無法使用npm下載,就可以使用cnpm
    4. npm和cnpm只是下載的地址不同,cnpm從國內下載
    image-20230110200148409
  8. 安裝webpack和webpack-cli,指令:npm install [email protected] webpack-cli -D

    webpack是一個打包工具

  9. 安裝cnpm install -g @vue/[email protected]

  10. 確認Vue-Cli版本vue -V

    image-20230110234039391
  11. 在自定義的目錄下,創建目錄vue_project,並cmd到該目錄

    image-20230110234327678
  12. 使用指令vue init webpack 項目名來進行項目創建

    image-20230110235517367 image-20230110235823885 image-20230111000228344
  13. 按照上圖指示切換到你的項目目錄下,然後執行命令npm run dev

    image-20230111000730442
  14. 在瀏覽器訪問http://localhost:8080

    image-20230111000943404
  15. 在控制台輸入ctrl+c,可退出運行

    image-20230111001452545

12.3IDEA打開項目,運行項目

  1. 將Vue腳手架項目,直接拖到IDEA,即可打開(或者在idea中切換項目)

  2. 配置NPM

    image-20230111002006023 image-20230111002245694
  3. 點擊啟動

    image-20230111002406993
  4. 成功運行(鍵入ctrl+c停止運行)

    image-20230111002522993

12.4vue項目結構分析

image-20230111180050586

12.5vue請求執行流程

image-20230111180909109

整個流程分析:

  1. main.js:

    從入口js——main.js開始。如果發現有router,就會到對應的router文件去(找到router/index.js)。

  2. router/index.js:

    獲取請求的url,跟路由表的path進行匹配,如果匹配上,就會去找相應的組件

  3. components/HelloWorld.vue:

    找到組件後,就對該組件進行編譯和渲染。組件處理完畢後,將結果返回給對應的main.js對應的router

  4. main.js:

    main.js得到router結果後,找到template,template里如果有router-view,就會把路由後的頁面引入。然後當Vue實例的template也編譯渲染後之後,相當於這個vue已經準備好了。

  5. index.html:

    此時將該實例掛載到index.html中,併進行顯示。


在整個頁面渲染的過程中,main.js是中心,也是連接各個組件,路由器的關鍵。因為Vue預設生成的項目代碼,使用了很多簡寫,造成初學者理解困難,以下是完整main.js的寫法:

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'//完整寫法是 import App from './App.vue'
import router from './router'//完整寫法是 import App from './router/index.js'

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',//這裡的 #app 是掛載到index.html的 <div id="app"></div>
  router,//完整寫法是 router:router 第二個 router 來自 import <這裡> from './router'
  components: { App },//完整寫法是 components:{ 'App' : App } 第二個 App 來自 import <這裡> from './App'
  template: '<App/>'//這裡的 '<App/>' 指的是components中 被省略的組件名字: 'App'
  // 也就是說,如果前面改為 components: { 'HelloApp': App }, 這裡要寫為 template: '<HelloApp/>'
})

12.6路由切換-練習

根據Vue請求執行流程,完成路由切換實例。要求訪問http://localhost:8080/#/hello可以訪問到一個頁面,訪問http://localhost:8080/#/可以訪問到另一個頁面。

只需要修改router/index.js,併在components目錄下創建新的組件:

  1. 創建組件Hello.vue:

    <template>
      <div><h1>{{ message }}</h1></div>
    
    </template>
    
    <script>
    export default {
      name: "Hello",
      data() {//函數形式
        return {
          message: "Hello,Mary~~"
        }
      }
    }
    </script>
    
    <style scoped>
    
    </style>
    

    HelloWorld.vue:

    <template>
      <div class="hello">
        <h1>{{ msg }}</h1>
        <h2>網站地址</h2>
        <a href="https://www.baidu.com" target="_blank">百度一下</a>
      </div>
    </template>
    
    <script>
    export default {//預設導出組件
      name: 'HelloWorld',
      data() {//數據池
        return {
          msg: '網站首頁'
        }
      }
    }
    </script>
    
    <!-- Add "scoped" attribute to limit CSS to this component only -->
    <style scoped>
    a {
      color: #42b983;
    }
    </style>
    
  2. 修改路由文件router/index.js:

    import Vue from 'vue'
    import Router from 'vue-router'
    //@ 表示的是 src目錄
    import HelloWorld from '@/components/HelloWorld'
    import Hello from "@/components/Hello"
    
    Vue.use(Router)
    
    export default new Router({
      routes: [//路由表
        {
          path: '/',
          name: 'HelloWorld',
          component: HelloWorld
        },
        {
          path: '/hello',
          name: 'Hello',
          component: Hello
        },
      ]
    })
    

    image-20230111203225917 image-20230111203259281

12.7路由切換-應用實例

需求說明/圖解,輸入http://localhost:8080/#/olien,訪問如下頁面

image-20230111203649625

創建新的組件olien.vue:

<!--模板,表示頁面視圖 html-->
<template>
  <div>
    <h1>{{ meg }}</h1>
    <table>
      <tr>
        <td colspan="3">第1行第1列</td>
      </tr>
      <tr>
        <td rowspan="2">第2行第1列</td>
        <td>第2行第2列</td>
        <td>第2行第3列</td>
      </tr>
      <tr>
        <td>第3行第2列</td>
        <td>第3行第3列</td>
      </tr>
      <tr>
        <td rowspan="2">第4行第1列</td>
        <td>第4行第2列</td>
        <td>第4行第3列</td>
      </tr>
      <tr>
        <td>第5行第2列<img src="@/assets/logo.png"></td>
        <td>第5行第3列</td>
      </tr>
    </table>
  </div>
</template>

<!--定義數據和相關操作方法,是預設導出-->
<script>
export default {
  name: "olien",
  data() {
    return {
      meg: "Welcome to Olien!"
    }
  }
}
</script>

<!--css樣式,修改模板頁面視圖-->
<style scoped>
div {
  width: 900px;
  background-color: aliceblue;
  /*0表示上下邊距,auto表示左右居中*/
  margin: 0 auto;
}

h1 {
  color: red;
}

table, tr, td {
  margin: auto;
  width: 600px;
  border: 1px solid red;
  border-collapse: collapse;
}
</style>

配置router:

import Vue from 'vue'
import Router from 'vue-router'
//@ 表示的是 src目錄
import olien from '@/components/olien'

Vue.use(Router)

export default new Router({
  routes: [//路由表
    ...
    ...,
    {//配置一組新路由
      path: '/olien',
      name: 'olien',
      component: olien
    }
  ]
})

由於不想在/olien頁面的上方出現預設logo,只需要將該圖片在App.vue中拿掉,根據不同的組件需要,放到組件中即可:

image-20230111210721047

頁面展示:

image-20230111210821464
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1 基於ansible role實現編譯安裝nginx 利用ansible控制端10.0.0.8機器,在被控制端10.0.0.18上部署nginx ==首先打通ansible控制端與被控制端的基於key驗證== [root@ansible-rocky ~]$ ssh-copy-id 10.0.0.1 ...
  • GreatSQL社區原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。 GreatSQL是MySQL的國產分支版本,使用上與MySQL一致。 作者:王權富貴 文章來源:GreatSQL社區原創 1.概述 本文通過 XtraBackup 備份單個資料庫,然後恢復到另一個實例,用於快速遷移大數據量 ...
  • 隨著數據量的增大,傳統關係型資料庫越來越不能滿足對於海量數據存儲的需求。對於分散式關係型資料庫,我們瞭解其底層存儲結構是非常重要的。本文將介紹下分散式關係型資料庫 TiDB 所採用的底層存儲結構 LSM 樹的原理。 ...
  • 在使用MybatisPlus分頁功能時發現:前端查詢第一頁是沒問題的,但是向後查詢的時候數據始終是第一頁的 查詢第一頁的時候發現沒有任何問題 往後查詢,比如查詢第二頁時數據和第一頁一樣 開始以為是代碼問題,把sql單獨拿出來執行發現還是會有重覆數據 上網查詢發現是因為ORDER BY排序的欄位有重覆 ...
  • 分享概要 一、業務場景 二、架構演進 三、架構設計 四、穩定性 五、效率 一、業務場景 在開始講解之前,我先為大家介紹一下B站的業務場景。B站的業務大體上可以分為以下幾類: 1、點播類業務 點播類業務就是大家經常看的視頻以及稿件之類相關的業務,這類數據使用場景的特點有: 數據一致性要求較高 耗時敏感 ...
  • 前言 最近閱讀 Catcher、BugSnag、Rollbar 三個 Flutter 異常監控開源框架,文章鏈接如下: Flutter 異常監控 - 壹 | 從 Zone 說起 Flutter 異常監控 - 貳 | 框架 Catcher 原理分析 Flutter 異常監控 - 叄 | 從 bugsn ...
  • 一、推送成功收不到消息,推送返回:{"message":"success","requestID":"1523868*****2842718","resultcode":0} 排查步驟: 1、網路不穩定,切換穩定網路進行測試; 2、檢查手機是否為EMUI8.0.0系統,如果是早期的EMUI8.0,則 ...
  • Vue.js是一個漸進式的JavaScript框架,它使用了響應式系統來維護應用程式的狀態。響應式系統是Vue.js的核心部分,它使得應用程式能夠自動地更新視圖,當數據發生變化時。 ...
一周排行
    -Advertisement-
    Play Games
  • C#TMS系統代碼-基礎頁面BaseCity學習 本人純新手,剛進公司跟領導報道,我說我是java全棧,他問我會不會C#,我說大學學過,他說這個TMS系統就給你來管了。外包已經把代碼給我了,這幾天先把增刪改查的代碼背一下,說不定後面就要趕鴨子上架了 Service頁面 //using => impo ...
  • 委托與事件 委托 委托的定義 委托是C#中的一種類型,用於存儲對方法的引用。它允許將方法作為參數傳遞給其他方法,實現回調、事件處理和動態調用等功能。通俗來講,就是委托包含方法的記憶體地址,方法匹配與委托相同的簽名,因此通過使用正確的參數類型來調用方法。 委托的特性 引用方法:委托允許存儲對方法的引用, ...
  • 前言 這幾天閑來沒事看看ABP vNext的文檔和源碼,關於關於依賴註入(屬性註入)這塊兒產生了興趣。 我們都知道。Volo.ABP 依賴註入容器使用了第三方組件Autofac實現的。有三種註入方式,構造函數註入和方法註入和屬性註入。 ABP的屬性註入原則參考如下: 這時候我就開始疑惑了,因為我知道 ...
  • C#TMS系統代碼-業務頁面ShippingNotice學習 學一個業務頁面,ok,領導開完會就被裁掉了,很突然啊,他收拾東西的時候我還以為他要旅游提前請假了,還在尋思為什麼回家連自己買的幾箱飲料都要叫跑腿帶走,怕被偷嗎?還好我在他開會之前拿了兩瓶芬達 感覺感覺前面的BaseCity差不太多,這邊的 ...
  • 概述:在C#中,通過`Expression`類、`AndAlso`和`OrElse`方法可組合兩個`Expression<Func<T, bool>>`,實現多條件動態查詢。通過創建表達式樹,可輕鬆構建複雜的查詢條件。 在C#中,可以使用AndAlso和OrElse方法組合兩個Expression< ...
  • 閑來無聊在我的Biwen.QuickApi中實現一下極簡的事件匯流排,其實代碼還是蠻簡單的,對於初學者可能有些幫助 就貼出來,有什麼不足的地方也歡迎板磚交流~ 首先定義一個事件約定的空介面 public interface IEvent{} 然後定義事件訂閱者介面 public interface I ...
  • 1. 案例 成某三甲醫預約系統, 該項目在2024年初進行上線測試,在正常運行了兩天後,業務系統報錯:The connection pool has been exhausted, either raise MaxPoolSize (currently 800) or Timeout (curren ...
  • 背景 我們有些工具在 Web 版中已經有了很好的實踐,而在 WPF 中重新開發也是一種費時費力的操作,那麼直接集成則是最省事省力的方法了。 思路解釋 為什麼要使用 WPF?莫問為什麼,老 C# 開發的堅持,另外因為 Windows 上已經裝了 Webview2/edge 整體打包比 electron ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...