|: 内容划分,用于将几个其他类型元素组合在一起,有一定间距
* |
|: 另一个分组元素,但用于将文本短语包装在另一个元素中,通常仅
限于应用于文本内容的特定部分的特定格式
7) 处理一些 CSS
缺少 CSS(*C*ascading *S*tyle *S*heets,层叠样式表)网页就像没有裱花的蛋
糕。虽然也可以吃,但是索然无味。
CSS 使得我们可以将样式的属性,如:背景色、字号、宽度、长度和HTML元素关联
起来。
样式属性告知浏览器如何渲染对应的效果。和 HTML 一样,CSS 并不是一门编程语
言,它并不具备行为,但是可以给 HTML 骨骼添加样式。
让我们看看如何给 HTML 添加 CSS 样式,有三个重要的部分:
*CSS选择器:* 标记我们需要添加样式的 HTML 元素
*CSS属性名:* 我们要添加到响应的 HTML 元素的特定样式属性的名称
*CSS属性值:* 我们要应用的样式属性的值
以下是将这三个部分组合在一起来定义一个段落的颜色的字体大小:
|p {
color: red;
font-size: 12px;
}
|
让我们从头开始,在花括号之前是 CSS 选择器。在示例中*p*代表的是||
(paragraph)这个 HTML 标记。也就是说网页中所有|
|标签都要应用这个样式。
我们来看看花括号里面发生了什么——我们想要应用到目标元素的样式。
CSS 属性和值用冒号隔来。属性(示例中的 “color” 和 “font-size”)在左手
边,属性的值(示例中的 “red”“12px”)在右手边。每一个属性名/值对由一个分
号结尾。
你应该已经看出来这是如何运作的,CSS 代码块告诉浏览器使用红色、字号为
12px 样式来修饰|
|内的内容。
那 HTML 如何包含这些 CSS 样式呢?使用|| HTML 标签。通常,会有一个
独立的 CSS 文件(*.css*文件)。也就意味着我们需要引入到 HTML 文件中,这
样浏览器才会知道 CSS 文件的存在。
||标签就服务于这个目的。我们在|
|部分加入||元素,特指需
要被引入的 CCS 文件:
|
My Page Title
|
在这个示例中,我们使用 *href* 标签来引入 CSS 文件://home/style.css/。
在接下来的三个部分,我们(终于)要进入编程语言了!
我们将大概介绍一个 JavaScript、Python 和 Java 以及一些重要的编程概念。我
们将通过代码示例来比较三种语言的相同和不同,给你进一步了解这三种语言打下
基础。
8) 由 JavaScript 开始编程
让我们先回答这个问题:如果 HTML 是网页骨架、CSS 是样式,那我们还需要
JavaScript 做什么?
答案是我们可以不需要 JavaScript,一个样式好看的静态网站已经足够,所以只
需要 HTML 和 CSS 就够了。
这个答案的关键词是“静态”,如果想要给网页添加一些动态效果的话,如改变文本
或者添加更为复杂的用户交互,我们就需要使用 JavaScript。
什么是 JavaScript?
JavaScript 到底是什么呢?JavaScript 是专为互联网和网站而创建的编程语言。
在第二部分我们提到过,大多数编程语言要么就是被编译要么就是被解释,程序基
本上独立运行。
JavaScript 在这点上有些与众不同,它被设计为直接在网络浏览器内部运行,我
们可以编写代表一组行为的代码,直接在网页上执行,使得网站更加动态。
你可以使用后缀为|.js|的文件来编写 JavaScript 代码或者直接在 HTML 的|
|
当网页在浏览器中显示时执行时,会从这个文件中加载 JavaScript 代码。
一旦熟悉了 JavaScript 的技巧,你可以尝试搭建一些简单的初学者项目
来
进一步练习。
9) 使用 Python 继续编程
我们已经学习了基础的 JavaScript 知识,这时开启一门新的语言十分有用,这门
语言就是—— Python。
大多数语言都具备一套同样的功能,包含:变量、算术运算符、if/else 语句、循
环和函数。
比较不同的语言如何实现同样的功能对于我们的学习十分有帮助。概念通常是相似
的,但是语法(如何编写代码)有些微不同。
什么是 Python?
我们先来介绍一下 Python 的背景知识。和 JavaScript 一样,Python 也是一种
高级编程语言,并且在设计上将“易开发”优先于“执行快”。
我认为 Python 是最适合初学者学习的编程语言之一。Python 的语法十分简洁并
且符合直觉。Python 在开源和商业领域都非常受欢迎。
我们对比过编译型语言和解释型语言,Python 是一门解释型语言。运行 Python
程序的时候,*Python 解释器*会主动处理并逐行在机器上执行代码。
和编译型语言不通的地方在于,编译型语言会先使用编译器将代码优化成更容易执
行的形式,然后再执行。
和 JavaScript 不同的是,Python 并不是直接在浏览器中运行的代码。Python 被
创建为一种便捷的 /脚本语言/——一种可用于执行任意任务的代码,通常在用户的
本地计算机上执行。
Python 代码可以在任何安装了 Python 解释器的计算机上执行。它是一种常用的
脚本语言,但也广泛用于数据科学和服务器端的应用程序。
Python 中的变量与赋值
和 JavaScript 一样,Python 也可以声明变量。可以直接使用等号来进行声明和
赋值:
|x = 10
y = "cheese"
|
Python 和 JavaScript 在定义变量的时候有两点不同:在 Python 中不需要使用|
let|关键字,也不需要在每行结尾添加分号。
Python 使用一组基于空格和缩进的语法规则。就不需要终止字符:分号;也不需
要使用花括号来代表代码块。
Python 的数据类型
Python 也有一组数据类型,我们可以将它们分配给变量。这些包括整数、浮点数
(小数)、字符串、列表和字典。
整数、浮点数和字符串与 JavaScript 的相同,所以就不赘述。
Python 中的布尔值与 JavaScript 非常相似,只是关键字 True 和 False 必须大写:
|x = True
y = False
|
程序流控制声明
与 JavaScript 一样,Python 也流控制语句集,但语法略有不同。
If / Else 语句
JavaScript |if/else|示例的等价 Python 示例如下:
|x = 10
if ( x > 5 ):
print('X is GREATER than 5!')
else:
print('X is NOT GREATER than 5!')
|
我们先定义一个名为 /x/ 的变量并并赋值为 10,紧接着是|if|语句。因为括号内
部的条件被评估为|True|,|if|语句后缩进的代码被执行。我们便看到屏幕上打印
出 “X is GREATER than 5!”。
在 Python 中|print()|函数打印内容。
同时也要注意|else|语句,如果 /x/ 条件为|False|,就会打印另外的语句。
Python 代码和我们之前看到的 JavaScript 代码有两大不同:Python 使用冒号而
不是花括号来指示|if|语句的开始。
另外,在 Python 中|print()|函数的缩进对代码效果有影响。在 JavaScript
中,语句之间的缩进或空格无关紧要,因为JavaScript使用花括号标识代码块并使
用分号标识语句的结尾。但是在这个Python 示例中,没有分号,也没有大括号!
这是因为 Python 实际上使用空格和换行符来标识语句和代码块的结尾。
冒号告诉 Python 解释器,|if|引导的代码块开始了。|if|之后的代码块必须缩
进。(通常 1 tab = 4 空格)这样 Python 解释器才知道 |if| 的代码块在哪
里。下一个未缩进的行意味着|if|代码块的结束。
While 循环
接下来我将讨论 Python 中的 while 循环。Python 中的 |while|循环大体和
JavaScript 中的一致,但是语法有所不同:
|x = 1
while ( x <= 100 ):
print('This is a very important message!')
x = x + 1
print('This is not in the loop!')
|
和 JavaScript|while|循环不同的地方在于:
* 在定义变量的时候没有使用|let|
* 行末没有使用分号结束
* 用冒号取代花括号
* 循环内的代码块必须缩进
我们在循环之外打印了一条附加消息,以表明未缩进的代码行不是循环的一部分并
且不会被重复。
我推荐 Python 初学者看一下Python 的禅意 ,这篇文章介绍了编写 Python 代码的 20 条重要规则。
如果你已经掌握了 Python 的基础,可以尝试搭建一些初学者的 Python 项目
。
10) 进一步了解 Java
我们已经了解了一组高级编程语言,让我们往后退一步,瞧一瞧 Java。
JavaScript 和 Python 实时通过解释器来执行源码。但 Java 是一门编译型语
言,需要编译器(而不是解释器)将 Java 源码转换为计算机可以理解的代码。
大多数编译器会生成一个或多个由机器码组成的可执行文件,这些代码可以在编译
它们的特定操作系统和硬件平台上运行。
但Java特殊的地方在于,它将源码转换为*字节码* ,这和其他编译型语
言生成的的机器码不太一样,Java 字节码需要在 *Java 虚拟器(JVM)* 执行。
可以将 JVM 想象成你安装在电脑的一个程序,这个程序允许你执行 Java 字节
码,当人们谈论 “/是否在电脑安装了 Java/”,他们指的是是否在电脑上安装了
*JVM*。
JVM 和我们在前面章节讨论的解释器的功能类似,但是它没有把源码(存储
在 .java 文件)当作输入,而是把编译过的字节码作为输入。
这种设置的好处是它允许在特定操作系统和平台上编译的字节码由任何其他平台上
的 JVM 执行。
假设我们有一个 Java 代码文件,该文件在运行 Windows 操作系统的计算机上编
写并编译为字节码。这个字节码可以被 JVM 在任何平台上执行(即程序运行),
包括 Windows、Mac OS、Linux 等。
大多数编程语言并非如此,它们只能在编译它们的环境中执行。
Java 中的变量和赋值
Java 和我们之前讨论的语言(Python 和 JavaScript)的一个主要的区别在于
Java 是*静态*语言。
这意味着我们的变量的数据类型必须在程序编译之前就建立并被理解。
每次我们在 Java 代码中创建变量时,都需要显式指定该变量的数据类型,例如整
数、字符串等。这称为变量*声明*。
一旦我们声明了一个变量的数据类型,它就只能在整个程序执行过程中保存该类型
的数据。
这与 JavaScript 和 Python 非常不同,它们的数据类型是在程序执行期间建立
的,也称为*运行时*。因此,像 JavaScript 和 Python 这样的语言被称为*动态
类型语言*——我们不会在源码中明确声明变量数据类型,也可以轻松地将变量动态
地重新分配给任何类型。
在 Java 中声明变量:
|Datatype name = value;
|
|Datatype|指的是我们需要存储的变量类型,如:整数、字符串等。|name|代表变
量的名称,我们会在之后的代码中使用。|value|是我们要赋值给变量的值。注意
和 JavaScript 一样,所有 Java 声明结尾都要使用分号。
Java 中的数据类型
在 Java 中,内置的数据类型被称为*原始*数据类型,因为有 Python 和
JavaScript 的基础,这些数据类型对于我们来说,看起来非常熟悉。主要的原始
类型有:
* 整数 |int|:存储 −2,147,483,648 到 2,147,483,647之间整数。
* 浮点数 |float|:存储 3.4x10^−038 到 3.4x10^038之间的浮点数。
* 布尔值 |bool|:存储|true|或|false|。
请注意,还有一些其他的原始类型(short、long、byte 和 double)我们不会在
这里介绍,因为不经常使用。以下展示我们如何初始化这些数据类型:
整数: |int x = 100;|
浮点数: |float pi = 3.14;|
字符: |char middleInitial = 'T';|
布尔值: |bool isHuman = true;|
我必须重申,一旦声明了变量的数据类型,该变量就只能保存指定数据类型的值。
例如,如果我们的程序试图将字符值存储在声明为整数的变量中,则会引发错误。
在前面的示例中,我们不能将字符 “S” 分配给整数变量 /x/。
我们将讨论的下一个数据类型是字符串——表示为文本数据的一系列字符、数字或符号。
Java 中的字符串是一种非原始数据类型,这意味着它们是由较小的部分组成的。
要声明一个字符串变量,我们使用 String 数据类型并将分配的值放在双引号中:
|String name = "Harry Potter";
|
Java 中的程序流控制语句
与 JavaScript 一样,Java 使用花括号来定义|if|语句、循环和函数的代码块。
我们将使用前几章程序控制语句,但改写成 Java 语法。
If / Else 语句
用 Java 语句编写上问的 if/ else:
|int x = 10;
if ( x > 5 ) {
System.out.println("X is GREATER than 5!");
} else {
System.out.println("X is NOT GREATER than 5!");
}
|
这里的|if|例子几乎和 JavaScript一样,唯二不同是我们声明了 /x/ 的数据类型
为|int|以及我们使用了 |System.out.println()| 而不是 |console.log()|来打
印消息。
接下来,我们将讨论 Java 中的循环。Java 和 JavaScript 语法非常相似,所以
Java 中的|while|循环与我们在 JavaScript 中看到的基本相同:
|int x = 1;
while ( x <= 100 ) {
System.out.println("This is a very important message!");
x = x + 1;
}
|
这个|while|循环将打印出指定的消息 100 次。
我们介绍编程语言的部分到此结束。由于我们使用相同的概念集介绍3种语言,因
此可能稍显重复,但希望这有助于为你打下坚实的基础。
接下来我将介绍一些其他相关话题,你不需要立刻就开始学习这些主题。
我们将讨论一个名为 Git 的重要协作工具,然后我们将学习在数据库中存储和访
问数据。接下来我们将简要介绍 Web 开发框架,最后我们稍微了解包管理器。
11) 使用 Git 跟踪代码
Git 是在最流行的版本控制系统(VCS)。它允许多个开发人员一起协作开发软
件。在本节中,我们将了解 Git 是什么、它是如何工作的以及如何操作它的基本
命令。
在直接进入 Git 之前,让我们补充一些编程项目共有的概念。
一个软件项目的全部目录和文件被称为*代码库*。*项目根*是项目目录树中最高级
别的文件夹。代码文件可以直接在项目根中,也可以被组织到多个级别的文件夹中。
当代码库准备好进行测试或部署时,它可以被*构建*成将在你的计算机上运行的程
序。*构建过程*可以包括一个或多个步骤,这些步骤将人类编写的代码转换成可以
被计算机处理芯片可执行的文件。
构建代码后,程序就可以在特定操作系统上运行,例如 Linux、Mac OS 或 Windows。
随着时间的推移,开发人员会更新项目代码以添加新功能、修复错误、实施安全更
新等。一般来说,开发人员可以通过三种方式对软件项目更改:
1. 将新文件和文件夹添加到项目中
2. 编辑现有文件和文件夹中的代码
3. 删除现有文件和文件夹
随着项目的壮大和新功能的添加,文件和文件夹的数量(以及其中的代码量)也会
增加。大型项目可以壮大到包含数百万行代码的数十万个文件。
为了支持这种增长,项目团队的开发人员数量通常会增加。大型软件项目可能有数
百甚至数千名开发人员协同工作。
这就引出了问题:“/这些分布在世界各地的开发人员到底是如何跟踪他们的软件项
目代码,以便他们可以在一个项目上一起工作?/”
开发团队需要准确跟踪对代码进行了哪些更改,哪些文件或文件夹受到了影响,以
及是谁进行了每次更改。每个开发人员得能够获得其他开发人员的更新。
此过程称为*版本管理(versioning)*或*版本控制(version control)*。开发
人员使用称为*版本控制系统*(VCS)的特殊工具来跟踪、管理和共享软件项目的
版本。以下是一些流行版本控制系统:
* Git
* Subversion(SVN)
* Mercurial(Hg)
Git 赢得了 VCS 的桂冠。迄今为止,它是被全球政府、商业和开源社区使用。
Git 促成了基于 Web 的 VCS 平台(如 GitHub 和 Bitbucket)的流行。对于任何
全面发展的开发人员来说,Git 是一个必须要添加到技能包里必不可少的工具。
基本 Git 命令
Git 在 *Git 仓库*中创建和存储有关我们软件项目的信息。Git 仓库只是计算机
上的一个隐藏文件夹,Git 使用它来存储有关软件项目中代码文件的数据。
我们使用的每个软件项目通常都有自己的 Git 仓库,用于存储与该项目相关的信
息。这样,可以单独跟踪与单个计算机上的不同项目相关的代码。
在计算机上创建 Git 仓库有两种主要方法。第一个是在文件系统的现有文件夹中
创建一个全新的 Git 仓库。
只需打开命令行,在桌面创建一个新文件夹,然后进入:
|cd ~/Desktop
mkdir testgit
cd testgit/
|
现在我们创建了一个新文件夹并进入它,我们可以使用以下命令初始化一个新的
Git 仓库:
|git init
|
应该会看到类似于以下内容的输出:
|Initialized empty Git repository in /Users/me/Desktop/testgit/.git/
|
我们要运行的所有 Git 命令都以|git|开头,接着一个空格,然后是我们要运行的
具体Git命令。有时我们也会在 Git 命令后面添加标志和参数。
|git init|命令在当前目录下创建一个名为|.git|的隐藏文件夹。这个文件夹就是
我们上面提到的 Git 仓库。你可以通过运行|ls -al|命令来查看。
获取 Git 仓库的第二种方法是从其他地方下载一个,例如 Bitbucket 或 GitHub。
Bitbucket 和 Github 是允许人们托管开源项目的网站,可以将项目下载到你的电脑。
如果你在 Bitbucket 或 GitHub上浏览到一个你感兴趣的项目,你会看到一个标有
Clone 的按钮。这个按钮会给你提供一个命令和 URL,你可以把它复制并粘贴到命
令行终端:
|git clone https://jacobstopak@bitbucket.org/jacobstopak/baby-git.git
|
|git clone|命令从指定的 URL 下载版本库到你电脑上的一个新文件夹。这个 URL
可以是上面例子中的网页 URL,也可以是 SSH URL,如下所示:
|git clone git@bitbucket.org:jacobstopak/baby-git.git
|
运行|git clone|命令后,你应该会看到创建了一个新文件夹。如果浏览它,将看
到你下载的项目的所有文件和子文件夹。
接下来我们要提到的命令是|git add |。|git add|命令用来告诉
Git 我们想让它跟踪哪些文件,并把已经跟踪的文件的改动添加到 Git 的*暂存区
域*。
一旦新文件或更改的文件被暂存,就可以用`git commit -m "Commit message" 命
令将它们提交到仓库。将在 Git 仓库中存储所有暂存文件的更改。
使用|git status|和|git log|命令可以查看工作目录的当前状态和项目的提交历史。
我们在这里只触及了表面,Git 还有很多必要的命令 值得我们去熟悉。
12) 使用数据库和 SQL 来存储数据
数据库是专门用于有效存储、更新、检索和删除大量数据的程序。简而言之,我们
可以把数据库看成是一组表格的容器。
你可能使用过 Microsoft Excel 中的表格。表只是一组包含数据的列和行。我们
可以在数据库中设置表格来存储我们的程序正常工作所需的信息。
无论我们是用 JavaScript、Python、Java 还是其他语言编写程序,我们都可以根
据需要,告诉我们的程序与数据库交互。
我们可以从数据库中检索数据,在网页上显示给我们的用户。我们可以接受一个用
户的网络注册表,并将该用户的信息存储在数据库中供以后使用。
程序可以在运行时与数据库进行实时互动。要做到这一点,大多数数据库使用一种
叫做 *SQL* 的语言,即*结构化查询语言*的简称。
SQL 是一种专门为数据库创建的编程语言。可以通过 SQL 告诉数据库要做什么。
一段SQL代码称为*查询(query)*。我们可以编写 SQL 查询来获取我们在特定时
间需要的数据,或者将新数据插入到特定的表中。粗略地说,有两种主要的 SQL
查询类型:*read-SQL* 和 *write-SQL*。
read-SQL 是一种简单地从数据库中获取数据供我们查看或使用的查询。它完全不
改变数据库中的数据。
write-SQL 要么在表中插入新数据,要么更新现有数据,要么删除现有数据。我们
将在本节中学习如何编写一些基本的 read-SQL 查询。
在编写查询之前,我们要知道我们编写的查询的是什么! 传统的数据库是由列和行
组成的*表*。当我们写一个 read-SQL 查询时,我们的目标通常是检索这些行和列
的一个子集。
例如,假设我们有一个名为|PERSON|的表,有4列,|FIRST_NAME|和|LAST_NAME|。
我们可以使用下面的查询,只从|FIRST_NAME|列中选择所有数据。
|SELECT FIRST_NAME FROM PERSON;
|
SELECT关键字告诉数据库我们要检索数据。后面接着我们想要查询的列名FIRST_NAME。
然后我们使用 FROM 关键字告诉数据库要从哪个表中获取数据,在本例中为
PERSON 表。另外,请注意所有 SQL 命令都以分号结尾。
我们对数据最常见的要求之一是对其进行过滤。过滤意味着根据指定的条件来限制
结果集。
例如,我们可能只想从|PERSON|表中选择名为 “PHIL” 的人的记录。我们可以使
用|WHERE|关键字在 SQL 查询中应用过滤器。
|SELECT * FROM PERSON WHERE FIRST_NAME = 'PHIL';
|
这个查询将返回|PERSON|表中的所有列,因为我们在|SELECT|子句中使用了星号|
*|,而没有列出具体的列名。只有|PERSON|表中|FIRST_NAME|被设置为 “PHIL” 的
记录才会被检索出来。
最后,我们来谈谈排序问题。有很多时候,我们希望看到查询结果以特定的顺序进
行排序。可以使用|ORDER BY|子句来实现这一点。
|SELECT *
FROM PERSON
ORDER BY LAST_NAME;
|
这将返回|PERSON|表中的所有列,按姓氏的字母顺序排序。
默认情况下,结果将按升序排序,从 A 到 Z。我们可以添加可选的|ASC|或|DESC|
关键字,以指定是按升序还是降序排序。
|SELECT *
FROM PERSON
ORDER BY LAST_NAME DESC;
|
13) 阅读 Web 框架和 MVC
很多时候,我们是在为非常常见的应用程序类型编写代码。Web 应用程序(或称
*Web Apps*)是依靠互联网来运作的应用程序。Web 应用程序便是最常见的软件应
用程序类型之一。
Web 应用程序本质上是一个功能更强大的网站。大多数 Web 应用程序实现了一些
网络服务器上的后端代码,并在幕后执行逻辑,以支持应用程序的功能。
Web 应用程序后端代码使用的常见编程语言包括 Python、Java 和 JavaScript 等。
Web 应用程序共有的一些功能包括:
* 提供一种方便的方式来动态更改网页上的内容
* 通过登录页面执行安全用户身份验证
* 提供强大的应用程序安全功能
* 读取和写入数据到数据库
Web 框架是一组代码库,其中包含所有 Web 应用程序可以开箱即用的常用功能。
Web 框架为开发人员提供了一个系统来构建他们的应用程序,使用框架就不必担心
Web 应用程序常见的许多幕后任务的编写代码。
我们只需要利用框架中满足 Web 应用程序需求的部分即可。
例如,如果我们不需要连接到特定 Web 应用程序中的数据库,我们可以忽略数据
库功能并使用我们确实需要的其他功能。
我们可以定制应用程序的网页、用户流和业务逻辑。你可以把 Web 框架看成是一
个编程工具包,我们可以用它来构建 Web 应用。
本文中所涉及的编程语言都有一个或多个流行 Web 框架。它让开发团队可以灵活
地使用他们最精通的语言的框架。
Java 有 Spring 框架,通过 *Spring Boot* 使得开发变得方便。Python 有
*Django* 框架。JavaScript 有 *Node.js* 运行环境,包括 *Express.js* 和
*Meteor.js* 等多个框架选项。这些框架都是免费和开源的。
14)玩转包管理工具
本指南的最后一个主题是*软件包管理器*。根据环境的不同,*包*可以代表一个准
备安装在计算机上的独立程序,也可以代表一个我们想在某个软件项目中利用的外
部代码库。
我们的应用程序经常依赖这些外部代码库,因此我们也将它们称为*依赖项*。
包管理器是帮助我们维护系统或软件项目的依赖项的程序。“维护”是指根据需要安
装、更新、列出和卸载依赖项。
我们讨论的包管理器既可以用于维护我们在操作系统上安装的程序,也可以用于维
护软件项目的依赖项。
Mac OS X:Homebrew
*Homebrew* 是 Mac OS X 操作系统上最流行的包管理器。它提供在 Mac 上安装、
更新、跟踪、列出和卸载软件包和应用程序的便捷方式。
许多可以通过 .dmg 文件下载安装的应用程序也可以使用 Homebrew 下载和安装。
以下是通过 Homebrew 安装|wget|包的示例:
|brew install wget
|
Linux:Apt 和 Yum
Linux 是围绕命令行构建的,包管理器是安装程序的默认方式也就不足为奇了。
大多数主流版本的 Linux 都带有内置的包管理器。*Advanced Package Tool*
(APT)是 Debian 和基于 Ubuntu 的 Linux 发行版的本地包管理器。
*Yellowdog Updater, Modified*(YUM)是 RedHat Linux 发行版的本地包管理器。
下面是一个使用 APT 安装 Vim 的例子:
|sudo apt-get install vim
|
And using Yum:
|sudo yum install vim
|
JavaScript:Node Package Manager(NPM)
现在我们已经了解了一些操作系统级别的包管理器是如何工作的,让我们来看看编
程语言的包管理器。这些可以帮助我们管理项目所依赖的软件库。 *Node Package
Manager(NPM)* 默认随 Node.js 一起安装。
NPM 与我们之前看到的包管理器之间的一个区别是 NPM 可以在*本地*或*全局*模
式下运行。本地模式用于仅在我们正在处理的特定项目/目录中,而全局模式用于
在系统上安装包。
默认情况下,软件包安装在本地,但您可以使用|-g|标志全局安装软件包:
|npm install request -g
|
Python:Pip
Python有一个名为*Pip*的包管理器。你的系统可能已经安装了Pip,因为它与最新
版本的Python打包在一起。我们可以轻松地从*Python索引安装包*使用|pip
install |命令来安装Pip:
|pip install requests
|
Java:Apache Maven
*Apache Maven*(通常简称为** Maven**)是一个免费的开源工具套件,包括依赖
管理。
尽管也支持其他语言,Maven主要用于Java项目。 Maven可以做很多事情。它的使
用稍微复杂一些,我们在这里不再赘述。
总结
我在本文介绍了一些基本的编码概念和工具,旨在展示软件开发鸟瞰图,我希望我
当初开始学习编程的时候也有这份鸟瞰图。
涵盖的主题包括互联网、几种编程语言、版本控制系统和数据库,我尝试描述这些
拼图如何组合在一起的。
未来规划
如果你喜欢这篇文章,我写了一本名为《面向开发人员的 Coding Essentials
Guidebook》 的书,一共 14 章,每章都涵盖了本文中讨论的一个
主题。
在这本书中,我对这 14 个主题进行了更深入的研究,因此这本书是检验你是否从
这篇文章有所收获的一个途径。
可能因为这篇文章被某种特定的语言、工具或概念所吸引,我鼓励您深入研究该领
域以进一步学习。
如果你这本书有任何问题、建议或疑虑,我很乐意听取您的意见,你可以发邮件到
jacob@initialcommit.io 。
------------------------------------------------------------------------
PapayaHUANG
译者:PapayaHUANG
阅读 更多文章 。
Jacob Stopak
作者:Jacob Stopak (英语)
阅读 更多文章 。
------------------------------------------------------------------------
在 freeCodeCamp 免费学习编程。 freeCodeCamp 的开源课程已帮助 40,000 多人
获得开发者工作。开始学习
freeCodeCamp 是捐助者支持的 501(c)(3) 条款下具有免税资格的慈善组织(税
号:82-0779546)。
我们的使命:帮助人们免费学习编程。我们通过创建成千上万的视频、文章和交互
式编程课程——所有内容向公众免费开放——来实现这一目标。
所有给 freeCodeCamp 的捐款都将用于我们的教育项目,购买服务器和其他服务,
以及聘用员工。
你可以点击此处免税捐款 。
精选文章