前端進階之路-從傳統前端到VUE-JS(第二期-VUE-JS框架結構分析)

經過上期內容的學習,我們已經可以構建一個VUE-CLI框架了,接下來我們分析一下這個框架,畢竟知己知彼,百戰百勝

我們創建完成后可以看到以下內容

接下來我們分析一下他的文件結構

node_modules用于存放項目所依賴的第三方模塊和包。當使用 Vue3-CLI 創建項目并安裝依賴后,這些依賴都會被放置在此文件夾中。比如 Vue3 框架本身、各種 UI 組件庫、工具庫等。public存放靜態資源文件,如 HTML 文件、圖片、字體等。這些文件在構建項目時會被直接復制到輸出目錄中,不會被 Vue 項目構建系統處理。通常,index.html 是項目的入口 HTML 文件,在這里可以進行一些全局的配置和引入外部資源。src是項目的核心源代碼目錄。assets :存放靜態資源,如圖片、樣式表等,在項目中可以通過相對路徑或別名進行引用。components :存放項目的各種組件,每個組件通常對應一個?.vue 文件,包含模板、腳本和樣式三部分,實現了視圖和邏輯的分離。views :存放頁面級的組件,通常每個頁面對應一個?.vue 文件,這些文件會作為路由的對應組件進行展示。router :存放路由相關的配置文件,定義了應用的路由規則,包括路徑、對應的組件等信息。store :用于管理應用的狀態,通常使用 Vuex 或 Pinia 等狀態管理庫。在這個目錄下可以定義全局的狀態、 mutations、actions 和 getters 等。api :存放與后端接口交互的代碼,封裝了對后端 API 的請求,方便在組件中調用獲取數據。utils :存放項目的工具函數和公共方法,可以被項目中的多個組件或模塊復用。.browserslistrc用于配置目標瀏覽器的范圍,指定項目所支持的瀏覽器及其版本。這有助于在構建項目時,根據所支持的瀏覽器對代碼進行相應的兼容性處理,確保項目在不同瀏覽器中的正常運行。.eslintrc.jsESLint 的配置文件,用于定義代碼的檢查規則和風格指南。通過配置 ESLint,可以自動檢查代碼中的潛在問題、語法錯誤以及是否符合團隊約定的代碼風格,有助于提高代碼的質量和可維護性。.gitignore指定哪些文件或目錄不應被 Git 版本控制系統跟蹤。例如,node_modules 目錄、編譯后的文件、環境配置文件等,避免將這些不必要的文件提交到版本庫中。babel.config.jsBabel 的配置文件,用于將 ES6 ?+語法轉譯為向后兼容的 JavaScript 語法。它確保項目中的代碼能夠在不同環境下正常運行,使得開發者可以使用較新的 JavaScript 特性編寫代碼,而不用擔心兼容性問題。package-lock.json 和?package.jsonpackage.json :包含了項目的元數據,如項目名稱、版本、描述、作者、依賴等信息。同時,還定義了項目的腳本命令,如啟動開發服務器、構建生產環境代碼等。它是項目配置的核心文件,用于管理項目的依賴和腳本。package-lock.json :由 npm 自動生成,用于鎖定項目中各個依賴的精確版本,確保在不同的開發環境和部署環境中,安裝的依賴版本一致,避免因依賴版本差異導致的問題。README.md項目的說明文件,通常包含項目的基本信息、安裝步驟、使用方法、項目特點等內容。它為開發者和使用者提供了項目的快速入門和參考資料。tsconfig.json(如果項目使用 TypeScript)TypeScript 的配置文件,用于定義 TypeScript 編譯器的選項和項目中的 TypeScript 文件的編譯規則。可以指定目標 JavaScript 版本、模塊系統、類型檢查的嚴格程度等,以滿足項目對 TypeScript 的不同需求。vue.config.jsVue CLI 的配置文件,用于對 Vue CLI 的構建行為進行定制化配置。可以配置構建路徑、環境變量、插件選項、頁面入口等,以適應項目的特殊需求。

可以看到很復雜,但是我們的目標是逐步熟練,以了解一些常用的vue知識為主

本期內容著重常用的文件進行介紹

App.vue

(沒有找到的話打開src文件夾看看)

(以下內容.vue文件都會有,只是以App.vue方便看初始內容的示例)

<template>?部分

這是?App.vue?的 HTML 模板部分,定義了應用的頁面結構。

它通常包含應用的主要布局,如?headermainfooter?等通用部分,這些部分可以為整個應用提供統一的外觀和導航結構。

<router-view/>?是一個特殊的元素,用于 Vue Router 進行路由切換時渲染對應的組件。當用戶訪問不同的路由時,對應的組件會在這個位置顯示。

還可以引入自己定義的子組件,如示例中的?<MyComponent/>,子組件會在這個位置被渲染。

(實際上當作HTML的本體加拓展就行,看官方術語的話很晦澀)

<script>?部分

這里是組件的 JavaScript 邏輯部分,包含了組件的配置選項。

name?:定義了組件的名稱,通常與文件名相同,方便調試和引用。

components?:用于注冊子組件,將子組件導入后在這里進行注冊,這樣在模板中才能使用這些子組件。

data?:定義了組件的響應式數據,這些數據可以用于模板中的動態綁定,例如在頁面上顯示應用的標題等信息。當數據發生變化時,頁面上綁定該數據的部分會自動更新。

methods?:定義了組件的方法,這些方法可以被模板中的事件綁定調用,用于處理用戶的交互行為,如點擊按鈕觸發的方法等。

created?:是一個生命周期鉤子,在組件實例創建完成后會立即調用。可以在這個鉤子中進行一些初始化操作,如發送請求獲取數據等。

(在初始內容中沒有,在之后我們會有示例)

<style>?部分

這里是組件的樣式部分,用于定義應用的樣式。

可以為整個應用的頁面元素定義樣式,如字體、顏色、布局等。

還可以為子組件定義樣式,這些樣式會作用于子組件的對應元素,從而實現對整個應用的樣式控制。

(對于不了解VUE的朋友來說,在實際使用中概念和CSS差不多)

比如這個示例

<template><div id="app"><header><h1>我的 Vue 應用</h1></header><main><router-view /></main><footer><p>&copy; 2024 我的 Vue 應用</p></footer><MyComponent /></div></template><script>import MyComponent from './components/MyComponent.vue'export default {name: 'App',components: {MyComponent},data() {return {appTitle: '我的 Vue 應用'}},methods: {appMethod() {console.log('App method called')}},created() {console.log('App component created')}}</script><style>#app {font-family: 'Avenir', Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px;}header {background-color: #42b983;padding: 20px;margin-bottom: 20px;}footer {background-color: #42b983;padding: 20px;margin-top: 20px;}</style>

事實上,在實際使用過程中以上的內容可能不會全部都用,但是仍然值得了解以便于后期拓展

接下來了解初始顯示內容

我們啟動vue框架看看

打開pakeage.json文件我們可以看到有調試的按鈕

點擊后我們選擇sever vue-cli-service serve即可

等一會兒后可以看到端口,我們用谷歌瀏覽器打開

可以看到成功啟動

我們再來分析一下顯示頁面的這幾個文件

在這兩個文件中HomeView和AboutView分別代表著上面的Home和About

我們再來通過全面的示例分析一下(當然了,不可能直接就能用的,畢竟不是傳統前端,有一定的規范性)

HomeView.vue

<template><div class="home"><h1>首頁</h1><p>歡迎來到我的 Vue 應用首頁!</p><!-- 可以在這里添加更多內容,比如輪播圖、產品列表等 --><div v-for="(item, index) in items" :key="index" class="item"><h3>{{ item.title }}</h3><p>{{ item.description }}</p></div></div></template><script>export default {name: "HomeView",data() {return {items: [{ title: "項目1", description: "這是項目1的描述" },{ title: "項目2", description: "這是項目2的描述" },{ title: "項目3", description: "這是項目3的描述" },],};},created() {console.log("HomeView component created");// 這里可以添加頁面初始化時的邏輯,比如獲取數據},methods: {// 可以在這里定義方法,處理頁面上的交互邏輯},};</script><style scoped>.home {font-family: "Avenir", Helvetica, Arial, sans-serif;text-align: center;padding: 20px;}.item {margin: 20px 0;padding: 10px;border: 1px solid #ddd;border-radius: 5px;}</style>

<template>

定義首頁的 HTML 結構,比如標題、段落、列表等內容。

使用?v-for?指令循環顯示數據。

<script>

定義組件的名稱和數據。

數據?items?是一個數組,用于存儲首頁要展示的項目信息。

created?生命周期鉤子在組件創建后執行,可以在這里執行一些初始化操作。

<style scoped>

為首頁定義樣式,scoped?使這些樣式只作用于當前組件。

(實際上只是預先了解一些專業術語而已,本期內容主要以熟悉為主)

AboutView.vue

<template><div class="about"><h1>關于</h1><p>這是一個關于 Vue 應用的頁面。</p><p>應用由以下部分組成:</p><ul><li v-for="(part, index) in parts" :key="index">{{ part }}</li></ul></div></template><script>export default {name: "AboutView",data() {return {parts: ["Vue.js", "Vue Router", "Vuex", "Vue CLI"],};},created() {console.log("AboutView component created");},};</script><style scoped>.about {font-family: "Avenir", Helvetica, Arial, sans-serif;text-align: center;padding: 20px;}ul {list-style-type: none;padding: 0;}li {margin: 10px 0;padding: 5px;border-bottom: 1px solid #eee;}</style>

<template>

定義關于頁面的 HTML 結構,包括標題、段落和列表等內容。

使用?v-for?指令循環顯示應用的組成部分。

<script>

定義組件的名稱和數據。

數據?parts?是一個數組,用于存儲應用的組成部分。

<style scoped>

為關于頁面定義樣式,scoped?使這些樣式只作用于當前組件。

分析完以后,那他們有什么用呢

HomeView.vue

通常用于展示首頁內容,如歡迎信息、最新動態、產品列表等。

是用戶進入應用后首先看到的頁面,可以包含應用的主要功能入口。

AboutView.vue

用于展示應用的背景信息、開發團隊、使用技術等內容。

通常是輔助頁面,為用戶提供多種信息。

(當然了,之后可以自己更改,畢竟人是活的)

那么問題來了,如果我有找到自己喜歡的東西,改怎么才能用呢

我們再來了解框架的結構

在 Vue 項目中,HomeView.vue?和?AboutView.vue?通常位于?src/views?目錄下。這個目錄通常用于存放應用的視圖組件(即頁面級別的組件)。在 Vue Router 的配置中,它們會被注冊為路由對應的組件。

我們在?src/router/index.js?中配置好路由

import { createRouter, createWebHistory } from "vue-router";import HomeView from "../views/HomeView.vue";import AboutView from "../views/AboutView.vue";const routes = [{path: "/",name: "home",component: HomeView,},{path: "/about",name: "about",component: AboutView,},];const router = createRouter({history: createWebHistory(process.env.BASE_URL),routes,});export default router;

然后在App.vue中更改template以更改路由

<template><div id="app"><header><nav><router-link to="/">首頁</router-link> |<router-link to="/about">關于</router-link></nav></header><main><router-view /></main></div></template><style>#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;}nav {padding: 30px;}nav a {font-weight: bold;color: #2c3e50;}nav a.router-link-exact-active {color: #42b983;}</style>

看一下結果

可以看到沒問題

以上便是常用框架分析(實際上就是vue文件的了解和vue框架的特性)不是很難,只要逐漸熟練就好,畢竟這東西開源的,搞廢了,直接新建一個,費點時間而已

畢竟,星星之火可以燎原,只要熟練度上來,就都好辦了

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/86813.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/86813.shtml
英文地址,請注明出處:http://en.pswp.cn/web/86813.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

網絡協議 / 加密 / 簽名總結

加密方式&#xff1a; 對稱加密&#xff1a;key 不可公開。 非對稱加密&#xff1a;公鑰加密的信息只有私鑰能解密。私鑰加密的信息只有公鑰能解密&#xff0c;且公鑰只能解密私鑰加密的信息&#xff08;用于簽名&#xff09;。 非對稱加密應用&#xff1a; 簽名&#xff1a…

集成學習基礎:Bagging 原理與應用

本文由「大千AI助手」原創發布&#xff0c;專注用真話講AI&#xff0c;回歸技術本質。拒絕神話或妖魔化。搜索「大千AI助手」關注我&#xff0c;一起撕掉過度包裝&#xff0c;學習真實的AI技術&#xff01; Bagging 介紹 1. 定義與全稱&#xff1a; Bagging 是 Bootstrap Agg…

skiaSharp linux 上報錯

The type initializer for SkiaSharp.SKImageInfo threw an exception 這個錯誤表明在 Linux 系統上初始化 SkiaSharp 的 SKImageInfo 類型時出現了問題。以下是完整的解決方案&#xff1a; 安裝系統依賴&#xff1a; # Ubuntu/Debian sudo apt-get update sudo apt-get ins…

crawl4ai crawler.arun( 超時問題

delay_before_return_html500 # 單位&#xff1a;毫秒 會導致 crawler.arun 超時問題。按理說不應該 await crawler.arun( 1. 瀏覽器加載頁面 ? 2. 頁面DOM構建完成 ? 3. JavaScript執行完成 ? 4. 等待 delay_before_return_html 時間 ? (500ms) 5. 返回最終HTML內容 &…

Linux Kernel下exFat使用fallocate函數不生效問題

1&#xff09;Linux驅動開發相關問題&#xff0c;分享給將要學習或者正在學習Linux驅動開發的同學。 2&#xff09;內容屬于原創&#xff0c;若轉載&#xff0c;請說明出處。 3&#xff09;提供相關問題有償答疑和支持。 Linux下經常使用fallocate去預分配一個很大的文件空間…

大學專業科普 | 物聯網、自動化和人工智能

在選擇大學專業時&#xff0c;可以先從自身興趣、能力和職業規劃出發&#xff0c;初步確定幾個感興趣的領域。然后結合外部環境因素&#xff0c;如專業前景、教育資源和就業情況等&#xff0c;對這些專業進行深入的分析和比較。 物聯網專業 課程設置 基礎課程&#xff1a;包括…

人工智能-基礎篇-7-什么是大語言模型LLM(NLP重要分支、Transformer架構、預訓練和微調等)

大型語言模型&#xff08;Large Language Model&#xff09;。這類模型是自然語言處理&#xff08;NLP&#xff09;領域的一個重要分支&#xff0c;它們通過在大量文本數據上進行訓練來學習語言的結構和模式&#xff0c;并能夠生成高質量的文本、回答問題、完成翻譯任務等。 1…

【趙渝強老師】基于PostgreSQL的分布式數據庫:Citus

由于PostgreSQL具有強大的功能和良好的可擴展性&#xff0c;因此基于PostgreSQL很容易就可以實現分布式架構。Citus便是具體的一種實現方式。它以擴展的插件形式與PostgreSQL進行集成&#xff0c;且獨立于PostgreSQL內核&#xff0c;部署也比較簡單。Citus是現在非常流行的基于…

【趙渝強老師】OceanBase OBServer節點的接入層

OceanBase數據庫代理ODP&#xff08;OceanBase Database Proxy&#xff0c;又稱OBProxy&#xff09;是OceanBase數據庫的接入層&#xff0c;負責將用戶的請求轉發到合適的OceanBase數據庫實例上進行處理。ODP是獨立的進程實例&#xff0c;獨立于OceanBase數據庫實例部署。ODP監…

ISP Pipeline(8): Color Space Conversion 顏色空間轉換

Color Space Conversion&#xff08;顏色空間轉換&#xff09; 是圖像處理中的一個重要步驟&#xff0c;它將圖像從一個顏色空間&#xff08;Color Space&#xff09;轉換到另一個&#xff0c;以滿足 顯示、分析、壓縮或算法需求。 為什么轉換顏色空間&#xff1f; 應用場景…

Spring Web MVC ①

&#x1f680; 一、Spring MVC MVC三層 Controller&#xff1a;樂團指揮&#xff0c;接收請求→調用模型→選擇視圖&#xff08;Controller&#xff09; Model&#xff1a;樂手&#xff0c;處理業務邏輯與數據&#xff08;POJO對象&#xff09; View&#xff1a;舞臺展示&…

【數據挖掘】貝葉斯分類學習—NaiveBayes

NaiveBayes 樸素貝葉斯的核心是貝葉斯定理&#xff0c;它描述了如何根據新證據更新事件的概率。 要求&#xff1a; 1、實現樸素貝葉斯分類算法&#xff0c;驗證算法的正確性&#xff0c;并將算法應用于給定的數據集Data_User_Modeling數據集&#xff0c;選擇一部分數據集作為已…

Java面試寶典:基礎二

&#x1f512; 25. final vs abstract 關鍵字 關鍵字修飾對象作用規則final類禁止被繼承final class MyClass { ... }方法禁止被子類重寫public final void func()變量變為常量&#xff08;基本類型值不可變&#xff0c;引用類型地址不可變&#xff09;final int MAX 100;abs…

小米手機安裝charles證書

使用紅米手機下載Charles證書一直下載中&#xff0c;無法正常下載。 不使用原裝瀏覽器&#xff0c;使用第三方瀏覽器下載就可以了。 使用第三方瀏覽器安裝&#xff0c;如我使用的是UC瀏覽器 使用第三方瀏覽器安裝的證書格式是".pem"格式問卷 將這個文件放入小米的dow…

DeepSeek R2 推遲發布:因 H20 算力短缺

DeepSeek 今年早些時候憑借其 R1 AI 模型備受廣泛關注。據《The Information》報道&#xff0c;R2 模型的工作似乎因 H20 處理器而停滯不前。 DeepSeek尚未透露其R2 模型的具體上市時間。 DeepSeek 使用 5 萬塊 Hopper GPU&#xff08;包括 3 萬塊 H20、1 萬塊 H800 和 1 萬塊…

智能之火,重塑創造:大模型如何點燃新一代開發引擎?

導言&#xff1a;普羅米修斯之火再現 在科技演進的長河中&#xff0c;每一次生產力的躍遷都伴隨著工具的質變。從蒸汽機轟鳴到電力普及&#xff0c;再到信息高速公路的鋪就&#xff0c;人類駕馭能量的能力不斷突破。今天&#xff0c;我們站在一個嶄新的臨界點上&#xff1a;大語…

一文入門JS

轉自個人博客 因為本人經常使用QML&#xff0c;而由于QML與JS之間的關系&#xff0c;本人經常使用到JS相關語法&#xff0c;所以在此系統性對JS基礎知識進行總結、記錄。 1. 入門 JavaScript&#xff08;簡稱 JS&#xff09;是一種廣泛應用于Web開發的腳本語言&#xff0c;它…

libtool: error: ‘/usr/.local/lib/libgmp.la‘ is not a valid libtool archive

背景&#xff1a; 安裝gcc時提示需要vc11&#xff0c;然后安裝gcc依賴gmp、mpfr、mpc。 到mpc make時出錯&#xff1a; libtool: error: ‘/usr/.local/lib/libgmp.la’ is not a valid libtool archive 詳細&#xff1a; /usr/bin/grep: /usr/.local/lib/libgmp.la: No such f…

HDC2025聚焦鴻蒙生態,FairGuard加固方案保駕護航

近日&#xff0c;在2025年華為開發者大會(HDC)上&#xff0c;華為正式啟動HarmonyOS 6開發者Beta&#xff0c;并全面展示一年多以來與合作伙伴共建鴻蒙生態的創新成果&#xff1a;“累計有9000多個應用參與了70多個系統級創新體驗的聯合打造&#xff0c;目前有3萬多鴻蒙應用和元…

GAN的思考及應用

一、對文獻的思考 CycleGAN的思考&#xff0c;前兩周看到了關于CycleGAN的原始論文&#xff0c;是用于處理圖像數據&#xff0c;有了如下思考&#xff1a; 1、基礎理論與方法 《Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks》是Cycle…