当前位置: 首页 > news >正文

怎么把个人做的网站发布到网上网页开发制作

怎么把个人做的网站发布到网上,网页开发制作,购物网站设计人员,软件管理软件哪个好目录 介绍 参数 使用案例 1.创建虚拟 DOM 元素 2. 组件的动态渲染 3. 创建功能组件 4.渲染动态属性 5. 使用插槽 6. 创建动态标签 介绍 h() 函数用于辅助创建虚拟 DOM 节点,它是 hypescript 的简称——能生成 HTML (超文本标记语言) 的 JavaScript&#x…

目录

介绍

参数

使用案例

1.创建虚拟 DOM 元素

2. 组件的动态渲染

3. 创建功能组件

4.渲染动态属性

5. 使用插槽

6. 创建动态标签


介绍

h() 函数用于辅助创建虚拟 DOM 节点,它是 hypescript 的简称——能生成 HTML (超文本标记语言) 的 JavaScript,它有另外一个名称,叫做 createVnode()。在 Vue 项目中使用 HTML 标签构建页面时,最终结果会转化为 vnode,而该h()函数直接创建 vnode,可以更灵活地构建组件渲染逻辑,并提高性能。

参数

  • type:要创建的节点类型,可以是 HTML 标签、组件或函数(功能组件)。
  • props(可选):包含节点属性的对象,作为 prop 传递。
  • children(可选):子节点可以是字符串、数组或其他 vnode 对象。

1. type:  HTML标签名:如果有type字符串,则会被解析为HTML标签。
                Component:如果type是对象或者函数,则会被解析为Vue组件。
                异步组件:type也可以是一个返回Promise的函数,该Promise将被解析到组件。
2. props:Props 是可选参数,用于指定节点的属性。
                传递 props 时,传递一个包含属性名称和值的对象作为 prop。
                您也可以将null其作为 props 的值传递。
3. children:子节点可以是字符串,数组或其他 vnode 对象。
                     如果子节点是一个数组,则数组中的每个元素都将被视为节点的子节点。
                     如果子节点是一个函数,它将在渲染期间被调用,并且其返回值将作为子节点。

注意事项:

  • 如果没有props,那么通常可以将children作为第二个参数传入;
  • 如果会产生歧义,可以将null作为第二个参数传入,将children作为第三个参数传

官方完整类型参数

// 完整参数签名
function h(type: string | Component,props?: object | null,children?: Children | Slot | Slots
): VNode// 省略 props
function h(type: string | Component, children?: Children | Slot): VNodetype Children = string | number | boolean | VNode | null | Children[]type Slot = () => Childrentype Slots = { [name: string]: Slot }


使用案例

1.创建虚拟 DOM 元素

h函数可以在两个地方使用:

  • render函数选项中;
  • setup函数选项中(setup本身需要是一个函数类型,函数再返回h函数创建的VNode);
import { h } from 'vue'export default {render() {return h('div', { className: 'app' }, [h('h2', { className: 'title' }, 'I am title'),h('p', null, 'I am content')])}
}
// 或者
import { defineComponent } from "vue";
export default defineComponent({name: "Jsx",render() {return I am div;},
});

定义一个setup返回渲染函数的函数。

import { h } from "vue"export default {setup() {// setup is a function that returns another functionreturn () => h("div", { class: "app" }, [h("h2", { class: "title" }, "I am title"),h("p", null, "I am content")])}
}

2. 组件的动态渲染

import { ref } from 'vue';
import ComponentA from './ComponentA.vue';
import ComponentB from './ComponentB.vue';const nowComponent = ref('ComponentA');function changeComponent() {nowComponent.value = nowComponent.value === 'ComponentA' ? 'ComponentB' : 'ComponentA';
}const createComponent = () => {return h(nowComponent.value === 'ComponentA' ? ComponentA : ComponentB);
};

3. 创建功能组件

import { h, defineEmits } from 'vue';const FunctionalComponent = (props, context) => {return h('div', null, [h('p', null, props.text),h('button', { onClick: context.emit.bind(context, 'click') }, 'click')]);
};const emit = defineEmits(['click']);function handleClick() {console.log('handleClick');
}

如上所示,这是一个典型的函数式组件使用方法,包括如何在父子组件中与它们交互。FunctionalComponent 接收 props 和 context 参数,并使用 h() 函数构造页面。此外,它还通过触发父组件中的事件处理程序context.emit。

4.渲染动态属性

  import { ref } from 'vue';const visible = ref(true);function myVisibility() {visible.value = !visible.value;}const componentWithProps = () => {return h('div', { class: { visible: visible.value } }, 'div');};

如上所示,里面的函数根据 h()的值判断 vnode 是否带有class ,并在点击按钮时实现动态样式。当然,动态 class 只是一个例子,实际上里面的各种属性或者子组件都可以动态灵活

5. 使用插槽

import { h } from 'vue';const SlotComponent = (props, context) => {return h('div', null, [h('p', null, 'In slot:'),context.slots.default && context.slots.default()]);
};

如上所示,在引用SlotComponent组件时,其内部标签内的内容将作为默认插槽的内容传递给SlotComponent。此外,还可以使用context.slots.default()来获取并渲染默认插槽的内容。因此,当我们封装一个函数式组件,但内部有动态部分时,特别适合以这种方式使用插槽。

6. 创建动态标签

import { ref } from 'vue';const tag = ref('div');function changeTag() {tag.value = tag.value === 'div' ? 'section' : 'div';
}const createElement = () => {return h(tag.value, null, 'dynamic');
};

这种方式避免了使用v-if产生大量冗余代码。

http://www.yayakq.cn/news/291315/

相关文章:

  • 沈阳h5网站建设网站建设小组的运营模式
  • 如何做全球网站排名小鸟云WordPress数据库连接
  • 技术先进的网站建设公网站架构设计师工作内容
  • 宁波网站建设地方济南建设主管部门网站
  • 做网站卖什么东西好页面设计说明
  • 山东网站建设哪家公司好电商网站设计与制作论文
  • 漂亮的网站建设中静态页网站建设项目费用报价
  • 织梦网站系统删除不了桃城网站建设价格
  • 视频网站设计软件下载网站源码
  • 太原建站公司模板宁波公司建设网站
  • 程序员个人网站开发云南楚雄特产
  • 搜索排名优化网站排名优化郑州网站建设网页设计
  • 网站建设推广代运营wordpress 阿里云 环境
  • 做dj网站需要北京最大的软件开发公司
  • 高校门户网站建设加国无忧51工作网
  • 网站开发技术期末考试题墙内千兆网站怎么做
  • 厦门市建设工程安全质量协会网站短视频剪辑培训班多少钱
  • 淘宝联盟填网站备案广州市建设工程信息管理平台
  • 新建定制网站费用网站发帖功能怎么做
  • 商城网站开发与设计网站平台建立
  • 外贸网站推广计划书网站有什么优势
  • 怎么做黑彩票网站网站建设哪个公司好知乎
  • 大腕 网站建设去除wordpress 广告
  • 做电脑网站用什么软件好用大连精美网站制作
  • 有什么网站可以做设计兼职的网站建设与管理期末试卷
  • 阳江企业网站免费素材网站素材库
  • 自己做自媒体在哪个网站比较好彩票网站开发周期
  • 泉州效率网络网站建设启动网站建设的请示
  • 紫金网站建设公司彩票网站注册
  • 免费的推广网站有哪些建设工程招标公告在哪个网站