首页 > 其他分享 >动态组件

动态组件

时间:2023-09-20 12:45:32浏览次数:27  
标签:npm vue cli 创建 var 组件 动态

动态组件

component标签的is属性等于组件名字,这里就会显示这个组件

组件切换方法一:

<body>
<div id="app">
  <button @click="who='home'">首页</button>
  <button @click="who='shopping'">购物界面</button>
  <button @click="who='order'">订单界面</button>
  <br>
  <home v-if="who=='home'"></home>
  <shopping v-else-if="who=='shopping'"></shopping>
  <order v-else></order>

</div>
</body>
<script>
  var home = ({
    template:`  <div><h1>首页</h1></div>`,

  })
  var shopping = ({
    template:`  <div><h1>购物界面</h1></div>`,

  })
  var order = ({
    template:`  <div><h1>订单界面</h1></div>`,
   
  })

  var vm = new Vue({
    el:'#app',
    data:{
      who:'home'
    },
    methods:{},
    components:{
      home,shopping,order
    }
  })
</script>
</html>

点击首页显示

点击订单页面显示

组件切换方法二:

 keep-alive

 

<body>
<div id="app">
    <button @click="who='home'">首页</button>
    <button @click="who='shopping'">购物界面</button>
    <button @click="who='order'">订单界面</button>
    <br>
    <keep-alive>
        <component :is="who"></component>
    </keep-alive>


</div>
</body>
<script>
    var home = ({
        template: `  <div><h1>首页</h1></div>`,
    })
    var shopping = ({
        template: `
          <div><h1>购物界面</h1>
          <p>搜索商品 <input type="text">
            <button @click="handleSearch">搜索</button>
          </p>
          </div>`,
        methods: {
            handleSearch() {
                alert('搜索成功')
            }
        }
    })
    var order = ({
        template: `  <div><h1>订单界面</h1></div>`,

    })

    var vm = new Vue({
        el: '#app',
        data: {
            who: 'home'
        },
        methods: {},
        components: {
            home, shopping, order
        }
    })

在这里输入后,转到其他组件页面再返回时,这里搜索的文字不会改变

 插槽

一般情况下,编写完一个组件之后,组件的内容都是写死的,需要加数据,只能去组件中修改,扩展性极差,插槽就只需要在组件中添加<slot></slot>,就可以在body的组件标签中添加内容。

使用步骤:

  1、在组件的html的任意位置,放一个标签<slot></slot>

  2、后期在父组件使用该组件时:

    <组件名>放内容</组件名>

  3、放的内容,就会被渲染到slot中

 具名插槽

使用步骤:

1、组件中可以留多个插槽,命名。

<div>
  <h1>我是一个组件</h1>
  <slot name="middle"></slot>
  <h2>我是组件内部的h2</h2>
  <slot name="footer"></slot>
</div>

2、在父组件中使用时,指定某个标签渲染到某个插槽上

<lqz>
  <div slot="footer">
  我是div
  </div>

  <img src="https://scpic.chinaz.net/files/default/imgs/2023-05-12/23659b1edfc0a984.jpg" alt="" slot="middle">

  </lqz>

 

vue-cli创建项目

单页面应用:spa

  以后vue页面项目只要一个 xx.hml页面

  定义很多组件,不可能都写在xx.html中

https://v2.cn.vuejs.org/v2/guide/single-file-components.html

 

一个组件中有的东西:

1、html内容:以后html都放在template标签中

2、css内容:以后都放在style标签中

3、js内容:以后都放在script标签中

 

使用vue-cli 创建vue项目,才能使用 单文件组件

  vue脚手架:创建出来vue的项目,里面带了很多基础代码

  类似于django-admin命令,可以创建出django项目

 

vue-cli脚手架

  vue2中使用创建vue项目的软件必须用vue-cli

  vue3中可以使用vue-cli,也可以使用vite创建,vite号称新一代的构建工具

 

使用vue-cli创建vue项目的步骤:

1、vue-cli是一个软件,运行nodejs环境中,安装nodejs

  下载地址:

      https://nodejs.p2hp.com/download/  

      类似于python解释器,一路下一步安装---》选择安装位置---》添加到环境变量(以后再任意位置执行node或npm都会找到)   

          查看node版本:
        node -v

   安装完,释放两个可执行文件
      node 等同于 python
      npm 等同于 pip

 2、npm 安装第三方模块,速度很慢,淘宝做了个cnpm,以后咱们可以使用cnpm替代npm,会去淘宝镜像站下载,速度快

    npm install -g cnpm --registry=https://registry.npm.taobao.org

    以后 使用npm安装模块的命令全都换成 cnpm

3 在node环境中装vue-cli  (类似于装django)

    cnpm install -g @vue/cli

当安装时出现以下问题:

解决办法: 

https://blog.csdn.net/yyp0304Devin/article/details/105620677 

 4 装完脚手架,会多出一个命令   vue 用来创建vue项目   等同于djagno-admin命令

5 使用脚手架,创建vue项目
      vue create 项目名
      # vue create myfirstvue

 

vue-cli命令行创建项目

1、vue create 项目名

这里会先显示是否选择淘宝源

 2、先按上下键选择,选择最后一个自定义:

3、 (按空格选择)选择Babel,Router,vuex:

Babel:语法转换

Router:页面跳转 路由效果

vuex:状态管理器,存储数据的

 4、选择版本:

先选择vue 2 的版本

 5、选package-json

 6、之前的设置,保存与不保存都可以

 6、完成:

 使用vue-cli-ui创建

命令框输入vue ui  启动出一个服务,直接在浏览器中点点击就可以创建

大概流程和上面差不多

 

vue项目目录结构

1、 可以在cmd命令框中输入以上两个指令即可在cmd中启动

2、在pycharm中使用,直接找到创建时放入的路径就可打开

运行vue项目

方式一:命令行中(注意执行路径)

npm run serve

 

方式二:使用pycharm运行

 

标签:npm,vue,cli,创建,var,组件,动态
From: https://www.cnblogs.com/YeeQX/p/17717035.html

相关文章

  • JS实现table动态生成过程中,移动行checkbox值丢失问题的解决
     最近在做项目过程中遇到这样一个疑问:(查看实例代码TEST1)DHTML中table对象的moveRow方法实现对table中表格行移动到新位置。例子TEST1中行2包含文本框、复选框、下拉框,当分别键入值后对行2执行上移操作后,我们发现,文本框与下拉框的值不会丢失,但复选框值会丢失。而如果在行2中键......
  • Linux 动态库符号冲突
    问题起源在Linux下编译动态库的时候,所有的符号默认都是导出的,也就是动态库中的函数名,类名等,在外部都是可见的。当程序引用多个动态库时,由于各个动态库可能属于不同的团队来开发,不同团队使用相同的第三方库的可能性也是有的(例如openssl,libcurl,cjson等),不同的团队使用的第三方......
  • vue项目-封装树形控件公用组件
    vue项目中,如h5端,第三方的树形选择器无法满足项目开发时,原生封装tree控件,通过判断是否存在子节点,循环递归组件完成树形封装,通过vue指令实现跨级传递数据或方法封装树形组件如下:1<template>2<divclass="tree-select-page">3<divclass="tree-item"v-for="item......
  • [代码随想录]Day49-动态规划part17
    题目:647.回文子串思路:整体上是两种,就是s[i]与s[j]相等,s[i]与s[j]不相等这两种。当s[i]与s[j]不相等,那没啥好说的了,dp[i][j]一定是false。当s[i]与s[j]相等时,这就复杂一些了,有如下三种情况情况一:下标i与j相同,同一个字符例如a,当然是回文子串情况二:下标i与j相差为1,例如aa......
  • vue-动态组件、插槽
    动态组件方法一:笨方法-切换组件:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><scriptsrc="js/vue.js"></script></head><body>......
  • 类动态加载
    类动态加载类加载与反序列化反序列是利用的readObject()​方法重写,而类加载是为什么?类加载Java程序在运行前需要先编译成class文件​,Java类初始化的时候会调用java.lang.ClassLoader​加载类字节码,ClassLoader​会调用JVM的native方法(defineClass0/1/2​)来定义一......
  • vue_vueRouter同组件跳转失败
    目录场景再现资料查询解决场景再现现有一个Article页面,通过/article/:id来匹配不同的文章页面,当我需要实现跳转到上一篇或下一篇时,即从/article/:id跳转另一个/article/:id时,发现浏览器中只有地址变化了,但是页面的很多组件,包括文章内容都没有刷新,资料查询这......
  • 天合光能分布式组件如何?210至尊N型组件创领光伏7.0时代
    在能源转型、建设新型能源体系的当下,“光伏+”成为“十四五”规划的重点,正在加速赋能千行百业、走进千家万户,即将迎来蓬勃发展的新时代。在此背景下,8月30日,能源发展网和中国改革报《能源发展》周刊联合国家级能源智库,在北京举办第六届光伏+创新发展论坛,邀请专家、学者、企业家......
  • Vue之与后端交互的三种方式、显示小电影案例、计算属性、监听属性、Vue生命周期、组件
    与后端交互的三种方式后端写了一堆接口前段会了前后端要打通===》从前端发送ajax===》核心:用js发送http请求,接收返回原生js,可以开启可以开启ajax,但是原生js开启,比较麻烦,需要做浏览器兼容,有坑(基本不写)jq,写了个兼容所有浏览器的$.ajax(),不仅仅有ajax,还封装了很多d......
  • 天合光能210组件累计出货量超75GW,光储融合引领智慧能源升级
    8月29日晚间,天合光能披露2023年半年度报告(下简称“报告”),今年上半年,天合光能组件出货27GW;截至同期,天合光能组件累计出货超150GW,其中210组件累计出货量超75GW。210+N型技术、产品领先布局、产能全面上扬。此外,支架业务出货3.3GW,分布式系统业务出货4.5GW,储能出货同比增加超过200%......