fqa0
FQA 0 - Plan 9 简介
0.1 - 什么是 Plan 9
Plan 9 是一个研究操作系统,来自于在 Bell 实验室计算机科学研究中心(CSRC)同样创造了 UNIX 的团队。它出现在20世纪80年代末,它的早期开发与后续版本 Research UNIX 的持续开发相一致。Plan 9 可以被看作是一种尝试,它试图将一些相同的思想发展成网络和图形时代。Rob Pike 将 Plan 9 描述为一个简单明了的“参数”,而其他人则将其描述为“UNIX,仅此而已”。
来自《The Use of Name Spaces in Plan 9》:
Plan 9 认为,只要提供一些精心实现的抽象,就有可能生成一个小型操作系统,为各种体系结构和网络上最大的系统提供支持。
来自《intro(1)》手册:
Plan 9 是一个分布式计算环境,由充当 terminals 、 CPU servers 和 file servers 的不同机器组装而成。用户在 terminals 工作,在光栅显示器上运行窗口系统。一些窗口连接到 CPU servers ,这样做的目的是在那些窗口中进行大量计算,但也可以在 terminals 上进行计算。一个分开的 file servers 为 terminals 和 CPU servers 提供文件存储。
Plan 9 中最重要的两个想法是:
系统中的大多数其他东西都不属于这两个基本概念。
Plan 9 确实在很大程度上推动了 Unix 的一些尚未完全开发的思想,特别是,系统中几乎所有的东西都可以通过文件访问的概念。换句话说,它看起来就像一个普通的磁盘文件。所以所有的设备都是通过 ASCII字符串 来控制的,而不是通过复杂的数据结构。例如,通过编写 ASCII字符串 而不是文件来进行网络调用。这个概念实际上推广得很快。
第二件事有点微妙,很难欣赏,除非你真的玩过它。也就是说,单个程序可以集依赖于该程序本身。在标准类型的系统中,无论是 Unix远程文件系统 还是 Windows附加文件系统 ,机器中运行的每一个程序都是相同的东西。在 Plan 9 中,每个程序都可以调整。可以设置特定程序特有的专门名称工作站。我的意思是,它与程序本身无关,而是与过程有关,与过程的执行有关。
——Dennis Ritchie
阅读:《intro(1)》《Plan 9 from Bell Labs》《Designing Plan 9》 ——最初交付于 1990年7月伦敦UKUUG会议;和《FQA 7 - System Management》来获得 Plan 9 设计的更多详细概述。
今天,Plan 9 以其最初的形式继续进行,并衍生出几个衍生方案和分支方案:
Plan 9 from Bell Labs —— 原 Plan 9。实际上已经死了,所有的开发人员都已经从实验室 和/或 谷歌上离开了。
Plan 9 from User Space —— 为 UNIX 移植/模仿的用户空间(特别是 OS X )。
9legacy —— David du Colombier`s cherry 从不同的人/分支收集补丁到 Plan 9 from Bell Labs。(它不是分支)
9atom —— Erik Quanstrom 的 Plan 9 分支,保持给 Erik 的需要,偶尔也会被 9front 借鉴。
9front——(这是我们)(我们在管理它(我们是 tunnel snakes ))。(译者注:tunnel snakes rule 是游戏《辐射》中的帮派之一,此处指对某物很感兴趣)
Nix —— 高性能云计算系统,在尖刻的政治阴云和迟钝的官僚内斗中内爆了。
NxM —— 一个多核系统的内核 —— 从来没有外部人员见过。
Clive —— 一个来自 Francisco J.Ballesteros 的新操作系统,旨在为懒惰的学生生成大量的实践材料和研究项目。
Akaro —— Akaros 是一个开源的、GPL许可的操作系统,适用于许多核心架构。与任何项目无关,但却吸引了大量拨款。
Harvey —— Harvey 正在努力使 Plan 9 代码与 gcc 和 clang 一起工作。
Inferno —— Inferno 是一个在贝尔实验室诞生的分布式操作系统,但现在是由 Vita Nuova Holdings 作为自由软件开发和维护。我只是开个玩笑,它并没有被开发或维护。
0.1.1 - Plan 9 不是 UNIX
用 Bell Labs Plan 9 wiki 上话来说:
Plan 9 不是 Unix。如果您将其视为 Unix,当它的工作方式与你所期望的不同时,您可能会因为某些事情没有做到而感到沮丧。如果你把它看作是 Plan 9 呢?你会发现它的大部分都非常有效,而且有一些真正的巧妙的想法使事情比你以前看到的更清晰。
Plan 9 中有许多 UNIX 命令,它们的使用方式类似,这使问题更加复杂。事实上,Plan 9 中的一些用户域(例如 upas 邮件接口、sam 文本编辑器 和 rc shell)被直接转入 Research UNIX 10th Edition。进一步的调查表明,在 Plan 9 中的许多想法在最近的几个 Research UNIX 版本中以更加原始的方法被探索应用。
然而,Plan 9 是一个全新的操作系统,它没有试图遵循过去的偏见。设计的目的(大约在 20世纪80年代后期)是为了避免过去的问题,探索新的领域。Plan 9 不是 UNIX 是有原因的。
阅读:《UNIX to Plan 9 command translation》《UNIX Style》或者《cat -v Considered Harmful》
0.1.1.1 - Plan 9 不是 plan9port
Plan 9 from User Space(也称为 plan9port 或 p9p )是许多来自 Bell 实验室的库、应用程序移植到类 UNIX 操作系统的一个 Plan 9 端口。目前,它已经在各种操作系统上进行了测试,包括:Linux、Mac OS X、FreeBSD、NetBSD、OpenBSD、Solaris 和 SunOS。
Plan9port 由一个组合构成,该组合主要是未更改的 Plan 9 userland utilities pack,并提供各种可用的 UNIX 程序和指令模拟的 Plan 9 的内核集成。有些模拟比其他的更成功。总之,plan9port 并不能准确地代表使用实际的 Plan 9 的体验,但是它提供了足够的功能,使一些用户能够满足于在 Macbooks 上运行 acme。
0.1.1.2 - Plan 9 不是 Inferno
Inferno 也是 Bell 实验室创造的一个分布式操作系统,但现在是由 Vita Nuova Holding 作为自由软件开发和维护。它采用了许多来自 Plan 9 的想法(甚至共享一些源代码),但是是一个完全不同的操作系统。
说明:Inferno 与 Plan 9 共享一些兼容的接口,包括 9P/Styx 协议。
0.1.2 - Plan 9 不是一个产品
Path: utzoo!utgpu!water!watmath!clyde!bellcore!faline!thumper!ulysses!smb
From: <s...@ulysses.homer.nj.att.com> (Steven Bellovin)
Newsgroups: comp.unix.wizards
Subject: Re: Plan 9? (+ others)
Message-ID: <10533@ulysses.homer.nj.att.com>
Date: 23 Aug 88 16:19:40 GMT
References: <846@yunexus.UUCP> <282@umbio.MIAMI.EDU> <848@yunexus.UUCP>
Organization: AT&T Bell Laboratories, Murray Hill
Lines: 33
Plan 9 不是一个产品,也不打算成为产品。这是一种研究 —— 一种不同计算方法的实验研究。开发人员从几个基本的假设开始:cpu 很便宜,但是我们真的不知道如何有效地把它们结合起来;良好的网络非常重要;智能用户界面(配有点映射显示器和鼠标)是一个正确的决定;现有的网络系统、鼠标等,没有用正确的方式来做工作。特别是今天,在美国,工作站不是解决之道。(不,我懒得解释他们的全部理由;那要一篇很长的文章)最后,作为一种严肃的研究操作系统结构的工具,UNIX 系统本身已经死了,它已经发展得太大了,而且被15年多的历史束缚得太紧了。
现在,考虑到这些假设,他们决定抛弃我们现有的东西,设计一个新的系统。兼容性不是问题 —— 它们不属于产品制造业务。(他们也不是在“让我们做另一个聪明的黑客”业务。)当然,Plan 9 的某些方面与 UNIX 系统非常相似—— Pike、Thompson 等人认为这是一个值得遵循的良好模型,这是否令人感到惊讶?但是Plan 9不是、也不打算是UNIX系统的重新实现。如果需要,可以称之为类 UNIX 系统。
Plan 9 会被发行吗?我不知道。它会被埋没吗?我希望不是这样。大公司不只是为了声望而赞助大型研究机构;他们希望以能够制成(或纳入)产品的概念的形式(最终)获得具体的回报。
—— Steve Bellovin
免责声明:本文当然不是 AT&T 的官方声明。它也不是 Plan 9 背后原因的官方声明。我真的这么认为,不过这是准确的,我相信如果我错了,别人会告诉我的……
0.1.3 - Plan 9 不适合你
坦诚来说,今天美国“计算机专家”认为计算机必不可少的的许多功能(javascript,CSS,HTML5 等)在 Plan 9 中要么不存在,要么或故意被排除在操作系统外。您可能会发现这是 Plan 9 纳入您的日常工作流程的一个不可接受的障碍。如果你无法想象在不使用网络浏览器的情况下如何使用电脑,那么 Plan 9 可能不适合你。
参见:http://harmful.cat-v.org/software/
0.2 - 为什么要有 Plan 9
你可能会问自己,我是怎么来到这里的?用 Plan 9 的贡献者 Russ Cox 的话来说:
为什么要有 Plan 9 呢?Plan 9 不就是另一个 Unix 克隆吗?谁在乎呢?
Plan 9 提供了一致且易于使用的接口。一旦你已经你已经习惯了它,就不会有什么惊讶的了。在我从 Windows 3.1 转到 Linux 之后,我注意到 Windows 3.1 中各种各样的不一致行为都是 Linux 所没有的。从 Linux 切换到 Plan 9 时这种感觉就像当初转到 Linux 时同样明显。
Plan 9 能够做到这一点的一个原因是,Plan 9 团队已经拥有了一个完整的体系,因此问题可以得到解决、功能可以添加到它们所属的地方,而不是它们可能在的地方。例如,内核中没有 tty 驱动程序,窗口系统处理终端输入的细微差别。
如果 Plan 9 只是一个十分干净的 Unix 克隆,那么它可能值得使用,也可能不值得使用。但在它的用户级文件服务器和每个进程的名空间中开始发生一些奇妙的事情。在 Unix 中,/dev/tty
指的是当前窗口的输出设备,对不同的进程有不同的含义,这是内核为单个文件启用的一种特殊处理。Plan 9 提供了完整的所有进程的名空间。在 Plan 9 中,/dev/cons
还指当前窗口的输出设备对不同进程表示的不同内容,但是窗口系统(或 telnet daemon、ssh daemon 或其他进程)会安排这些内容,并对/dev/mouse
、/dev/text
(当前窗口的内容)等执行相同的操作。
由于文件树的片段可以由用户级服务器提供,因此内核不需要知道诸如 DOS 的 FAT 文件系统或 GNU/Linux 的 EXT2 文件系统或 NFS 等。相反,用户级服务器在需要时提供此功能。在 Plan 9 中,甚至将 FTP 作为文件服务器提供:您运行 ftpfs,服务器上的文件出现在/n/FTP
中。
但是,我们不需要停留在物理文件系统上,其他文件服务器同步表示其他资源的文件。例如,upas/fs
将您的邮箱作为文件树在/mail/fs/mbox
上显示。该模型特别适用于 MIME 消息的递归结构。
另一个例子是,cdfs 将音频或数据 CD 表示为文件系统,每个音轨一个文件。如果是可写 CD,将新文件复制到/mnt/cd/wa
或/mnt/cd/wd
目录确实会创建新的音频或数据轨道。想要将 CD 固定为音频或数据?删除其中一个目录即可。
Plan 9 适合于网络环境,文件树和目录树可以从其他机器导入。所有资源都是文件树或目录树,很容易共享资源。想要使用不同机器的声卡吗?Import
它的/dev/audio
。想要调试在另一台机器上运行的进程吗?Import
它的/proc
。想要在另一台机器上使用网络接口吗?Import
它的/net
。以此类推。
—— Russ Cox
0.2.1 - 人们喜欢 Plan 9 的什么
Plan 9 的长期用户 Charles Forstyh,Anthony Sorace 和 Geoff Collyer 的描述:
https://9p.io/wiki/plan9/what_do_people_like_about_plan_9/index.html
0.2.1.1 - 您将用 Plan 9 做什么
如果您不知道这有什么用
那它不适合你
参阅:FQA 8 - 使用 9front
0.2.2 - 人们讨厌 Plan 9 的什么
John floren 提供了幽默(?)的概述,表现新用户对 Plan 9 的典型反应:
嗨!我是 Plan 9 的新手。我很高兴能使用这个新的 Linux 系统。
我遇到了几个问题。
- 如何运行 X11?
- Emacs 在哪里?
- 代码很奇怪。 它看起来根本不像GNUC。编写 Plan 9 的人是否了解 C?
- 我尝试运行 mozilla,但没有成功。怎么来的?
你是这个家伙吗?
相关:http://9front.org/buds.html
0.2.2.1 - Plan 9 中没有什么
Plan 9 中可能缺少的常见功能的摘要:
http://c2.com/cgi/wiki?WhatIsNotInPlanNine
0.2.3 - 为什么 Plan 9 的创造者们放弃了 Plan 9
直到2002年左右,我一直在贝尔实验室运行 Plan 9 作为我的日常工作环境。那时,两个事实非常痛苦。首先,互联网是存在的。第二,Plan 9 没有跟上网络浏览器的希望。将 Mozilla 移植到 Plan 9 的工作量很大,因此,我几乎将所有 Plan 9 用户级软件移植到了 FreeBSD,Linux 和 OS X。
Russ Cox(再次):
在这里为 Plan 9 爱好者建立的标准似乎是从 User Space 运行 Plan 9 的 Mac 或 Linux 计算机,以获取 sam,acme 和其他工具。Rob,Ken,Dave 和我都使用 Mac 作为我们的台式机,但是我们有点例外。大多数 Google 工程师都使用 Linux 机器,而且我认识许多贝尔实验室的人,他们很高兴在这些机器上使用 sam 或 acme。我自己的设置是两个屏幕:第一个是具有非 Plan 9 应用程序和少数 9terms 的标准 Mac 桌面,第二个是完成工作的全屏 acme。在 Linux 上,我做同样的事情,但是第一个屏幕是运行 rio(以前是 dhog 的 8½)的 Linux 桌面。
更广泛地说,每隔几个月我就会收到一封高兴的电子邮件,该邮件很高兴刚发现 sam 仍在维护并且可用于现代系统。这些人很多时候只在 Unix 上使用过sam,而从未在 Plan 9 上使用过。plan9port.tgz 文件2009年被从2522个唯一IP地址下载,我怀疑这比 Plan 9 本身下载量还多。从这个意义上讲,很高兴看到这些工具的使用范围比以前大得多。
许多年来,我已经不登录真正的 Plan 9 系统,但是当我想提醒自己一个真正的Plan 9工具是如何工作时,我偶尔会使用 9vx。回来总是很高兴,但也是很短暂。
——Russ
Russ Cox(继续):
>您能否简要介绍一下您们(Russ,Rob,Ken 和 Dave)不再使用 Plan 9 的原因?
>是因为缺少应用程序还是因为缺少硬件驱动程序?
>而且您仍然使用 venti 吗?操作系统和编程语言具有强大的网络影响:它有助于您使用周围所有人都使用系统。在我在麻省理工学院(MIT)的小组中,这指的是 FreeBSD 和 C++。在麻省理工学院的头几年,我使用 Plan 9,但由于缺乏共享系统而无法协作,因此放弃了。当我切换到 FreeBSD 时,我移植了所有的 Plan 9 库和工具,这样我就可以保留其余的用户体验。
我仍然使用 venti,因为我仍然维护我在 MIT 的旧团队负责的后台服务器。它使用 plan9port venti,vbackup 和 vnfs,它们都在 FreeBSD 上运行。venti server 本身是我最后一次真正的 Plan 9 安装。它是 Coraid 的硬件,但我剥离了软件,并安装了自己的 Plan 9 内核以直接在其上运行venti。但是在我离开麻省理工学院之前,我做的最后一件事是使用 FreeBSD 重新安装计算机,以便其他人可以帮助保持其最新状态。
如果我不与其他人进行交互,那么继续使用 Plan 9 是很好的选择。但是,能够使用现成的软件而不是重新发明轮子(在 Linux 上运行 9fans)并且拥有良好的硬件也很好。由其他人提供的支持(我可以关闭笔记本电脑,使其进入睡眠状态,甚至更好,当我再次打开笔记本计算机时,它会唤醒!)。 通过从用户空间运行 Plan 9 能够获得这些东西并仍然保留大多数 Plan 9 用户体验,这是一种折中,但是对我来说效果很好。
——Russ
Russ 所说的是对的,但对我来说更简单。 加入 Google 后,我将 Plan 9 作为本地操作系统使用了大约一年,但是在没有 C++ 编译器,没有良好的NFS 和 SSH 支持,尤其是没有 Web 浏览器的机器上使用它实在是太不方便。 我改用 Linux,但是发现它有很多问题(主要问题很可能是图形板和/或驱动程序不正确,但仍然存在其他问题),而我的主要合作者(Robert Griesemer)已经做了基础工作,使 Mac 可以作为主要计算机。在 Google 内部,Russ 拥有了 plan9port ,所以我很高兴地将 plan9port 推到了 Mac 上,并且从那以后就一直在那里。如今,苹果已被正式支持,因此变得容易、可行。
我很想念 Plan 9 为我所做的很多事情,但是工作上的顾虑克服它。
——rob
0.2.3.1 - 为什么 Plan 9 的用户们放弃了 Plan 9
他们可能有自己的原因。(译者:你问我,我问谁?)
0.2.3.2 - 为什么 CIA 放弃了 Plan 9
https://www.muckrock.com/foi/united-states-of-america-10/foia-cia-plan-9-frombell-labs-82547/
0.2.4 - Plan 9 的奇怪许可证怎么处理
多年来,Plan 9 已在各种许可下发布,这使许多人感到震惊。
第一版于1992年发行,仅提供给大学。 获取软件的过程很复杂,容易出现笔误。 许多潜在的用户在合理的时间内无法获得它,最终的 Plan 9 Internet mailing list 上也表达了很多抱怨。
第二版于1995年以书本和 CD 的形式在相对标准的商业许可下发行,可通过邮购和特殊电话号码获得,价格约为350美元。 它肯定比第一版更容易获得,但是许多潜在用户仍然抱怨价格太高,并且许可证过于严格。
0.2.4.1 - Richard Stallman 讨厌 Plan 9 的许可证(大约在2000年)
在2000年,第三版最终在定制的“开源”许可证下发布(即“Plan 9 许可证”)。Richard Stallman 没有留下深刻的印象:
当我看到 Plan 9 软件已经作为“开源”发布时,我想知道它是否也可能是免费软件。研究了许可证之后,我的结论是它不是免费的。许可证包含一些自由软件迁移完全不可接受的限制。
(见:http://www.gnu.org/philosophy/free-sw.html)
在此处阅读更多信息:http://www.linuxtoday.com/developer/2000070200704OPLFSW
0.2.4.2 - Theo de Raadt 讨厌 Plan 9 的许可证(大约在2003年)
在2002年,根据朗讯公共许可证发布了 Plan 9 的第四版许可证。这次,Theo de Raadt 没有留下深刻的印象:
在 BSD 项目中使用新许可证是绝对不可接受的。实际上,我很惊讶 OSI 宣布这样的许可证可以接受。那不是免费的许可证。这是具有后果的“合同”; 让我说清楚 —— 这是一份我不愿接受的具有后果的合同。
在此处阅读更多:http://9fans.net/archive/2003/06/270
0.2.4.3 - 每个人都讨厌 Plan 9 的许可证(大约在2014年)
2014年,Plan 9 的部分源代码再次被重新许可,这次是在 GPLv2 下,再分发给加州大学伯克利分校的 Akaros 操作系统。可以预见的是,各方都没有留下深刻的印象。
Russ Cox 通过在 Hacker News 主题中发表评论来试图弄清这种情况:
当您问“大公司 X 为什么对许可或 IP 做出奇怪的选择 Y ”时,百分之九十九的答案是“律师”。 如果 Plan 9 小组得以实现,Plan 9 将在2003年根据类似于 MIT 的简单许可证(用于其他代码段的许可证,例如一个真正的 awk)免费发布,而不是创建朗讯公共许可证。或者在2000年而不是创建“ Plan 9 许可证”。或者是在1995年,而不是一张350美元的书 + CD,并附有供整个“组织”使用的许可证。或者是在1992年,而不是限量发行。
值得庆幸的是,我再也不在朗讯公司工作,也不愿意接受遭受折磨的谈判计划,最终导致“加州大学伯克利分校”因明显微不足道的妥协而最终遭到 GNU 通用公共许可证版本2下的、以前曾发行过所有 Plan 9 软件的朗讯公共许可证版本1.02的约束。” 但是,如果说答案是一个单词“律师”,那真是令人难以置信。
一些人认为,对许可的困惑可能是导致 Plan 9 无法在更广泛的计算机世界中取代 UNIX 的原因。
0.2.4.4 - 赞扬 9FRONT 大胆行动:重新许可
除非另有说明,否则 9front 对 9front 所做的任何添加或更改(记录在 Mercurial 历史记录中)均根据 MIT 许可条款提供,并复制在文件/lib/legal/mit
中。
0.3 - 进一步阅读
0.3.1 - Plan 9 论文
这里是描述了 Plan 9 操作系统的学术论文:
0.3.2 - 手册页
第(1)节:通用的公共可访问命令
第(2)节:库函数,包括系统调用
第(3)节:内核设备(通过 bind(1) 访问)
第(4)节:文件服务(通过挂载访问)
第(5)节:Plan 9 文件协议
第(6)节:档案格式
第(7)节:数据库和数据库访问程序
第(8)节:与管理 Plan 9 有关的事项
0.3.3 - 网页
Plan 9 项目的官方网站位于:http://9p.io/plan9/
Bell 实验室 Plan 9 Wiki:https://9p.io/wiki/plan9/plan_9_wiki/
可以在 http://cat-v.org 上找到许多有关 UNIX,Plan 9 和一般软件的有价值的信息。
0.3.4 - 书籍
《Introduction to OS Abstractions Using Plan 9 From Bell Labs》 作者:Francisco J Ballestros(nemo)
《Notes on the Plan 9 3rd Edition Kernel》 作者:Francisco J Ballestros(nemo)
《The UNIX Programming Environment》 作者 Brian W. Kernighan(bwk) 和 Rob Pike(rob)(这本书是 Unix 的最清晰,简洁和雄辩的表达和当今的“工具哲学”)
《9FRONT DASH 1》(您正在阅读的文档,以书本形式)
fqa0的更多相关文章
随机推荐
- Visual Studio 常见问题
VS 2013相关问题 VS 2013 Ultimate Update 5 下载地址: 英文版: vs2013.5_ult_enu.iso SHA-1:918EA4A911858D32C9771480 ...
- 【MySQL 原理分析】之 Trace 分析 order by 的索引原理
一.背景 昨天早上,交流群有一位同学提出了一个问题.看下图: 我不是大佬,而且当时我自己的想法也只是猜测,所以并没有回复那位同学,只是接下来自己做了一个测试验证一下. 他只简单了说了一句话,就是同样的 ...
- 使用脚本+kafka自带命令行工具 统计数据写入kafka速率
思路 每隔一段时间(比如说10秒)统计一次某topic的所有partition的最大offset值之和,这便是该topic的message总数. 然后除以间隔时间就可以粗略但方便得出 某topic的数 ...
- Codeforces_845
A.排序,比较中间两个大小. #include<bits/stdc++.h> using namespace std; ]; int main() { ios::sync_with_std ...
- [redis读书笔记] 第一部分 数据结构与对象 对象特性
一 类型检查和多态 类型检查,即有的命令是只针对特定类型的,如果类型不对,就会报错,此处的类型,是指的键类型,即robj.type.下面为有类型检查的命令: 对于某一种类型,redis下底层的实 ...
- pytorch之 RNN regression
关于RNN模型参数的解释,可以参看RNN参数解释 1 import torch from torch import nn import numpy as np import matplotlib.py ...
- pinpoint 修改hbase表TTL值
操作步骤 查找出数据大的hbase表 root@990fb5560f64:/opt/hbase/hbase-# ls CHANGES.txt LICENSE.txt README.txt conf h ...
- MATLAB添加工具箱及无法连接到MathWorks问题
版本信息:官网下载的MATLAB R2019b 学生版 操作系统:Windows 10 在安装MATLAB时,需要我们自行选择要安装工具箱,如何在已安装MATLAB后添加当初没有选择安装的工具箱呢?第 ...
- Flutter Widgets 之 FutureBuilder
注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 展示异步任务状态 当有一个Future(异步)任务需要展示 ...
- Vue-20190623点滴
Vue-20190623点滴 推荐黄奕同学vue的学习方式和过程. https://juejin.im/post/5b18d2d7f265da6e410e0e20 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ ...