Angular 18+ 高级教程 – Getting Started
前言
这篇主要是教大家如何快速搭建一个 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 有几个优势:
组件颗粒度灵活
组件可以是一个 Page 里的一部分,也可以充当一整个 Page 内容。
组件可以灵活嵌套
虽然 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的更多相关文章
- Siki_Unity_2-9_C#高级教程(未完)
Unity 2-9 C#高级教程 任务1:字符串和正则表达式任务1-1&1-2:字符串类string System.String类(string为别名) 注:string创建的字符串是不可变的 ...
- Pandas之:Pandas高级教程以铁达尼号真实数据为例
Pandas之:Pandas高级教程以铁达尼号真实数据为例 目录 简介 读写文件 DF的选择 选择列数据 选择行数据 同时选择行和列 使用plots作图 使用现有的列创建新的列 进行统计 DF重组 简 ...
- ios cocopods 安装使用及高级教程
CocoaPods简介 每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如Java语言的Maven,nodejs的npm.随着iOS开发者的增多,业界也出现了为iOS程序提供依赖管理的工具,它的 ...
- 【读书笔记】.Net并行编程高级教程(二)-- 任务并行
前面一篇提到例子都是数据并行,但这并不是并行化的唯一形式,在.Net4之前,必须要创建多个线程或者线程池来利用多核技术.现在只需要使用新的Task实例就可以通过更简单的代码解决命令式任务并行问题. 1 ...
- 【读书笔记】.Net并行编程高级教程--Parallel
一直觉得自己对并发了解不够深入,特别是看了<代码整洁之道>觉得自己有必要好好学学并发编程,因为性能也是衡量代码整洁的一大标准.而且在<失控>这本书中也多次提到并发,不管是计算机 ...
- 分享25个新鲜出炉的 Photoshop 高级教程
网络上众多优秀的 Photoshop 实例教程是提高 Photoshop 技能的最佳学习途径.今天,我向大家分享25个新鲜出炉的 Photoshop 高级教程,提高你的设计技巧,制作时尚的图片效果.这 ...
- 展讯NAND Flash高级教程【转】
转自:http://wenku.baidu.com/view/d236e6727fd5360cba1adb9e.html 展讯NAND Flash高级教程
- Net并行编程高级教程--Parallel
Net并行编程高级教程--Parallel 一直觉得自己对并发了解不够深入,特别是看了<代码整洁之道>觉得自己有必要好好学学并发编程,因为性能也是衡量代码整洁的一大标准.而且在<失控 ...
- [转帖]tar高级教程:增量备份、定时备份、网络备份
tar高级教程:增量备份.定时备份.网络备份 作者: lesca 分类: Tutorials, Ubuntu 发布时间: 2012-03-01 11:42 ė浏览 27,065 次 61条评论 一.概 ...
- Angular CLI 使用教程指南参考
Angular CLI 使用教程指南参考 Angular CLI 现在虽然可以正常使用但仍然处于测试阶段. Angular CLI 依赖 Node 4 和 NPM 3 或更高版本. 安装 要安装Ang ...
随机推荐
- Solo开发者社区-重新思考云原生应用的开发模式
当前云原生应用的开发模式在 FaaS 环境下存在挑战,本文提出一种开发模式构想:"单体式编程,编译时拆分,分布式执行",旨在简化云应用开发,提升开发效率和应用性能.思路是通过编译器 ...
- tp5 为什么使用单例模式
首先我们要知道明确单例模式这个概念,那么什么是单例模式呢?单例模式顾名思义,就是只有一个实例.作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例, 这个类我们 ...
- 题解:CF1971C Clock and Strings
题解:CF1971C Clock and Strings 题意 在上图的一个圆中,给予你四个点 \(a,b,c,d\),判断线段 \(ab\) 与线段 \(cd\) 是否相交. 思路 先设置一个字符串 ...
- 【VUE】el-menu导航菜单过长、过多 超出窗口宽度 添加左右滚动按钮实现左右滚动效果
本文为原创文章,转载需注明出处~~ 效果图: 项目需求:如果一级菜单过多,需要出现滚动点击按钮. 准备工作:考虑到使用swiper插件,但swiper-slider必须是swiper-wrapper的 ...
- jfinal实验体会
这次实验我使用的是vue前端+jfinal后端,出现了非常多的问题,因此也花费了我不少时间.在一开始啃jfinal的文档的时候,我感觉jfinal是一个和springboot非常类似的框架,但是使用中 ...
- 如何实现对ELK各组件的监控?试试Metricbeat
一.前言 开发排查系统问题用得最多的手段就是查看系统日志,ELK 是 Elastic 公司开源的实时日志处理与分析解决方案,已经为日志处理方案的主流选择. 而在生产环境中,如何针对 ELK 进行监控, ...
- BI 工具助力企业解锁数字化工厂,开启工业智能新视界
背景 在 2022 年公布的<"十四五"数字经济发展规划>中,政府不断增加对制造业数字化转型的政策支持力度,积极倡导制造企业采用最新技术,提升自动化.数字化和智能化水平 ...
- 从.net开发做到云原生运维(四)——.net core的微服务开发
1. .net 6.0项目模板变更 在.net 5和.net 3.1的时候,asp.net core项目模板里有个Program类和Startup类,在.net 6中引入了一个最小api的项目模板,在 ...
- NVIDIA Omniverse Audio2Face的安装
下载 NVIDIA Omniverse 并运行安装程序 - 安装后,打开 Omniverse Launcher - 在"Apps"(应用)部分中找到 Omniverse Audio ...
- (续)signal-slot:python版本的多进程通信的信号与槽机制(编程模式)的库(library) —— 强化学习ppo算法库sample-factory的多进程包装器,实现类似Qt的多进程编程模式(信号与槽机制) —— python3.12版本下成功通过测试
前文: signal-slot:python版本的多进程通信的信号与槽机制(编程模式)的库(library) -- 强化学习ppo算法库sample-factory的多进程包装器,实现类似Qt的多进程 ...