前言

这篇主要是教大家如何快速搭建一个 Angular 项目,纯用于学习。

Before Starting

开始前,我们需要知道几个小知识。

1. Angular Compilation

游览器支持的编程语言是 HTML、CSS、JavaScript (JS)。

但为了提升开发体验,前端攻城狮大多数会选择使用 HTML、Scss、TypeScript (TS) 作为主要开发语言。

于是,项目发布前就需要先把 Scss 和 TS 编译成 CSS 和 JS,这项工程一般由 Webpack 或 Vite 这类 bundle 工具在打包环节顺手完成。

Angular 项目也使用 HTML、Scss、TS 作为主要开发语言,所以发布前它也需要编译。

但是!Angular 的编译远远不只是把 Scss 和 TS 编译成 CSS 和 JS 这么简单。

Angular 编译器是专门针对 Angular 项目而设的,它会把 HTML、Scss、TS 通通编译成 JS,没错!HTML 和 Scss 最终都会变成 JS。

所以,我们在写 Angular 代码时,要有一个 mindset:

我们写的代码和最终游览器执行的代码不是一回事。

Angular 可能会为了提升开发体验,提供语法糖,或者直接创造新语法。

Angular 也可能为了提升性能,把原本可读性高的代码,编译成可读性差,但性能优的代码。

总之,要想深入理解 Angular,我们就需要知道它在中间到底搞了什么鬼。

2. Single-page Application (SPA) & Component First

传统网站结构

一个网站 www.example.com

由多个网页(Page)组成

www.example.com 主页

www.example.com/products 产品页

一个网页则由 HTML、CSS、JS 组成。

单页面应用程序(SPA)结构

一个单页面应用程序 www.example.com

只有一个网页 (Page),但它有很多组件。

www.example.com 主组件

www.example.com/products 产品组件

一个组件由 HTML、Scss、TS 组成。

Angular is Single-page Application

Angular 是 Single-page Application,它只有一个 Page。

Angular 是 Component First,万物皆是组件,这也是 Web Components 倡导的。

组件对比 Page 有几个优势:

  1. 组件颗粒度灵活

    组件可以是一个 Page 里的一部分,也可以充当一整个 Page 内容。

  2. 组件可以灵活嵌套

    虽然 Page 也可以通过 iframe 做嵌套,但体验太差了。

创建项目

1. 安装 Node.js 和 Yarn (Angular 目前用的是 Yarn Classic 哦, 相关 Issue – Yarn PnP Support Status

2. 安装 Angular CLI

npm install -g @angular/cli

3. 创建 Angular 项目

ng new get-started --style=scss --skip-tests --routing=false --ssr=false -s -t

ng 是 Angular CLI 的命令头

new 是创建新项目

get-started 是项目名

--style=scss 是选定使用 Scss 作为编写 CSS 的方式, 如果你 prefer 直接写 CSS 也是可以的。

--skip-tests 是不要生成测试代码。(get started 而已,不需要搞测试)

--routing=false 是不要生成路由代码。(get started 而已,不需要搞路由)

--ssr=false 是不要支持 Server-Side Render (get started 而已,不需要搞服务器渲染)

-s 是 --inline-style command 的缩写。by default,组件由 .html、.scss、.ts  三个 files 组成,inline style 表示去除掉 .scss file,把 style 写入 .ts file 里头。(get started 而已,能少则少)

-t 是 --inline-template command 的缩写,它和 inline style 同理,就是去掉 .html file 把 HTML 代码写入 .ts file 里头。(get started 而已,能少则少)

项目结构

大部分都是前端熟悉的 files, 特别要留意的是

angular.json – 它相等于 webpack.config.js,负责设定 development server、build bundle、等等。

index.html、main.ts、styles.scss 是 for Page

app.component.ts 是 for 组件,里面也包含了 inline style 和 inline HTML。

Page 结构

index.html

这里除了 <app-root> 以外, 啥也没有.

没有 <script> 也没有 <link rel="stylesheet">, 这些会在 compile 阶段插入进去.

main.ts

没有什么特别的, 只是一句启动代码,appConfig 我们先忽略.

style.scss

这里负责 Global Style,比如 reset css、base css、等等.

App 组件结构

写了一个简单得 Hello World

即便我不说, 也应该可以看出它的表达方式吧.

p.s. imports:[CommonModule] 不是必须的,有用到 Angular build-in 指令才需要,但由于太 common 了,所以 CLI by default 都会生成。

启动项目

ng serve --open

--open 是自动打开游览器

效果

总结

1. 这篇主要就是教你把 Angular 跑起来。方便之后跟着教程做。

2. Angular 是 Single Page Web Application。

它只有一个 Page(index.html、main.ts、styles.scss)。

其余的都是组件。组件就是一套 HTML、TS、Scss。.

目录

上一篇 Angular 18+ 高级教程 – 初识 Angular

下一篇 Angular 18+ 高级教程 – Angular Compiler (AKA ngc) Quick View

想查看目录,请移步 Angular 18+ 高级教程 – 目录

喜欢请点推荐,若发现教程内容以新版脱节请评论通知我。happy coding

Angular 18+ 高级教程 – Getting Started的更多相关文章

  1. Siki_Unity_2-9_C#高级教程(未完)

    Unity 2-9 C#高级教程 任务1:字符串和正则表达式任务1-1&1-2:字符串类string System.String类(string为别名) 注:string创建的字符串是不可变的 ...

  2. Pandas之:Pandas高级教程以铁达尼号真实数据为例

    Pandas之:Pandas高级教程以铁达尼号真实数据为例 目录 简介 读写文件 DF的选择 选择列数据 选择行数据 同时选择行和列 使用plots作图 使用现有的列创建新的列 进行统计 DF重组 简 ...

  3. ios cocopods 安装使用及高级教程

    CocoaPods简介 每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如Java语言的Maven,nodejs的npm.随着iOS开发者的增多,业界也出现了为iOS程序提供依赖管理的工具,它的 ...

  4. 【读书笔记】.Net并行编程高级教程(二)-- 任务并行

    前面一篇提到例子都是数据并行,但这并不是并行化的唯一形式,在.Net4之前,必须要创建多个线程或者线程池来利用多核技术.现在只需要使用新的Task实例就可以通过更简单的代码解决命令式任务并行问题. 1 ...

  5. 【读书笔记】.Net并行编程高级教程--Parallel

    一直觉得自己对并发了解不够深入,特别是看了<代码整洁之道>觉得自己有必要好好学学并发编程,因为性能也是衡量代码整洁的一大标准.而且在<失控>这本书中也多次提到并发,不管是计算机 ...

  6. 分享25个新鲜出炉的 Photoshop 高级教程

    网络上众多优秀的 Photoshop 实例教程是提高 Photoshop 技能的最佳学习途径.今天,我向大家分享25个新鲜出炉的 Photoshop 高级教程,提高你的设计技巧,制作时尚的图片效果.这 ...

  7. 展讯NAND Flash高级教程【转】

    转自:http://wenku.baidu.com/view/d236e6727fd5360cba1adb9e.html 展讯NAND Flash高级教程

  8. Net并行编程高级教程--Parallel

    Net并行编程高级教程--Parallel 一直觉得自己对并发了解不够深入,特别是看了<代码整洁之道>觉得自己有必要好好学学并发编程,因为性能也是衡量代码整洁的一大标准.而且在<失控 ...

  9. [转帖]tar高级教程:增量备份、定时备份、网络备份

    tar高级教程:增量备份.定时备份.网络备份 作者: lesca 分类: Tutorials, Ubuntu 发布时间: 2012-03-01 11:42 ė浏览 27,065 次 61条评论 一.概 ...

  10. Angular CLI 使用教程指南参考

    Angular CLI 使用教程指南参考 Angular CLI 现在虽然可以正常使用但仍然处于测试阶段. Angular CLI 依赖 Node 4 和 NPM 3 或更高版本. 安装 要安装Ang ...

随机推荐

  1. elementplus django drf 如何做到确认单据禁止删除

    elementplus django drf 如何做到确认单据禁止删除     要在Django和Django Rest Framework(DRF)中实现禁止删除确认单据的功能,你可以通过以下步骤来 ...

  2. 基于Java网络书店商城设计实现(源码+lw+部署文档+讲解等)

    系统介绍: 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势:对于网络书店商城当然也不能排除在外,随着网络技术的不断成熟,带动了网络书店商城,它彻底改变了过去传统 ...

  3. CSS:弹性布局(display:flex)

    道友请了~ 最近小道在修练主修功法<嘉蛙>之余,偶然从一名散修手中得到了一本<CSS秘籍>,刚好近期有自己做微信小程序的打算,这不是瞌睡了给递枕头么.欣喜若狂,翻开第一章,拜读 ...

  4. 使用 useLazyFetch 进行异步数据获取

    title: 使用 useLazyFetch 进行异步数据获取 date: 2024/7/20 updated: 2024/7/20 author: cmdragon excerpt: 摘要:&quo ...

  5. python中pip安装包出现Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None))…………或无法pip install packname安装依赖包

    问题: 安装包出现Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connec ...

  6. 【Mybatis】08 ResultMap、Association、分步查询、懒加载

    ResultMap自定义结果集 可以把查询返回的结果集封装成复杂的JavaBean对象 原来的ResultType属性,只能把查询到的结果集转换为简单的JavaBean 什么是简单的JavaBean对 ...

  7. 【Oracle】Windows-19C 下载安装

    下载 Download 官网下载地址[需要Oracle账号]: https://www.oracle.com/database/technologies/oracle-database-softwar ...

  8. 亲测可用的 Linux(Ubuntu18.04下)可运行的超级玛丽奥(gym-super-mario-bros)游戏的仿真环境—————————可用于强化学习算法的游戏模拟器环境

    与前文中的俄罗斯方块游戏一样都是可以用于强化学习算法的游戏模拟器,这里介绍的是超级玛丽奥(gym-super-mario-bros)游戏的仿真环境. Python库,代码地址: https://git ...

  9. win10系统wifi不会自动连接怎么解决

    参考: https://jingyan.baidu.com/article/d621e8da743bab2865913f99.html ================================ ...

  10. 证明: 设n阶方阵A相似于对角阵Λ, λ是A的k重特征值, 则r(λE-A)=n-k.

    命题: 设n阶方阵A相似于对角阵Λ, λ是A的k重特征值, 则r(λE-A)=n-k.证明: 由定理3.9: A~Λ <=> A有n个线性无关的特征向量, 知k重特征值λ存在k个线性无关的 ...