效果图和组件结构图 效果图 组件结构 eltable组件二次封装过程 table主文件:index。vuetemplateeltable:datatableDatastylewidth:100selectionchangehandleSelectionChangesortchangesortChageCallBackeltablecolumnvifcheckboxtypeselectionwidth55eltablecolumneltablecolumnvifindextypeindexwidth50eltablecolumntemplatevforitemincolumneltablecolumn:sortbyitem。sortby:sortableitem。sort:alignitem。align:propitem。prop:labelitem。label:widthitem。widthtemplateslotscopescope!利用type属性判断该列的类型!插槽主要是实现操作列存放按钮slotvifitem。typeslot:nameitem。slotname:datascope。row!通过动态组件渲染对应类型列如文件列表处:functionimagesswitchtext,text为默认项componentvelse:datascope。row:propitem。prop:configitem:is!item。type?comtext:com{item。type}componenttemplateeltablecolumntemplateeltabletemplatestylescopedlangscssstyle 各个类型组件:srccomponentstablecontroltextindex。vue!Descripttion:version:v。1Author:吴泽豪Date:2023020117:26:47LastEditors:吴泽豪LastEditTime:2023020121:57:20template{{data〔prop〕}}templatestylescopedlangscssstyle 入口引用文件:srcviewscontentindex。vue!Descripttion:version:v。1Author:吴泽豪Date:2023020117:26:47LastEditors:吴泽豪LastEditTime:2023020413:43:30templateelbuttontypeprimaryclicksendCallbackvpermisslist:send提交elbuttonelbuttontypedangerclickdeleteCallbackvpermisslist:deleteAll全部删除elbutton!主要templatevslot:opertionsslotelbuttonclickjum(slot。data。id)typeprimary编辑elbuttonelbuttonclickdeleteId(slot。data。id)typedanger删除elbuttontemplateatable!主要templatestylescopedlangscssstyle 将组件包上传至npm 1、注册账号:链接:https:www。npmjs。com(账号、邮箱(密码找回)、密码) 2、包准备 在项目里创建一个文件夹存放所有的封装组件,并将封装的组件整个文件夹(table)放置在package文件夹内并创建一个组件注册入口文件index。js,如: package组件注册入口文件packageindex。jsDescripttion:version:v。1Author:吴泽豪Date:2023020310:22:24LastEditors:吴泽豪LastEditTime:2023020413:13:01所有组件注册入口,批量注册importaTablefrom。。packagetableindex。vueconstcoms〔aTable〕constinstallfunction(Vue){coms。forEach(com{Vue。component(com。name,com)})}exportdefaultinstall 3、打包 在总项目package。json创建打包命令package scripts:{serve:vuecliserviceserve,build:vuecliservicebuild,lint:vuecliservicelint,package:vuecliservicebuildtargetlib。srcpackageindex。jsnamettabledestatable},targetlib指定打包目录name打包后的文件名字dest打包后的文件夹名称 运行npmrunpackage生成包,如图: 待上传至npm 4、上传准备条件,创建atablepackage。json,对应写名称(唯一){name:wzhtable,version:1。0。1,description:,main:ttable。common。js,scripts:{test:echoError:notestspecifiedexit1},keywords:〔〕,author:,license:ISC} 5、上传(将npm包切换到官网源,不要用淘宝源) 登录时会提示打开浏览器登录,登陆后就会把AccessTokens加入npm 6、之后执行npmpublish 7、下载使用命令npmiwzhtablelegacypeerdeps 8、引入使用Descripttion:version:v。1Author:吴泽豪Date:2023020117:16:34LastEditors:吴泽豪LastEditTime:2023020412:54:37importVuefromvueimportAppfrom。App。vueimportrouterfrom。routerimportstorefrom。storeimportElementUIfromelementui;importelementuilibthemechalkindex。css;importhasPermissfromutlispermission引入importwzhtablefromwzhtableVue。config。productionTipfalseVue。use(ElementUI)注册Vue。use(wzhtable)自定义的指令插件Vue。use(hasPermiss)newVue({router,store,render:hh(App)})。mount(app)