本笔记主要记录MIT Web Development Crash Course课程的笔记,本节主要记录的是Monday, january 6, 2025的课程内容,包括kickoff, git basic, HTML/CSS intro 等内容。
1 Kickoff
一些信息:
- No, the competition is not mandatory. But it doesn’t hurt to submit your website into the competition!
- We’ll have live help during workshops where you can add yourself to the queue on weblab.is/q.
- You can find the questions doc at weblab.is/questions, where you can ask questions anonymously during class.
- You can find the old questions doc at weblab.is/oldquestions
- Student hub for shortlinks is at weblab.is/info
- Don’t have a team yet? Stay after lecture today for a team-finding mixer!
然而考虑到旁听/非mit的学生,没有对应的邮箱,所以这些内容都无法访问,作业则需要从GitHub上寻找:Here
关于课程安排可以从Here查看schedule
该课程将从前端到后端教你全过程(全栈)
1.1 访问网站
实际收到的文件包括HTML文件和CSS文件,js文件(前端三件套)
第一周的目标就是构建一个catbook的website,作业内容应该对应于GitHub的here,实例网页weblab.is/example
1.2 课程的要求
-
Dynamic website supported by a back-end
-
Personalized experience based on user accounts
-
Minimum security requirements fulfilled
-
Original design and implementation
-
Use Git on a web.lab Github repo
一些不能的做的事情:
-
Use anything like Drupal, Wordpress or Squarespace
-
Use any part of a previous project
-
Outsource your development. Hire minions.
-
Evil
1.3 评判的标准
Functionality | technical components of your core features |
Usability | ease-of-use of the website |
Aesthetics | look-and-feel of the website |
Concept Execution | applicability of the solution to the problem |
2 Git Basics
如何代码的协作在现在是一个密切需要解决的问题
最基本需要考虑的点在于:代码的独立拷贝,修改内容的比较以及解决冲突的问题,版本的控制
这些,正是git试图解决的问题
git通过跟踪修改来实现记录版本
一些命令行的基本操作
操作 | 内容 |
---|---|
ls |
列出文件夹内的内容 |
cd |
进入指定文件夹 |
mkdir |
创建文件夹 |
初始化,创建一个git仓库:
git init
(需要先cd到对应的文件夹下)
当代码的许多文件发生了改变的时候,当我们想打包这些修改并提交到git的修改记录时,我们可以用git add
实现
使用git status
则可以检查git的提交记录
当使用git add
之后,修改的内容就被存储到了staging area缓存区,只有我们git commit
之后才会进入仓库的修改
例如: 此处的-m后的内容提交的一些信息
此时再看git log
:
注意到上面的commit后面的一长串的东西就是git的commit id,后续我们要用什么的时候,就要用到这个commit id
但还面临一个问题,那就是你现在修改了很多的内容,但工作要求你先修好原始内容上的bug,你需要从你现在的这条工作线条回原先的工作线,这应该如何解决呢?
在git里,用的是branch分支的方式:
其中每一个节点是一个操作,那么看到上面的三个操作都是从last home page这个地方分支出来的,不同的人做不同的修改,git也会记录这些分支。
我们可以使用git branch
查看现在有哪些分支:
看到目前只有一个master
那么可以通过git checkout
来创建新的分支:
此时就创造了一个test的branch并从master切换到了test
接下来就可以在这个branch上进行更改
分支产生并修改之后应该如何把这些修改重新放回主分支呢
先查看分支git branch
,然后切回主分支git checkout main/master
最后再merge:git merge + branch name
最终的仓库结构就成了:
但上述的内容都仅仅是在本地实现的,需要多人异地同步那么就需要一个远端的服务,一般是用GitHub,这又该怎么实现呢:
首先,代码是在远程服务器存在一份,每个人都先要获得的是整个仓库的一份copy:
这一般使用git clone
然后在本地进行修改和commit:
最后需要把commit在本地git的内容提交到远程需要使用git push
:
而其他人想要对比自己的版本和远程服务器上的版本的区别则应该使用git fetch
:
从远端服务器更新别人的修改到自己本地的git则使用git pull
git reset --hard
则会清楚所有未提交的暂存(直接重置所有的add内容)
3 HTML 简介
HTML是超文本文件,他就像一个网页的骨架,而CSS则是股价之上的皮肉和服饰
对于理解HTML的main idea来说,可以把他理解为一堆相邻的盒子/容器
例如这个图片中的每一个红色的框框就是一个容器,这些容器组合而成了整个网页:
接下来我们看看代码的一个简单示例:
一般对于html文件来说一般都会包含一个<!DOCTYPE html>
意在告诉浏览器你使用的是最新的html
然后继续看上面的代码我们不难发现一些opening tag 和一些closing tag,一般都是<>和</>的形式,那么这俩者之间的就是整个容器了
那么对于上面的html文件来说,很容易的发现整个html容器里又有两个子容器分别是head容器和body容器
由于html是一堆容器,所以一般而言,以下的容器还没结束又开始一个新容器是不可以的:
<html>
是整个文件的根容器,是包裹整个html所有内容的容器,而<head>
容器一般存储一些元数据,他们往往不会直接显示在网页,但是会有一些其他的辅助作用,<body>
则包含所有网页里会出现的内容。
一些常用的通用标签如下:
一般不会直接使用这些tag而是会有一些属性需要赋予:
<tagname attribute="value">
</tagname>
例如对于链接来说,其html一般是:
<a herf="links here" str to print>
</a>
除此之外还有图像等:
一般对于图片来说我们不会往图片容器里添加内容,所以出于简化可以:
这里需要注意相对路径,除此之外是如果图像无法正常显示那么可以添加一些替代的提示文本:
除此之外还有list相关的tag:
例如:
而对于<div>
和<span>
两类标签来说,他们的区别在于是否换行
为什么要用<div>
呢?
因为这可以帮助我们很好的一次性设置几个tag的格式
对于学习html来说,我们并不需要记住所有的标签,遇到需要的合适的我们可以Google或者看 mdn web docs 网站
一般而言其实不建议滥用div,而是一般选用对应用途下的对应tag
So: Don’t just use
<div>
.Use MDN to find the element you need!
4 CSS 简介
CSS =a list of description
以下是一个css的基本单元
这里的div就是我们选择需要装饰的html容器
上述的css作用于html如下所示:
有时候我们想对div里面的内容进行更精细的调控,那么我们可以对div添加类:
<div class="info">Info</div>
那么CSS在设置的时候只需要:
.info{
color:red;
font-family:Arial;
font-size:24pt;
}
就可以只修改对应的div,另一种方式是使用id:
那么这两者有什么区别呢?
- 一个html的div只能有一个id,但可以有很多类
- 一个id只能对应一个对应唯一的一个容器
对于CSS是有一定层级的:
对应的从下往上越来越特定
所以即便两个设置不一样,那么也会优先按照更高特定的设置结果来进行设置
那么当我们设置了css后,我们需要在html中引入中国css:
<head>
<title>Title!</title>
<link rel="stylesheet"
href="style.css" />
</head>
对于一些具体作用的块的css一般以u开头命名:
.u-textCenter {
text-align: center;
}
8pt system:
padding在8以及其除以2的时候较为和谐
关于flex