首页 > 其他分享 >组件化与模块化

组件化与模块化

时间:2022-12-02 22:48:04浏览次数:34  
标签:flex vue 模块化 1px components 组件 import

单文件组件

创建项目

在cmd输入

npm init vite-app vue3_demo

vue3_demo是文件夹名(项目名)

在vscode中打开,开发项目写代码都在src目录下面写

再进入项目中下载依赖

npm intall



.vue就是单文件组件

运行项目

npm run dev


组件化开发

组件化开发就是用一些组件来完成各种板块

比如用不同组件来完成头部、菜单、中间的内容
用Vue开发就是写组件,把各种组件拼装在一起就完成程序了

有三个组件,header、nav、content,但是vue中组件名不能跟html标签重名,所以创建组件时名字加个My,如MyHeader

<template>
  <div class="header">
    <MyHeader></MyHeader>
  </div>
  <div class="container">
    <div class="nav">
      <MyNav></MyNav>
    </div>
    <div class="content">
      <MyContent></MyContent>
    </div>
  </div>
</template>

<script>
import MyHeader from './components/MyHeader.vue';//引入
import MyNav from './components/MyNav.vue';
import MyContent from './components/MyContent.vue';

export default {
  name: 'App',
  components: {
    MyHeader,
    MyNav,
    MyContent//注册组件
  }
}
</script>

<style scoped>/*scoped只作用在本组件*/
.header{
  height: 80px;
  border: 1px solid red;
}
.container{
  display: flex;
}

.container .nav{
  flex: 1;
  height: 600px;
  border: 1px solid blue;
}
.container .content{
  flex: 5;
  height: 600px;
  border: 1px solid green;
}
</style>

将index.css的内容注释掉,屏蔽默认的样式
这种方式或许会有些传值、设置路由等获取数据的问题,但把功能拆分开,只要哪里有问题在哪里解决就行了

模块化开发

我们可以单独定一个功能模块,模块与组件不同,它跟页面是没有关系的,用到模块时导入即可
在src下创建utils文件夹,再创建模块文件sum.js

Mycontent.vue

<template>
    <h1>Hello World</h1>
    <h2>这个是应用的主体部分</h2>
    <h1>{{number}}</h1><!--也可以写成sum()-->
</template>
<script>
import sum from "../utils/sum.js"//导入sum.js模块
export default {//自己写个模块
    computed:{
        number(){
            return sum();
        }
    }
}
</script>

区别

模块化和组件化开发都是将功能拆分开
区别在于组件化拆分是在页面层面上的拆分,比如一个页面拆分成3个组件。而模块就是拆功能

动态组件/font>

一个手机页面有这四个组件,banner里有广告,但如果是vip就不显示banner

要达到这个效果就不能写死页面,要用到动态组件

<template>
  <!-- <component is="MyTop"></component>
  <component is="MyBanner"></component>
  <component is="MyContainer"></component>
  <component is="MyFooter"></component> -->
  <component
    v-for="item in list"
    :is="item">
  </component><!--动态组件-->
</template>

<script>
import MyTop from './components/MyTop.vue';
import MyBanner from './components/MyBanner.vue';
import MyContainer from './components/MyContainer.vue';
import MyFooter from './components/MyFooter.vue';

export default {
  name: 'App',
  data(){
    return {
      title:"hello component",
      counter:0,
      list:[
        "MyTop",
        "MyContainer",
        "MyBanner",
        "MyFooter"
      ]
    }
  },
  components: {
    MyTop,
    MyContainer,
    MyBanner,
    MyFooter
  }
}
</script>

<style scoped>/*scoped只作用在本组件*/
.header{
  height: 80px;
  border: 1px solid red;
}
.container{
  display: flex;
}

.container .nav{
  flex: 1;
  height: 600px;
  border: 1px solid blue;
}
.container .content{
  flex: 5;
  height: 600px;
  border: 1px solid green;
}
</style>



根据用户身份的不同,修改list里的数据就能实现动态需求

标签:flex,vue,模块化,1px,components,组件,import
From: https://www.cnblogs.com/ben10044/p/16945848.html

相关文章

  • SignalR循序渐进(三)简易的集群通讯组件
    上一篇演示了泛型Hub的实现,微软于6月17日更新了SignalR2.1.0,然后自带了泛型Hub,于是就不需要自己去实现了…(微软你为啥不早一个月自带啊…)。不过没关系,SignalR出彩之处不在......
  • 小程序分包放置echarts组件
    app.json"subPackages":[{"root":"commonPackage","pages":[]}],pages同级目录加commonPackage分包中放入echarts组件信息使用xx.js......
  • ReactHook父组件调用子组件的方法,且子组件用了connect
    ReactHook父组件调用子组件的方法,且子组件用了connect子组件1、引入useImperativeHandle,forwardRef2、子组件由function改成let,接收prop和ref,并从props中结构出refI......
  • VUE组件之间的参数传递与方法调用
    父组件向子组件父组件向子组件传参:父组件中的子组件标签中增加:param="param"子组件中增加props接受参数(注意props需要与data同级)props:{param:{typ......
  • Flutter不常用组件(二)
    ColoredBox一般我们想要一个带有背景颜色的组件我们会使用哪个组件?当然第一个想到的就是Container。其实在Flutter中还要一个专门用来设置颜色的组件ColoredBox。该组......
  • vue3组件通信,网上一大堆,这里直说常用的两个,props,emit
    props(父传子,多用于子组件的数据渲染)【父】<div><comp-son:name="name":age="age"/>//向子组件传值</div>setup(){conststate=reactive({......
  • 模块化开发RequireJS之shim配置
    模块化开发RequireJS之shim配置weixin_33971130于 2017-12-0711:31:00 发布185 收藏 1文章标签: javascript ViewUI 一、shimrequirejs使用AMD......
  • vue局部刷新 (组件重载)
     组件重载的运用是当组件的数据产生了变化之时,需要通过重载来实现组件页面的刷新,而不是重新刷新URL进行重新请求,也可以理解为是局部刷新 步骤:在父级页面通过......
  • Vue2适用的视频组件
    Vue2适用的视频组件官方文档路径西瓜视频官方文档:http://v2.h5player.bytedance.com/gettingStarted/随笔制作参考:https://juejin.cn/post/7023547598724136990#hea......
  • 组件
    <!DOCTYPEhtml><html> <head> <metacharset="utf-8"> <scriptsrc="js/vue.js"type="text/javascript"charset="utf-8"></script> <title></title> </head> ......