前端基础之脚手架

脚手架结构

目录结构

这里的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.mzph.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;方便您对文件、文件夹、压缩包…