首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

原生JS实现组件式开发

自定义标签 自定义标签通过扩展一个HTMLElement或HTMLElement的子类来定义一个新的html标签,是通过原生js实现组件化。...,但和复杂的组件相比是完全不够用的,它应该配合另一个特性Shadow DOM一起使用 Shadow DOM能封闭内部,让js和css都无法选择到内部元素(只是无法选择,还是会显示到页面上),里面可以定义...defineCustomElement来创建一个自定义标签的构造函数,它接收defineComponent相同的参数,返回的类需要使用window.customElements.define来注册,因为是使用原生的方法注册...,这样的组件不需要挂载为全局组件就能全局使用,通过vue模板来创建的自定义标签能支持传递对象等复杂数据 在vue中使用自定义标签得先配置loader,否则会有警告提示标签不是vue组件 // vite...使用单文件时会打包更多的代码进去,如果只是使用简单的功能组件更推荐使用原生写法 使用场景 如果需要扩展从外部获取的html并添加比较复杂的功能,自定义标签就是个很好的选择,比如我的博客的文章通过markdown

3.6K52
您找到你想要的搜索结果了吗?
是的
没有找到

(来啦,老弟)从零实现一个日历组件

一、日历组件简介 日历组件主要是由一个文本输入框组成,点击文本输入框后会在文本框下方显示日历面板,日历面板包含三部分:头部区(主要显示当面日历面板对应的年月以及四个年月上下切换按钮)、内容区(显示星期...二、日历组件关键点 ① 日历组件的关键点在于日历面板的显示,观察日历可以发现,每个日历面板上都会显示42天,但是一个月有28~31天,所以这42天中肯定有些是非本月时间,这些非本月时间就需要置灰显示,每行有...三、从零实现一个日历组件 ①新建一个项目名为calendar的文件夹 ②进入calendar项目中,执行npm init --yes进行项目初始化生成对应的package.json文件 ③这里使用快速原型开发模式...,接下来我们开始编写日历中的内容了,日历组件包括一个文本输入框和一个日历面板,日历面板中的内容我们后面实现,这一步先写文本框样式及日历面板非内容部分,如: // 添加iconfont字体样式,主要用于文本框中的日历图标...,接下来就是实现点击文本框显示日历面板,点击日历面板外部则关闭日历面板,要实现该功能需要通过自定义指令,因为指令就是对DOM操作进行封装,其主要是让document监听click事件,如果点击的元素在绑定指令的

2.2K50

前端-微信小程序开发(5):日历组件实现

yexiaochai/p/9412951.html 接上文: 微信小程序开发(4):打造自己的UI库 github地址:https://github.com/yexiaochai/wxdemo 我们这里继续实现我们的日历组件...,这个日历组件稍微有点特殊,算是相对复杂的组件了,然后一般的日历组件又会有很多的变化,所以我们这里实现最基本的标签即可: ?...,在代码过程中有以下几点比较痛苦: ① WXML与js间应该只有数据传递,根本不能传递方法,应该是两个webview的通信,而日历组件这里在WXML层由不得不写一点逻辑 ② 本来在WXML中写逻辑已经不太对了...这个日历组件应该是在小程序中写的最复杂的组件了,尤其是很多逻辑判断的代码都放在了WXML里面,根据之前的了解,小程序渲染在一个webview中,js逻辑在一个webview中,他这样做的目的可能是想让性能更好...提供的是一个标签,而且涉及的文件很多,加上继承关系很不好管理 ② 因为日历组件事实上是一个标签,所以我们会有一个引入的基础WXML,一个使用的js,完全独立一个文件更加复杂 ③ 本来小程序或者复杂的页面都应该组件化开发

1K20
领券