前端基礎之腳手架

腳手架結構

目錄結構

這里的package.json,存放著我們去執行npm run serve 或是npm run build的腳本文件

package-lock.json中存放著我們使用的外部包的版本類型,相當于maven

src下的main.js是整個項目的入口文件

src下的components用于存放組件,這里的assets用于存放靜態圖片資源

在public中.ico就是頁簽圖標,這里的index.html就是頁面的html

其中的代碼為

使用命令行使用vue inspect > output.js,就會生成一個含全部配置文件中的js文件

在vue.config.js中,我們可以配置一些相關的配置項

const { defineConfig } = require('@vue/cli-service')

module.exports = defineConfig({

? transpileDependencies: true

})

module.exports = {

?

? page:{

? ? index:{

? ? ? ?//配置入口

? ? ? ?entry:'src/main.js'

? ? },

? },

? //關閉語法檢查

? lintOnSave:false

}

?

?

red屬性

<template>

? <div>

? ? <h1 v-text="msg" ref="title"></h1>

? ? <button @click="showDom" ref="btn">點我輸出上面的Dom</button>

? ? <School ref="sch"></School>

? ? <school id="sch1"></school>

? </div>

</template>

<script>

import School from './components/School.vue'

export default {

? ? name:'App',

? ? components:{School},

? ? data(){

? ? ? ? return{

? ? ? ? ? ? ?msg:'歡迎'

? ? ? ? }

? ? ? ?

? ? },

? ? methods:{

? ? ? ? showDom(){

? ? ? ? ? ? console.log(this.$refs) ? ? ? ? ? ? ? ? ? ? ? ? //App所有的帶有ref的標簽

? ? ? ? ? ? console.log(this.$refs.title) ? ? ? ? ? ? ? ? ? //獲得title的標簽

? ? ? ? ? ? console.log(this.$refs.sch) ? ? ? ? ? ? ? ? ? ? //獲得School這個組件的Dom

? ? ? ? ? ? console.log(document.getElementById('sch1')) ? ?//獲得School組件的里面的<div>元素

? ? ? ? }

? ? }

}

</script>

<style>

</style>

輸出為

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Props使用

如果我們需要對組件內的值進行手動傳輸而不是使用{{}},就需要使用props進行接收

App.vue進行數據傳入

<template>

? <div>

<student name="李四" sex="" :age="18"></student>

<hr>

? </div>

</template>

<script>

import Student from './components/Student.vue'

export default {

? ? name:'App',

? ? components:{Student},

? ?

}

</script>

使用Student.vue進行數據接收

<template>

? <div >

? ? <h1>{{msg}}</h1>

? ? <h2>學生姓名:{{name}}</h2>

? ? <h2>學生性別:{{sex}}</h2>

? ? <h2>學生年齡:{{age+1}}</h2>

? </div>

</template>

<script>

export default {

? ? name:'School',

? ? data(){

? ? ? ? return{

? ? ? ? ? msg:'hello',

? ? ? ? }

? ? },

? // ?// props:["name","sex","age"] ?簡單接收

? // ?props:{ ? ? ? ? ? ? ? ? ? ? ?//接受的同時對類型限制

? // ? name:String,

? // ? age:Number,

? // ? sex:String

? // ?}

?

? props:{ ? ? ? ? ? ? //接收的同時對數據進行類型的限制+默認值的指定+必要性的指定

? ? name:{

? ? ? type:String, ? ?//name的類型是字符串

? ? ? required:true ? //數據是必須的

? ? },

? ? age:{

? ? ? type:Number, ? ?//age的類型是數字

? ? ? default:99 ? ? ?//如果不傳,默認就是99

? ? },

? ? ?sex:{

? ? ? type:String, ? ?//sex的類型是字符串

? ? ? required:true ? //數據是必須的

? ? },

? }

}

</script>

<style>

</style>

最終的效果為

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

mixin混合

如果組件中有一部分代碼說是結構是通用的,我們就可以使用混合,將一致的配置或數據添加到一個mimix.js中來作為使用

混合分為局部混合與全局混合,局部混合在組件內引入即可,全局混合在main.js中配置即可

如mixin.js混合文件中

export const hunhe={

? ? methods:{

? ? ? showName(){

? ? ? ? alert(this.name)

? ? ? }

? ? },

? ? mounted () {

? ? ? ? console.log('混合中的mounted')

? ? }

}

export const hunhe2={

? ?data(){

? ? return {

? ? ? ? x:100,

? ? ? ? y:200

? ? }

? ?}

}

在兩個有相同配置類的組件中

Student.vue

<template>

? <div >

? ? <h2 @click="showName">學生姓名:{{name}}</h2>

? ? <h2>學生性別:{{sex}}</h2>

? </div>

</template>

<script>

//引入一個局部混合

// import {hunhe,hunhe2} from '../mixin'

export default {

? ? name:'Student',

? ? data(){

? ? ? ? return{

? ? ? ? ? name:'李四',

? ? ? ? ?sex:""

? ? ? ? }

? ? },

? ? mounted(){

? ? ? console.log('Student組件中的mouted')

? ? },

? ? // mixins:[hunhe,hunhe2] //將其加入到組件中

}

</script>

<style>

</style>

在School.vue中

<template>

? <div >

? ? <h2 @click="showName">學校名稱:{{name}}</h2>

? ? <h2>學校地址:{{addr}}</h2>

? </div>

</template>

<script>

//引入一個局部混合

// import {hunhe,hunhe2} from '../mixin'

export default {

? ? name:'School',

? ? data(){

? ? ? ? return{

? ? ? ? ? name:'尚硅谷',

? ? ? ? ? addr:'北京'

? ? ? ? }

? ? },

? ? // mixins:[hunhe,hunhe2] ?將其加入到組件中

}

</script>

<style>

</style>

在能配置統一的混合main.js配置類中

import Vue from 'vue'

import App from './App.vue'

import { hunhe,hunhe2 } from './mixin' //引入全局混合

Vue.config.productionTip=false

Vue.mixin(hunhe) ?//配置全局混合

Vue.mixin(hunhe2) //配置全局混合

new Vue({

? ? el:'#app',

? ? render:h=>h(App)

})

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

自定義插件

我們可以自己定義一個插件,來起到一個插件就能實現Vue功能的增強,通過引入插件之后,整個項目就都會具備插件中定義的功能或使用其中的方法

pligins.js插件代碼

export default{

? ? install(Vue){

? ? ? ? //全局過濾器

? ? ? ? Vue.filter('mySlice',function(value){

? ? ? ? ? ? return value.slice(0,4)

? ? ? ? })

? ? ? ? //自定義指令

? ? ? ? Vue.directive('fbind',{

? ? ? ? ? ? //指令與元素成功綁定時

? ? ? ? ? ? ? ? bind(element,binding){

? ? ? ? ? ? ? ? ? ? ? ? console.log('bind')

? ? ? ? ? ? ? ? ? ? ? ? element.value=binding.value

? ? ? ? ? ? ? ? ? ? },

? ? ? ? ? ? ? ? ? ? //指令所在元素被插入頁面時

? ? ? ? ? ? ? ? ? ? inserted(element,binding){

? ? ? ? ? ? ? ? ? ? ? ? console.log('inserted')

? ? ? ? ? ? ? ? ? ? ? ? element.focus();

? ? ? ? ? ? ? ? ? ? },

? ? ? ? ? ? ? ? ? ? //指令所在的模板被重新解析時

? ? ? ? ? ? ? ? ? ? update (element,binding) {

? ? ? ? ? ? ? ? ? ? ? ? console.log('updated')

? ? ? ? ? ? ? ? ? ? ? ? element.value=binding.value

? ? ? ? ? ? ? ? ? ? }

? ? ? ? })

? ? ? ? //自定義混入

? ? ? ? Vue.mixin({

? ? ? ? ? ? data(){

? ? ? ? ? ? ? ? return {

? ? ? ? ? ? ? ? ? ? x:100,

? ? ? ? ? ? ? ? ? ? y:200

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ?}

? ? ? ? })

? ? ? ? //vue原型上添加一個方法(vmvc就能使用了)

? ? ? ? Vue.prototype.hello = ()=>{alert('你好')}

? ? }

}

在main.js中引入插件

import Vue from 'vue'

import App from './App.vue'

Vue.config.productionTip=false

//引入插件

import pligins from './pligins'

//應用插件

?Vue.use(pligins)

new Vue({

? ? el:'#app',

? ? render:h=>h(App)

})

在Student.vue中使用插件

<template>

? <div >

? ? <h2 >學生姓名:{{name}}</h2>

? ? <h2>學生性別:{{sex}}</h2>

? ? <input type="text" v-fbind:value="name">

? ? <button @click="test">點我出發一個hello方法</button>

? </div>

</template>

<script>

export default {

? ? name:'Student',

? ? data(){

? ? ? ? return{

? ? ? ? ? name:'李四',

? ? ? ? ?sex:""

? ? ? ? }

? ? },

? ? methods:{

? ? ? test(){

? ? ? ? this.hello()

? ? ? }

? ? }

}

</script>

<style>

</style>

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Scoped樣式

我們在多個組件中配置樣式的時候,如果出現樣式同名的情況下,就會出現樣式相串的情況

就需要在不同的樣式下使用scoped來進行修飾

Student.vue中的代碼

<template>

? <div class="demo">

? ? <h2 ?class="title">學生姓名:{{name}}</h2>

? ? <h2>學生性別:{{sex}}</h2>

? </div>

</template>

<script>

export default {

? ? name:'Student',

? ? data(){

? ? ? ? return{

? ? ? ? ? name:'李四',

? ? ? ? ?sex:""

? ? ? ? }

? ? }

}

</script>

<style scoped>

.demo{

? background-color: orange;

}

</style>

School.vue代碼

<template>

? <div class="demo">

? ? <h2 class="title">學校名稱:{{name }}</h2>

? ? <h2>學校地址:{{addr}}</h2>

? </div>

</template>

<script>

export default {

? ? name:'School',

? ? data(){

? ? ? ? return{

? ? ? ? ? name:'尚硅谷atguigu',

? ? ? ? ? addr:'北京'

? ? ? ? }

? ? }

}

</script>

<style scoped>

.demo{

? background: skyblue;

}

</style>

如果我們有整個項目都要使用的樣式,將其配置到App.vue中即可

<template>

? <div>

<student ></student>

<hr>

<school></school>

<hr>

? </div>

</template>

<script>

import Student from './components/Student.vue'

import School from './components/School.vue'

export default {

? ? name:'App',

? ? components:{Student, School},

? ?

}

</script>

<style > ? ?

/* 配置全局樣式 */

? .title{

? ? color:red

? }

</style>

效果為
?

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

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

相關文章

MacBook上API調??具推薦

在當今的軟件開發中&#xff0c;API調用工具已經成為了開發者不可或缺的助手。無論是前端、后端還是全棧開發&#xff0c;API的調試、測試和管理都是日常工作中的重要環節。想象一下&#xff0c;如果沒有這些工具&#xff0c;開發者可能需要手動編寫復雜的CURL命令&#xff0c;…

pgsql行列轉換

目錄 一、造測試數據 二、行轉列 1.函數定義 2.語法 3.示例 三、列轉行 1.函數定義 2.語法 3.示例 一、造測試數據 create table test ( id int, json1 varchar, json2 varchar );insert into test values(1,111,{111}); insert into test values(2,111,222,{111,22…

NVIDIA(英偉達) GPU 芯片架構發展史

GPU 性能的關鍵參數 CUDA 核心數量&#xff08;個&#xff09;&#xff1a;決定了 GPU 并行處理能力&#xff0c;在 AI 等并行計算類業務下&#xff0c;CUDA 核心越多性能越好。 顯存容量&#xff08;GB&#xff09;&#xff1a;決定了 GPU 加載數據量的大小&#xff0c;在 AI…

《Python實戰進階》No 10:基于Flask案例的Web 安全性:防止 SQL 注入、XSS 和 CSRF 攻擊

第10集&#xff1a;Web 安全性&#xff1a;防止 SQL 注入、XSS 和 CSRF 攻擊 在現代 Web 開發中&#xff0c;安全性是至關重要的。無論是用戶數據的保護&#xff0c;還是系統穩定性的維護&#xff0c;開發者都需要對常見的 Web 安全威脅有深刻的理解&#xff0c;并采取有效的防…

【大數據分析 | 深度學習】在Hadoop上實現分布式深度學習

【作者主頁】Francek Chen 【專欄介紹】 ? ? ?智能大數據分析 ? ? ? 智能大數據分析是指利用先進的技術和算法對大規模數據進行深入分析和挖掘&#xff0c;以提取有價值的信息和洞察。它結合了大數據技術、人工智能&#xff08;AI&#xff09;、機器學習&#xff08;ML&a…

盛鉑科技SCP4000射頻微波功率計與SPP5000系列脈沖峰值 USB功率計 區別

在射頻&#xff08;RF&#xff09;和微波測試領域&#xff0c;快速、精準的功率測量是確保通信系統、雷達、衛星設備等高性能運行的核心需求。無論是連續波&#xff08;CW&#xff09;信號的穩定性測試&#xff0c;還是脈沖信號的瞬態功率分析&#xff0c;工程師都需要輕量化、…

自學微信小程序的第十三天

DAY13 1、使用map組件在頁面中創建地圖后&#xff0c;若想在JS文件中對地圖進行控制&#xff0c;需要通過地圖API來完成。先通過wx.createMapContext()方法創建MapContext&#xff08;Map上下文&#xff09;實例&#xff0c;然后通過該實例的相關方法來操作map組件。 const m…

深入解析 C# 中的泛型:概念、用法與最佳實踐

C# 中的 泛型&#xff08;Generics&#xff09; 是一種強大的編程特性&#xff0c;允許開發者在不預先指定具體數據類型的情況下編寫代碼。通過泛型&#xff0c;C# 能夠讓我們編寫更靈活、可重用、類型安全且性能優良的代碼。泛型廣泛應用于類、方法、接口、委托、集合等多個方…

H5DS編輯器是如何讓企業快速構建動態頁面

H5DS編輯器核心亮點&#xff1a; 1.拖拽式操作&#xff0c;小白友好&#xff1a;無需設計與代碼基礎&#xff01;通過簡單拖拽元素、調整文字和動畫&#xff0c;即可生成交互式H5頁面。內置海量模板和素材庫&#xff0c;支持自定義設計風格&#xff0c;輕松適配企業品牌需求。…

Unity ECS與MonoBehaviour混合架構開發實踐指南

一、混合架構設計背景 1. 技術定位差異 ECS&#xff08;Entity Component System&#xff09;&#xff1a;面向數據設計&#xff08;DOD&#xff09;&#xff0c;適用于大規模實體計算&#xff08;如10萬單位戰斗&#xff09; MonoBehaviour&#xff1a;面向對象設計&#xf…

[項目]基于FreeRTOS的STM32四軸飛行器: 三.電源控制

基于FreeRTOS的STM32四軸飛行器: 三.電源控制 一.IP5305T芯片手冊二.電源控制任務 一.IP5305T芯片手冊 注意該芯片低功耗特性&#xff0c;為防止進入待機&#xff0c;每隔一段時間發送一個電平。 官方提供的芯片外圍電路設計圖&#xff1a; 電氣特性&#xff1a; 當負載電流持…

java環境部署

java環境部署 一、準備工作 jrejdkeclipse jdk下載&#xff1a;21和1.8-----官網&#xff1a;Oracle&#xff1a;Java 下載 |神諭 該處選擇要依據自身的系統類型選擇下載 idea的下載安裝&#xff1a;IntelliJ IDEA | Other Versions 二、安裝 三、環境配置 四、使用 五、i…

微服務通信:用gRPC + Protobuf 構建高效API

引言 在微服務架構中&#xff0c;服務之間的通信是系統設計的核心問題之一。傳統的RESTful API雖然簡單易用&#xff0c;但在性能、類型安全和代碼生成等方面存在一定的局限性。gRPC作為一種高性能、跨語言的RPC框架&#xff0c;結合Protobuf&#xff08;Protocol Buffers&…

使用 Docker 和 Nginx 高效部署 Web 服務(適用于慈云數據云服務器)

前言 在現代 Web 服務部署中&#xff0c;Docker 和 Nginx 的結合是一種高效、靈活且可擴展的解決方案。 Docker 使應用程序及其依賴項封裝到一個獨立的容器中&#xff0c;確保一致性&#xff0c;并簡化部署過程。Nginx 作為高性能 Web 服務器和反向代理&#xff0c;能夠高效處…

C 語言數據結構(一):時/空間復制度

目錄 一、前言 1. 什么是數據結構 2. 什么是算法 二、時 / 空間復雜度 1. 算法效率 2. 時間復雜度 2.1 時間復雜度的概念 2.2 大 O 的漸進表示法 2.3 常見的計算時間復雜度的例子 2.3.1 實例 1 2.3.2 實例 2 2.3.3 實例 3 2.3.4 實例 4 2.3.5 實例 5 &#xff1a…

一文讀懂Redis分布式鎖

引言 在當今互聯網時代&#xff0c;分布式系統已成為大規模應用的主流架構。然而&#xff0c;這種架構中多個服務同時對共享資源的操作可能導致并發問題&#xff0c;如數據不一致和資源爭用。有效管理這些并發訪問&#xff0c;確保共享資源的安全性顯得尤為重要。 分布式鎖作…

23種設計模式一覽【設計模式】

文章目錄 前言一、創建型模式&#xff08;Creational Patterns&#xff09;二、結構型模式&#xff08;Structural Patterns&#xff09;三、行為型模式&#xff08;Behavioral Patterns&#xff09; 前言 設計模式是軟件工程中用來解決特定問題的一組解決方案。它們是經過驗證…

極狐GitLab 17.9 正式發布,40+ DevSecOps 重點功能解讀【三】

GitLab 是一個全球知名的一體化 DevOps 平臺&#xff0c;很多人都通過私有化部署 GitLab 來進行源代碼托管。極狐GitLab 是 GitLab 在中國的發行版&#xff0c;專門為中國程序員服務。可以一鍵式部署極狐GitLab。 學習極狐GitLab 的相關資料&#xff1a; 極狐GitLab 官網極狐…

elk的相關的基礎

以下是關于ELK&#xff08;Elasticsearch, Logstash, Kibana&#xff09;的200個基礎問題及其答案&#xff0c;涵蓋了ELK的核心概念、組件、配置、使用場景、優化等方面。 ?Elasticsearch 基礎 ?**什么是Elasticsearch&#xff1f;**? 答&#xff1a;Elasticsearch是一個分…

Beyond Compare for mac v5.0.6.30713 文件對比利器 支持M、Intel芯片

Mac毒搜集到的Beyond Compare是一套超級的文件及文件夾(目錄)的比較工具&#xff0c;不僅可以快速比較出兩個目錄的不同&#xff0c;還可以比較每個文件的內容&#xff0c;而且可以任意顯示比較結果。 應用介紹 程序內建了文件瀏覽器&#xff0c;方便您對文件、文件夾、壓縮包…