|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!
您需要 登录 才可以下载或查看,没有账号?注册
x
背景 a4 \. K' e2 M, f8 U! U
在社交软件中,通常大家在互相不了解的情况下,如何寻找志同道合的朋友?一般来讲,我们会通过关键词查询,比如:校友群、单身群、兴趣爱好群等。而在一个社交群体中,大家也会通过自我介绍的方式向其他成员介绍自己。
. _1 h# O6 i% w z; Y, ~" c0 u' T: V$ C% A4 ]
开源社区本质上与其他社交软件类似,是一个以开源项目为载体、寻找志同道合之人的社交平台,而开源项目的自我介绍就是项目文件。一个靠谱的开源项目都会在项目的顶级目录中提供详细的说明文件,完整详实的说明可以帮助他人快速了解项目,降低入门门槛,更能吸引对项目感兴趣的开源贡献者参与项目。因此,想要了解开源项目,了解项目中的各类文件是非常有必要的,有助于提升我们对项目的理解。
+ K. n5 \$ V3 D5 A C; j" [& \5 V' ~" \* A3 ^+ B
文件类型/ A( ^: U) K8 |: k# W
我们常见的文件类型有很多,不同的项目中用到的文件也各有不同。可以大致分为 5 类:说明文件、编程文件、脚本文件、配置文件、资源文件和软件包文件。接下来,让我们来逐一了解这 6 类文件。7 j$ n" P* p5 Z# b0 E
. X) ?8 Q j A C3 ~1 k6 R
说明文件
, c3 i8 S' k3 } n$ P W说明文件一般会在项目的顶层目录列出,用来提供项目介绍、使用说明、变更记录、参与者及使用者说明等。下面列举几种常见的说明文件:' k! I$ _- f6 G
AUTHORS:贡献者列表,记录项目的贡献者。$ m! ?2 a1 {9 F- n( }0 p
DISCLAIMER:免责声明文件。2 P, X0 A; Q6 R
CHANGELOG:CHANGELOG 文件用来记录项目的变更记录,通常包含 Added、Changed、Removed 和 Fixed。9 ~' k. n' |1 M% E) W' V' O: B
CODE_OF_CONDUCT:行为准则文件. 行为准则定义了如何在社区中进行交互和交流的最佳实践, 它也可以作为解决社区成员之间冲突的首选文件。( P% Z$ ^' g1 W# m$ a
CODEOWNERS:代码所有者,代码所有者文件是 Github 提供的特性,可以指定文件或目录的代码所有者,当文件或目录出现 PR 时,可以推送给代码所有者,提醒进行 PR 审查。; M" E* C% F7 o+ m" O5 O
CONTRIBUTING:指导参与者如何对项目做出贡献,CONTRIBUTING 中表述了项目需要什么类型的贡献,社区或者本项目的作业流程。- o0 i& {4 A* }( A: x$ p4 O" w
LICENSE:开源许可证文件,开源项目通过编写开源许可文件,声明项目使用的开源协议。
3 d8 D$ G2 Y2 ^( G& ^$ F. B* ]" kNOTICE:用来存放 License 定义的法律声明文件。6 v2 v m* |4 {; H0 ]
README:项目介绍说明文件,通常 README 会表述项目的用处、发起原因、快速使用等。% v7 [' D5 [# I' N7 x$ L# P
需要注意的是,上述文件仅作为项目开源的指导性文件,属于约定俗成的开源项目规范,并非强制要求,请根据自身需求选择使用相应的文件。当然,你也可以按照自己的想法制定自己的项目规范,只要能够帮助项目在开源过程中的能够很好的管理、开发和维护,能够保障项目相关权利,它就是一份良好的项目规范。6 O4 }+ ^9 O3 Y6 t: F" v4 n
) s& N2 g& Y0 ?$ F8 L. I
程序文件9 p& h$ O* k7 ~9 w5 J2 r( k
程序文件主要依赖于对应的编程语言,是一个开源项目中占比最多的主要文件。说明文件用来帮助了解项目的全貌,而更细节的内容就需要从具体的程序文件来了解了。程序文件的存放目录一般与架构设计有关,比如:Java 项目的程序源文件(*.java)默认存放路径为“./src/main/java”。下面列举几种常用的程序文件:
1 f2 T. P( V5 X*.asp:ASP(Active Server Page)程序源文件。 h8 I: r, {( d( k$ m
*.c:C 程序源文件。
* h" D0 q% G4 ] I*.cc / *.cpp:C++ 程序源文件。; U4 y8 `3 f. @0 W3 F" T, A9 I
*.class:Java class 文件。6 H) h' h( X5 ]& {
*.frm:MySQL 表结构定义文件。
" W4 p0 E+ {( v*.h:C 程序头文件。
- ~4 z! ~4 ` \4 V5 m2 J*.hpp:C++ 程序头文件。
6 N# C& _5 _4 x3 J/ `*.java:Java 程序源文件。2 L( n J0 V$ h- d
*.jsp:Java 语言编写的动态网页程序文件。+ G. N2 X9 l0 ?' K8 N
*.php:PHP 程序源文件。" d* X4 Y/ H R! k9 ?
*.py:Python 程序源文件。: D- s' R5 ]7 [* q
*.ts:TypeScript 程序源文件。
. s o$ n/ b0 ^* ]4 E1 A* U$ w0 \*.dart:Dart 程序源文件。
! f2 e$ H% O6 q, d% ?*.go:Go 程序源文件。
% H& s8 c/ k" w' Q: U! X! T0 k9 u0 M*.cs:C# 程序源文件。
$ V& n" P/ y- a2 O3 A5 i: z*.kt:Kotlin 程序源文件。
5 C* r/ K0 U1 b+ Y3 A
; T" @6 I' |8 J' a脚本文件- r' q% y3 q6 A* m2 E
*.bat:bat 文件是 Windows 平台下的批处理脚本文件。
# N I8 N2 @3 M$ T% ]' q*.sh:sh 文件是使用 Shell 的语法与指令编写的脚本文件。( S* ^7 z9 {7 a7 L
*.sql:Sql 脚本文件。/ ~- W7 E9 s6 s0 F+ f
*.vbs:Visual Basic 脚本文件。, ^( g3 K/ L" [/ w% r2 I
; |- J; G+ E* Z! s, g! Z
配置文件
5 _1 J# f6 y# Q2 l/ G, ]配置文件顾名思义,是提供项目中所需配置的文件,包括各种配置信息、脚本文件、数据字典、Mock 数据、样式文件、模型文件等。配置文件的存放目录并不固定,存放目录一般与项目类型和项目规范有关,例如:SpringBoot 项目的配置文件目录默认是 resources 文件夹。下面列举几种常见的配置文件:
& n* {) \* n1 y$ h/ d- g* p*.config:config 文件是一种的通用配置文件,不同的程序可以根据不同的格式来存储配置信息。4 Q) B9 q# p/ r3 H! X/ p& E
*.ini:ini 文件是某些平台或软件上的配置文件,以节(section)和键(key)构成,比如: Windows 操作系统、Mysql 配置等。0 o2 I) V9 ^3 K' Y
*.json:json(JavaScript Object Notation)是一种轻量级的数据交换格式,常见于 Restful 接口数据交互,以及 Mock 数据。
# \# @- i. T- m a" w! m*.lua:lua 是一种由标准 C 编写小巧的脚本文件,其设计目的是为了嵌入应用程序中,为应用程序提供灵活的扩展和定制功能。
# M* r% I3 [8 K8 e& n$ S*.properties:properties 是一种 Java 中常见的配置文件,通过"键=值"的格式存储配置信息。9 `$ i i+ ~3 h
*.xml:XML 是一种可扩展标记语言(EXtensible Markup Language),由 W3C 制定。
2 b) G3 f' q$ z*.yml / *.yaml:YAML 是一种直观的能够被电脑识别的的数据序列化格式,容易被人类阅读,并且容易和脚本语言交互。/ L1 d; L, w! T) q- K& v2 {$ u
# j. Z( c0 b8 X1 S9 S静态资源文件! r, e5 |* l, Z' W
静态资源文件是指非服务器动态运行生成的文件,一般包括:静态页面、样式文件、压缩文件、图像文件、音频文件、视频文件和文档文件等。
( W! T+ y0 V: W/ [( Z& B& Z7 ]0 j& A$ t
页面文件# A. h6 B3 ~, [% T7 g
*.html:HTML 文件是可以被多种网页浏览器读取,产生网页传递各类资讯的文件。; [% V7 _7 g: i1 U# l' |
*.js:js 文件是使用 Javascript 语法编写的网页脚本文件。) K* h* P: o9 x# N+ B$ b
2 [- D. X' p0 ^7 H4 k& w
样式文件* ^ B6 H' U+ F. N
*.css:css 文件是使用 CSS 用于描述网页上的信息格式化和显示的方式。
* M _7 ^) X$ M. k, U; Y9 A) ]0 M% _8 A4 X6 }) n& F
压缩文件9 O' s5 _+ K, L8 U4 p1 s' p
*.7z:7z 文件是 7z 格式的压缩文件,是一种主流高效的压缩格式,拥有极高的压缩比。
7 G' V% y5 ^( c0 ?' X5 f*.gz:gz 文件使用 gzip 命令压缩的压缩文件,是 Unix 和类 Unix 系统中经常用来对文件进行压缩和解压缩的命令。
6 e, M( ?& K# b*.jar:jar 文件是一种归档文件,以 zip 格式构建,可以使用 JDK 自带的 jar 命令创建或提取 jar 文件,也可以使用其他zip压缩工具。 A- G2 S( o( J7 J, T' E
*.rar:rar 文件是一种较高压缩率的压缩文件,可以管理的文件大小几乎是无限制的。
: x: f4 L/ ?! R+ K& ]+ y*.tar:tar 文件是 Unix 和类 Unix 系统上的压缩文件,可以将多个文件合并为一个文件。, ?5 |- G) o" N; Q% C' t `
*.zip:zip 文件是一种开放性的压缩文件,压缩速度较快,处理单个文件的最大值为 4 GB。
! E1 L; R) d) u
; K# L2 m; o5 ]3 n2 [图像文件
: {7 `: a( e; J*.jpg:JPEG(Joint Photographic Experts Group)是一种广泛使用的图片有损压缩格式。
. B F' ?. c x% C u*.png:PNG 是一种采用无损压缩算法的位图格式。
+ D' W; [8 u# a6 ?8 O2 m1 c*.webp:WebP 是一种同时提供了有损压缩与无损压缩(可逆压缩)的图片文件格式。+ O7 Z3 x- J" ?7 U$ o( n
*.bmp:BMP 是英文 Bitmap(位图)的简写,bmp 文件是Windows操作系统中的标准图像文件。
3 h, s. [. C: K4 S) }! H*.gif:GIF 的全称是 Graphics Interchange Format,可译为图形交换格式。
2 m& f8 G( Z: {' M; A8 B*.ico / *.icon:ICO 是一种图标文件格式,图标文件可以存储单个图案、多尺寸、多色板的图标文件。一个图标实际上是多张不同格式的图片的集合体,并且还包含了一定的透明区域。4 |6 w. h- P2 R' [1 m
*.svg: SVG (可缩放矢量图形)是一种图像文件格式,使用 XML 来编写,可以无限制放大而不影响分辨率。
" W6 _) u! l9 [3 S. Q
) f3 K; N1 ?/ T; j1 ]6 f音频文件 z0 p p) Y& |/ Y& d4 f
*.ac3:AC3(Audio Coding3)是杜比数码的同义词,杜比数码是一种高级音频压缩技术,它最多可以对 6 个比特率最高为 448 kbps 的单独声道进行编码。
! P5 A0 g0 S( n& T4 u( B) u2 Y*.acc:AAC(Advanced Audio Coding)意为高级音频编码,出现于 1997 年,基于 MPEG-2 的音频编码技术。由 Fraunhofer IIS、杜比实验室、AT&T、Sony 等公司共同开发,目的是取代 MP3 格式。7 v. X' w( f w
*.avi:AVI (Audio Video Interleaved)是指音频视频交错格式,是微软公司于 1992 年 11 月推出、作为其 Windows 视频软件一部分的一种多媒体容器格式。
4 B" ^. C7 N, B6 |+ H*.flac:FLAC 可解释为无损音频压缩编码。不同于其他有损压缩编码如 MP3 及 AAC,它不会破坏任何原有的音频信息,所以可以还原音乐光盘音质。6 F% E: R# O: i" I! B6 b( i
*.mp3:MP3 是一种音频压缩技术,其全称是动态影像专家压缩标准音频层面3(Moving Picture Experts Group Audio Layer III),简称为 MP3。
$ g" p0 _% v; {+ L) ?*.mp4:MP4 是一套用于音频、视频信息的压缩编码标准,由国际标准化组织(ISO)和国际电工委员会(IEC)下属的“动态图像专家组”(Moving Picture Experts Group,即MPEG)制定。
% n( d. j: ~+ W4 d7 o+ I*.m4a:M4A 是 MPEG-4 音频标准的文件的扩展名。
6 m- v' \' b/ K$ N7 J*.wav:WAV 是最常见的声音文件格式之一,是微软公司专门为 Windows 开发的一种标准数字音频文件,该文件能记录各种单声道或立体声的声音信息,并能保证声音不失真。# B- e. M# M, j" R5 H" X! X; P( j$ l4 v0 H
4 z, U+ U6 A2 n2 J" u) d视频文件
3 S- ~0 w+ u1 l: ] ]. X*.flv:FLV(FLASH VIDEO)是一种流媒体格式,是随着 Flash MX 的推出发展而来的视频格式。由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能。
9 i! X& N/ s2 f$ L- |; d9 {- g W*.mkv:MKV 是 Matroska 的一种媒体文件,Matroska 是一种新的多媒体封装格式,也称多媒体容器 (Multimedia Container)。
% ~- P7 ~- H+ d3 O5 B- X* J
$ S! C5 ]- Z, z# N2 L. c文档文件
' C/ l0 h; |' u. _: K! n6 I*.chm:CHM 文件被称作“编译的 HTML 帮助文件”(Compiled HTML Help file),是微软于 1998 年推出的基于 HTML 文件特性的帮助文件。) \- w( H/ |% _. t$ J
*.doc:doc 文件是 Word2003 以前版本的文档文件。
) s, [2 f: y" l3 P% P9 J K# ?/ T7 Z+ w$ i*.docx:docx 文件是 Word2007 之后版本的文档文件。
! r1 P8 y. f2 @1 y*.md:md 文件(即 markdown 文件)是一种快速标记、快速排版语言,遵循 markdown 文档的基本编写语法,现在很多项目中的说明文件都是用其编写的。4 K N9 s' q8 y8 v7 g7 ^
*.pdf:PDF(Portable Document Format的简称,意为“可携带文档格式”),是由Adobe Systems用于与应用程序、操作系统、硬件无关的方式进行文件交换所发展出的文件格式。
7 I6 x! w) m7 A+ ~*.ppt:ppt 文件是 PowerPoint2003 以前版本的文档文件。4 R2 x6 [3 N+ {$ |/ l6 f; n
*.pptx:pptx 文件是 PowerPoint2007 之后版本的文档文件。
" j0 E( ]; b% J, |, m*.xls:xls 文件是 Excel2003 以前版本的文档文件。
" F( \# B7 K$ p+ H0 \- N0 W: H*.xlsx:xlsx 文件是 Excel2007 之后版本的文档文件。5 B- w6 Y; U/ B6 O5 e
5 S. | f( `( e$ f2 { }软件包文件+ q2 v8 F/ _8 k6 v# b5 A
*.exe: exe 文件是 Windows 操作系统中的可执行程序。. k, [: W/ A6 u6 F+ R z& \$ H
*.deb: deb 文件是 Debian 发行版创建的软件包格式文件,在基于 Debian 的发行版中使用。* L& V/ ^! M- \& \/ Y- U) F6 e
*.rpm: rpm 文件是 Redhat 发行版创建的软件包格式文件,在基于 Redhat 的发行版中使用。5 S! T( R! y" ?; q3 b0 @- l+ F
*.AppImage: AppImage 文件是一种通用的软件包格式,几乎可以在所有的 linux 发行版本中使用。
/ l7 c. j" |, X; V" j
% L* K( H5 J) ]+ H小结+ l1 d+ v" f0 [0 C7 [- d; l
通过以上描述,大家可能会发现很多文件格式都有见过。没错!常见的各类文件格式不仅存在于开源项目中,在日常生活中也随处可见。不同文件格式有着不同的作用,标准的文件格式使得我们可以快速分辨文件用途,也能够帮助我们更好地了解开源项目。
X! Q0 r5 }1 b. x除此之外,如果你想定义自己的文件格式也是没有问题的,比如我们常用的音乐软件和视频软件,它们都拥有自己独特的文件格式。想象一下,在未来的某一天,如果你定义的文件格式被广泛采纳,或许它就会出现在这里。
6 u3 A) U7 u" ^9 c' j9 i% w- ?: G7 Q) Q6 a
|
|