1.monorepo多包管理架构实践
2.这属于什么类型的码测文件?
3.新款vue-cli之create-vue源码阅读总结
4.java开发中常用的工具有哪些?
5.怎样快速找出文本文件里面内容的不同之处?
monorepo多包管理架构实践
平时开发项目时,我们会积累和沉淀许多通用的码测组件、方法等,码测它们通常适用于多个项目。码测但由于不同的码测项目具有不同的代码库,这些通用组件或方法不能简单地复制粘贴,码测蜻蜓飞舞源码这也不利于统一维护和更新。码测
如果我们要在一个代码库中维护一套通用的码测组件、方法、码测模板等可能服务于其他项目的码测 package,这些 package 可以独立发布且互不干扰,码测我们应该如何操作呢?
最初,码测我并不知道该如何进行调研,码测于是码测翻看了一些优秀库(如 vant、element-plus)的码测底层架构,大致了解了一些情况。结合自己的理解和认知,我使用 pnpm + vite 搭建了一个可供参考使用的 monorepo 多包管理框架。
为何选择 pnpm:
pnpm 相较于 npm、yarn 可以有效节省磁盘空间并提升安装速度。
pnpm 内置了对单个代码仓库包含多个软件包的支持,是 monorepo 架构模式的不二之选。
原理概括:pnpm 将所有的依赖包的层次提升到同一层次并安装存放在一个统一的地方(.pnpm),创建非扁平的 node_modules 目录,包之间的依赖关系可以很清楚地看到,一个包的依赖包以符号链接的形式存在,符号链接会指向当前包的原始位置,即所在的domdiff源码 .pnpm 的顶层位置。
为何选择 vite:
vite 随着 vue 3.x 而来,极大改善了开发体验,冷启动让人惊艳,再也不用担心项目越来越大启动速度越来越慢了。
平时开发项目基本是 vue 3.x + vite + typescript 的组合,vite 有一个库模式的构建方式,这意味着我们在开发项目和通用包时,都可以使用 vite,而无需引入第三方构建工具,使用 vite 无疑具有天然优势。
这里存在一个问题,现在普遍使用 typescript 来开发项目,开发的通用库在发布构建时也需要生成相应的 .d.ts 类型声明文件,vite 的库模式构建是不会自动生成 .d.ts 文件的,为了能自动生成类型声明文件我需要用到 tsc 和 vue-tsc,这里先简单提下,后面会用到。
基本骨架:
包的开发阶段可能需要在一个包中引用另一个包以方便调试,单包开发的话可能需要用 npm link 辅助调试,比较麻烦,多包模式下可以简单地使用 workspace。
组件库:
1. 我们需要在项目的根目录下执行 scripts 命令,以执行对应包中的 scripts 命令,需要用到 pnpm --dir 定位到需要执行命令的目录。
注意:为了更加细粒度地控制构建的过程,这里封装了构建的脚手架命令 vswift-cli build,简单直接点的keepapp源码话可以直接用 "build": "rm -r ./dist && vite build && vue-tsc"。
2. 组件库中有独立的 package.json、tsconfig.json、vite.config.ts 配置,package.json 中有几个关键配置:files、main、module、types、exports、publishConfig。
files - 发布的包所包含的内容,默认会带上 package.json
main - require 的入口文件,如 dist/index.umd.cjs
module - import 的入口文件,如 dist/index.js
types - 类型声明的入口文件,如 dist/types/index.d.ts
exports - 定义导出模块的路径别名
publishConfig - 发布配置
3. tsconfig.json 主要是配置 typescript 的作用范围 include,以及类型声明文件的编译输出。因为是组件库,所以会有 .vue 文件,vue-tsc 可以生成对应的 .vue.d.ts 类型声明文件。
4. vite.config.ts 是库模式 build 的配置,基本配置如下:
5. 最终输出
原始的文件目录
打包输出的文件目录
组件库打包可能存在的问题
解决方法:引入 vite-plugin-css-injected-by-js 插件解决。
以 element-plus 开发场景为例,如果开发的组件库是在 element-plus 组件的基础上开发的,打包后用到的样式会被提取到一个通用的 .css 文件中,这其中包括用到的 element-plus 根(:root)样式变量,这可能会覆盖掉项目中的 :root 样式变量。
解决方法:一个不错的解决方法是根据组件库的名称自定义 element-plus 命名空间,如何自定义命名空间,Imtokendapp源码element-plus 官方文档有详细说明,这里不做赘述。这里有一点需要注意下,我们是打包自己的组件库,命名空间的设置不能是在 App.vue 根组件中了,而在你需要打包的组件中。
方法库:
不同于组件库是以 .vue 文件为主的视觉交互,通用方法中主要是以 .ts 文件为主的通用逻辑方法等,所以它和组件库最大的区别在于生成类型声明文件的工具,组件库是用 vue-tsc,通用方法库则是用 tsc,可参见上面的 vswift-cli build 脚本构建命令,简单直接点的话可以直接用 "build": "rm -r ./dist && vite build && tsc"。
脚手架:
封装自己的脚手架,有 3 个关键要点:bin 配置、files 配置、cli 顶部声明。
脚手架 package 基本结构预览 ------------>
这里解释下 "build": "pnpm clean && tsc && scp -r ../vswift-templates/src/templates ./dist" 的含义-----------> “pnpm clean && tsc” 无需多说,“scp -r ../vswift-templates/src/templates ./dist” 是将 vswift-templates/src/templates 中维护的通用模板拷贝到打包输出目录 dist 中,并随着 @vswift/cli 包一起发布,使用脚手架命令快速创建基础页面的模板将从 “dist/templates” 中获取。
name - 发布后的包名,全局安装:npm install @vswift/cli -g
bin.vswift-cli - 全局安装 @vswift/cli 后,即可在命令行使用 vswift-cli
files - 发布的文件别漏掉 bin.js
bin.js - 顶部需加 #!/usr/bin/env node 声明
注意:脚手架不需要 vite.config.ts 配置,只需在 tsconfig.json 中稍加区别修改,执行 tsc 使用。
outDir - 编译后的ovmeet源码输出目录
declaration - 执行 tsc 时输出 .d.ts 声明文件
declarationDir - .d.ts 声明文件的输出目录
最终输出目录 ----------------->
这里推荐几个开发脚手架时常用的 package -------------------->
commander - Node.js 命令行插件,可以格式化输出友好的命令符提示
nanospinner - Node.js 终端微调器,进度、成功、失败等状态友好展示,也可用 ora 代替
consola - 用于 Node.js 和浏览器的优雅控制台记录器
chalk - 终端样式粉笔,着色高亮
vswift-cli build 构建命令 ------------------>
vswift-cli create 根据模板创建基础页面命令 --------------------->
vswift-cli dev 启动组件库预览调试命令 -------------------->
cli 命令行逻辑 --------------->
自动生成的 vswift-cli 命令行 help ----------------------->
发布包:
每个 package 的 package.json 中都有 release 命令,用于发布当前 package,package 会在发布前先 build 操作生成 dist 打包目录,最终发布的内容为 package.json 中 files 配置目录文件,当前 package 的 package.json 会被自动添加进去。
这里使用了 release-it 插件,以方便快速地进行发布。
还需注意,package.json 中要有相应的发布配置 --------------->
架构源码参考:
这属于什么类型的文件?
-- 常用文件扩展名解释
A 对象代码库文件
AAM Authorware shocked文件
AAS Authorware shocked包
ABF Adobe二进制屏幕字体
ABK CorelDRAW自动备份文件
ABS 该类文件有时用于指示一个摘要(就像在一篇有关科学方面的文章的一个摘要或概要,取自abstract)
ACE Ace压缩档案格式
ACL CorelDRAW 6键盘快捷键文件
ACM Windows系统目录文件
ACP Microsoft office助手预览文件
ACR 美国放射医学大学文件格式
ACT Microsoft office助手文件
ACV OS/2的驱动程序,用于压缩或解压缩音频数据
AD After Dark屏幕保护程序
ADA Ada源文件(非-GNAT)
ADB Ada源文件主体(GNAT);HPLX组织者的约定数据库
ADD OS/2用于引导过程的适配器驱动程序
ADF Amiga磁盘文件
ADI AutoCAD设备无关二进制绘图仪格式
ADM After Dark多模块屏幕保护;Windows NT策略模板
ADP FaxWork用于传真调制解调器的交互安装文件;Astound Dynamite文件
ADR After Dark随机屏幕保护;Smart Address的地址簿
ADS Ada源文件说明书(GNAT)
AFM Adobe的字体尺度
AF2,AF3 ABC的FlowChat文件
AI Adobe Illustrator格式图形
AIF,AIFF 音频互交换文件,Silicon Graphic and Macintosh应用程序的声音格式
AIFC 压缩AIF
AIM AOL即时信息传送
AIS ACDSee图形序列文件;Velvet Studio设备文件
AKW RoboHELP的帮助工程中所有A-关键词
ALAW 欧洲电话音频格式
ALB JASC Image Commander相册
ALL 艺术与书信库
AMS Velvet Studio音乐模块(MOD)文件;Extreme的Tracker模块文件
ANC Canon Computer的调色板文件,包含一系列可选的颜色板
ANI Windows系统中的动画光标
ANS ANSI文本文件
ANT SimAnt For Windows中保存的游戏文件
API Adobe Acrobat使用的应用程序设计接口文件
APR Lotus Approach 文件
APS Microsoft Visual C++文件
ARC LH ARC的压缩档案文件
ARI Aristotle声音文件
ARJ Robert Jung ARJ压缩包文件
ART Xara Studio绘画文件;Canon Crayola美术文件;Clip Art文件格式;另一种光线跟踪格式;AOL使用的用Johnson―Grace压缩算法压缩的标记文件
ASA Microsoft Visual InterDev文件
ASC ASCⅡ文本文件;PGP算法加密文件
ASD Microsoft Word的自动保存文件;Microsoft高级流媒体格式(microsoft advanced streaming FORMat,ASF)的描述文件;可用NSREX打开 Velvet Studio例子文件
ASE Velvet Studio采样文件
ASF Microsoft高级流媒体格式文件
ASM 汇编语言源文件,Pro/E装配文件
ASO Astound Dynamite对象文件
ASP 动态网页文件;ProComm Plus安装与连接脚本文件;Astound介绍文件
AST Astound多媒体文件;ClarisWorks“助手”文件
ASV DataCAD自动保存文件
ASX Cheyenne备份脚本文件;Microsoft高级流媒体重定向器文件,视频文件
ATT AT< Group 4位图文件
ATW 来自个人软件的Any Time Deluxe For Windows个人信息管理员文件
AU Sun/NeXT/DEC/UNIX声音文件;音频U-Law(读作“mu-law”)文件格式
AVB Computer Associates Inoculan反病毒软件的病毒感染后文件
AVI Microsoft Audio Video Interleave**格式
AVR Audio Visual Research文件格式
AVS 应用程序可视化格式
AWD FaxVien文档
AWR Telsis数字储存音频文件扩展名格式
Axx ARJ压缩文件的分包序号文件,用于将一个大文件压至几个小的压缩包中(xx取-的数字)
A3L Authorware 3.x库文件
A4L Authorware 4.x库文件
A5L Authorware 5.x库文件
A3M,A4M Authorware Macintosh未打包文件
A4P Authorware无运行时间的打包文件
A3W,A4W,A5W 未打包的Authorware Windows文件
BAK 备份文件
BAS BASIC源文件
BAT 批处理文件
BDF West Point Bridger Designer文件
BFC Windows Briefcase文档
BG Backgammon For Windows下的游戏文件
BGL Microsoft Flight Simulator(微软飞行模拟器)的视景文件
BI 二进制文件
BIF Group Wise的初始化文件
BIFF XLIFE 3D格式文件
BIN 二进制文件
BK,BK$ 有时用于代表备份版本
BKS IBM BookManager Read书架文件
BMK 书签文件
BMP Windows或OS/2位图文件
BMI Apogee BioMenace数据文件
BOOK Adobe FrameMaker Book文件
BOX Lotus Notes的邮箱文件
BPL Borlard Delph 4打包库
BQY BrioQuery文件
BRX 用于查看多媒体对象目录的文件
BSC MS Developer Studio浏览器信息文件
BSP Quake图形文件
BS1 Apogee Blake Stone数据文件
BS_ Microsoft Bookshelf Find菜单外壳扩展名
BTM Norton 应用程序使用的批处理文件
BUD Quicken的备份磁盘
BUN CakeWalk 声音捆绑文件(一种MIDI程序)
BW SGI黑白图像文件
BWV 商业波形文件
BYU BYU的**文件格式
B4 Helix Nuts and Bolts文件
C C代码文件
C0l 台风波形文件
CAB Microsoft压缩档案文件
CAD Softdek的Drafix CAD文件
CAL CALS压缩位图;日历计划表数据
CAM Casio照相机格式
CAP 压缩音乐文件格式
CAS 逗号分开的ASCⅡ文件
CAT Quicken使用 的IntellCharge分类文件
CB Microsoft干净引导文件
CBI 二进制卷格式文件(用于IBM大型机系统)
CC Visual dBASE用户自定义类文件
CCA cc:邮件文件
CCB Visual Basic动态按钮配置文件
CCF 多媒体查看器配置文件,用于OS/2
CCH Corel图表文件
CCM Lotus cc:邮箱(例如“INBOX.CCM”)
CCO CyberChat数据文件
CCT Macromedia Director Shockwave投影
CDA CD音频轨道
CDF Microsoft频道定义格式文件
CDI Philip的高密盘交互格式
CDM Visual dBASE自定义数据模块文件
CDR CorelDRAW绘图文件;原始音频CD数据文件
CDT CorelDRAW模板
CDX CorelDRAW压缩绘图文件;Microsoft Visual FoxPro索引文件
CEL CIMFast事件语言文件
CER 证书文件(MIME x-x-ca-cert)
CFB Compton的多媒文件
CFG 配置文件
CFM CotdFusion模板文件;Visual dBASE Windows用户定制表单
CGI 公共网关接口脚本文件
CGM 计算机图形元文件
CH OS/2配置文件
CHK 由Windows磁盘碎片整理器或磁盘扫描保存的文件碎片
CHM 编译过的HTML文件
CHR 字符集(字体文件)
CHP Ventura Publisher章节文件
CHT ChartViem文件;Harvard Graphics矢量文件
CIF Adaptec CD 创建器 CD映像文件
CIL Clip Gallery下载包
CIM SimCity 文件
CIN OS/2改变控制文件用于跟踪INI文件中的变化
CK1 iD/Apogee Commander Keen 1数据文件
CK2 iD/Apogee Commander Keen 2数据文件
CK3 iD/Apogee Commander Keen 3数据文件
CK4 iD /Apogee Commander Keen 4数据文件
CK5 iD /Apogee Commander Keen 5数据文件
CK6 iD /Apogee Commander Keen 6数据文件
CLASS Java类文件
CLL Crick Software Clicker文件
CLP Windows 剪贴板文件
CLS Visual Basic类文件
CMD Windows NT,OS/2的命令文件;DOS CD/M命令文件;dBASEⅡ程序文件
CMF Corel元文件
CMG Chessmaster保存的游戏文件
CMP JPEG位图文件;地址文档
CMV Corel Move动画文件
CMX Corel Presentation Exchange图像
CNF Telnet,Windows和其他其内格式会发生改变的应用程序使用的配置文件
CNM Windows应用程序菜单选项和安装文件
CNQ Compuworks Design Shop文件
CNT Windows(或其他)系统用于帮助索引或其他目的内容文件
COB TrueSpace 2对象文件
COD Microsoft C编译器产生的可显示机器码/汇编代码文件,其中附有源C代码作为注释
COM 命令文件(程序)
CPD Corel Print Office文件(图形)
CPD,CPE 传真覆盖文档
CPI Microsoft MS-DOS代码页信息文件
CPL 控制面板扩展名,Corel颜色板
CPO Corel打印存储文件
CPP C++代码文件
CPR Corel提供说明书文件
CPT Corel 照片-绘画图像
CPX Corel Presentation Exchange压缩图形文件
CRD Windows Cardfile文件
CRP Corel 提供的运行时介绍文件;Visual dBASE自定义报表文件
CRT 认证文件
CSC Corel脚本文件
CSP PC Emcee On_Screen图像
CSS 瀑布式表格文件
CST Macromedia Director Cast文件
CSV 逗号分隔的值文件
CT Scitex CT位图文件;Paint Shop Pro Grapic编辑器文件
CTL 通常用于表示一个包含控件信息的文件;FaxWork用它来保持有关每个传真收到或发出的信息
CUE Microsoft提示牌数据文件
CUR Windows光标文件
CUT Dr Halo位图文件
CV Corel版本的档案文件;Microsoft CodeView信息屏幕文件
CWK ClarisWorks数据文件.
CWS ClarisWorks模块
CXT Macromedia Director受保护的(不可编辑的)投影文件
CXX C++源代码文件
--------------------------------------------------------------------------------
-- 作者:ray
-- 发布时间:-- ::
--
DAT 数据文件;WrodPerfect合并数据文件;用于一些MPEG格式的文件
DB Borland的Paradox 7表
DBC Microsoft Visual FoxPro数据库容器文件
DBF dBASE文件,一种由Ashton-Tate创建的格式,可以被ACT!、Lipper、FoxPro、Arago、Wordtech、Xbase和类似数据库或与数据库有关产品识别;可用数据文件(能被Excel 打开);Oracle 8.1.x表格空间文件
DBX DataBearn图像;Microsoft Visual FoxPro表格文件
DCM DCM模块格式文件
DCR 冲击波文件
DCS 桌面颜色分隔文件
DCT Microsoft Visual FoxPro数据库容器
DCU Delphi编译单元文件
DCX Microsoft Visual FoxPro数据库容器;基于PCX的传真图像;宏
DC5 DataCAD绘图文件
DDF Btrieve或Xtrieve数据定义文件,它包含用于描述Btrieve或Xtrieve文件的元数据
DDIF Digital Equipment或 Compaq格式,用于保存他们图像与字处理文档
DEF SmartWareⅡ数据文件;C++模块定义文件
DEFI Oracle 7 卸载脚本文件
DEM 用于表示数字高度模型的USGS基准的文件
DER 认证文件
DEWF Macintosh Sound Cap/Sound Edit录音设备格式
DGN Macintosh CAD绘图文件
DIB 设备无关位图
DIC 目录
DIF 可进行数据互换的电子表格
DIG DigiLink格式;Sound DesignerⅠ音频文件
DIR MacromediaDirector文件
新款vue-cli之create-vue源码阅读总结
新款Vue CLI之create-vue源码阅读总结
create-vue,作为Vue项目的简便启动工具,源码简洁明了。本文将对其核心知识点进行整理。
使用方式:create-vue通过运行outfile.cjs文件,此文件由package.json中的bin配置指定。
在package.json设置type: 'module',表示如果js文件采用ES模块格式编写,无需转换为outfile.cjs。
模板增量覆盖命令行参数解析:简化版本的vue-cli commander,预设默认参数,如使用预设可跳过问题询问,自动拉取对应模板。
问题答案统计:prompts收集问题答案,输出成对象形式,与vue-cli中的inquirer功能类似。
颜色渐变:utils\banner.js中实现终端输出的美丽颜色渐变功能。
文字颜色格式化:kolorist库,将颜色注入输入/输出,相当于vue-cli中的chalk。
pinia:更简洁的状态管理方案。
vitest:详细信息见相关文章。
git submodule:常规操作,playground文件夹即为一个submodule。
js语法书写shell:以js形式编写shell脚本,例如scripts\snapshot.mjs需先执行npm run build。
pnpm:自行搜索了解。
husky7:git hooks相关。
npm-run-all:自行搜索了解。
cypress:自行搜索了解。
java开发中常用的工具有哪些?
从事Java开发工作,选择一款好用顺手的开发工具是必不可少的。本文将从四个主要方面介绍Java开发中常用的工具。
1、常用开发工具
Java开发人员在选择集成开发环境IDE时,通常面临多种选择,包括免费开源的Eclipse、MyEclipse(中国,官网)、Oracle公司免费的NetBeans和IntelliJ IDEA。Eclipse是一个开放源代码的、基于 Java 的可扩展开发平台,由IBM公司开发,后贡献给开源社区。MyEclipse是Eclipse的插件,专门用于J2EE集成开发环境。NetBeans由Sun公司(年被甲骨文收购)创立,是一个免费的Java IDE。IntelliJ IDEA是一款受到许多开发人员和行业专家赞誉的综合Java编程环境,提供智能编码辅助、自动控制、J2EE、Ant、JUnit、SVN和Git集成、非平行编码检查等工具。
2、常用接口测试工具
接口测试对于确保组件间的正确交互至关重要。Java第三方包pare用于版本对比;JD-GUI和JD-Eclipse是用于反编译的工具;Source Insight是一个面向项目开发的程序编辑器和代码浏览器;SQLyog是一款连接MySQL数据库的图形化工具。
4、其他常用工具
在开发过程中,还有一些其他工具是常用到的,如对比工具beyond compare和文本编辑工具如Total Commander。JD-GUI和JD-Eclipse用于Java代码反编译;TypeAndRun是一个方便快捷的控制台工具,用于执行常用程序;Source Insight用于代码分析和搜索;MySQL连接工具SQLyog用于数据库操作。
总结,本文介绍了Java开发中常用的工具,涵盖了开发工具、接口测试工具、远程连接工具和文本编辑工具等。这些工具既包括免费开源的,也有商用收费的,小公司使用这些工具通常能满足大部分开发需求。最后,分享一套从零基础到项目实战的JavaWeb视频教程,帮助学习者系统掌握JavaWeb开发技术栈,提升开发能力。
怎样快速找出文本文件里面内容的不同之处?
利用Total Commander这类软件的同步比较工具,查找文本文件内容差异变得极为便捷。Total Commander是功能强大的文件管理工具,其中包含的比较功能能够高效地显示两个目录间的不同之处,同时支持文件内容的比较,用户可根据需求调整比较结果的显示方式,方便进行目录、文件夹、压缩包、FTP网站间的差异对比与资料同步,管理源代码,维护文件夹同步,比较程序输出,验证光盘复制等操作。
Beyond Compare也是一款专业的文件和文件夹比较工具,它能快速检测两个目录的差异,且提供对比文件内容的功能。Beyond Compare界面直观,允许用户自定义比较结果的展示,特别适合比较目录、文件夹、压缩包、FTP网站的差异,同时支持资料同步,管理源代码,保持文件夹同步,比较程序输出,验证光盘复制等需求。此软件特别注重中文支持,确保用户在处理中文文件时能够顺畅无阻。
无论是Total Commander还是Beyond Compare,这些软件都为用户提供了强大的文件比较功能,帮助用户快速准确地找出文本文件内容的不同之处。Total Commander以其全面的文件管理功能著称,而Beyond Compare则以其专精的文件比较功能受到用户青睐。选择合适的软件,结合其强大功能,用户可以高效地处理文件比较任务,提高工作效率。