首页 > 其他分享 >创建angular项目

创建angular项目

时间:2022-12-31 11:00:20浏览次数:54  
标签:src 项目 创建 app component ts json angular

1. 说明

本项目使用的angular, nodejs, npm, cnpm版本如下

$ ng version
Angular CLI: 13.2.6
Node: 14.17.1
Package Manager: npm 6.14.13
OS: win32 x64

Angular: 13.2.7
... common, compiler, compiler-cli, core, forms, localize
... platform-browser, platform-browser-dynamic, router

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1302.6
@angular-devkit/build-angular   13.2.6
@angular-devkit/core            13.2.6
@angular-devkit/schematics      13.2.6
@angular/animations             13.3.1
@angular/cli                    13.2.6
@schematics/angular             13.2.6
rxjs                            7.5.5
typescript                      4.5.5

2. 打开命令行工具找到你要创建项目的目录

3. 创建项目

3.1. 创建项目命令

ng new <项目名称>

3.2. 创建项目示例

ng new <project_name>
# e.g. ng new angulardemo

如果要跳过依赖安装, 可以添加--skip-install

ng new --skip-install <project_name>
# e.g. ng new --skip-install angulardemo

3.3. 输入参数

执行以上命令是, 系统会询问两个问题

  1. 是否添加路由.
    如果创建项目的目的为了体验angular的指令, 模板, 语法, 编译过程等等, 不涉及页面跳转, 可以不需要添加路由.
    如果需要涉及到页面之间的跳转, 则需要添加路由功能.

    如果创建项目过程中下载依赖包不成功, 可以停止, 然后手动输入cnpm install安装依赖包
    使用--skip-install选项. 由于npm install经常会出现卡住没有反应的现象, 在创建项目过程中可以跳过安装依赖, 等项目结构创建完成后手动安装依赖包
    此时可以添加选项 --skip-install 例如 ng new angulardemo --skip-install

  2. stylesheet样式格式
    现代web开发, 已经不止css一种样式语法, stylesheet技术也在不断的进步和升级. angular集成的stylesheet包括传统的css样式, less, sass, scss, stylus. 这里可以选择自己擅长的技术. 选择样式意为着angular cli会帮我们添加相应依赖, 解析器, 配置. 在实际开发过程中, 我们也可以混合使用以上技术. 这些样式最终会被解析器, 编译成浏览器可以识别的css代码.

    如果要在命令行中指定css预处理器, 可以选项--style 例如 ng new angulardemo --style=scss 来指定

3.4. 项目目录结构介绍

执行完以上命令后系统会为我们创建很多文件. 下面对这些文件进行简单介绍.
执行完以上命令后, 项目的目录结构树大致如下.

Test
├── README.md
├── angular.json
├── karma.conf.js
├── node_modules
├── package-lock.json
├── package.json
├── src
    └── app
        ├── app.component.css
        ├── app.component.html
        ├── app.component.spec.ts
        ├── app.component.ts
        ├── app.module.ts
        ├── components
        ├── pipes
        └── services
    ├── assets
    ├── environments
    ├── favicon.ico
    ├── index.html
    ├── main.ts
    ├── polyfills.ts
    ├── styles.css
    └── test.ts
├── tsconfig.app.json
├── tsconfig.json
└── tsconfig.spec.json

3.4.1. 一级目录介绍

目录 说明
node_modules 第三方依赖包存放目录
src 应用源代码目录
.angular.json Angular命令行工具的配置文件。后期可能会去修改它, 引一些其他的第三方的包 比如jquery等
karma.conf.js karma是单元测试的执行器,karma.conf.js是karma的配置文件
package.json 这是一个标准的npm工具的配置文件,这个文件里面列出了该应用程序所使用的第三方依赖包。实际上我们在新建项目的时候,等了半天就是在下载第三方依赖包。下载完成后会放在node_modules这个目录中,后期我们可能会修改这个文件。
package-lock.json package-lock.json 是在 npm install时候生成一份文件,用以记录当前状态下实际安装的各个npm package的具体来源和版本号.
README.md 项目说明文件
tsconfig.json 是typescript的配置文件,用于配置typescript编译的一些选项.
tsconfig.app.json tsconfig.app.json是tsconfig.json的扩展. TypeScript编译器的配置,添加第三方依赖的时候会修改这个文件, 用于指定编译,打包,运行时的一些ts选项.
tsconfig.spec.json tsconfig.spec.json也是tsconfig.json的扩展, 用于指定运行测试时的一些ts选项.

3.4.2. 二级目录介绍

src目录:
| 目录 | 说明 |
| app目录 | 包含应用的组件和模块,我们要写的代码都在这个目录 |
| assets目录 | 资源目录,存储静态资源的 比如图片 |
| environments目录 | 环境配置。Angular是支持多环境开发的,我们可以在不同的环境下(开发环境,测试环境,生产环境)共用一套代码,主要用来配置环境的 |
| index.html | 整个应用的根html,程序启动就是访问这个页面 |
| main.ts | 整个项目的入口点,Angular通过这个文件来启动项目 |
| polyfills.ts | 主要是用来导入一些必要库,为了让Angular能正常运行在老版本下 |
| styles.css | 主要是放一些全局的样式 |
| test.ts | 也是自动化测试用的 |
| typings.d.ts | 对于一些纯js编写的nodejs模块, 在typescript中被引入时, 由于缺少类型定义,tslint会报告类型错误, 须在此文件中定义才能被typescript正常引用 |

3.4.3. 三级目录介绍

src/app目录
app目录是我们要编写的代码目录。我们写的代码都是放在这个目录。
一个Angular程序至少需要一个模块和一个组件。在我们新建项目的时候命令行已经默认生成出来了。
在src/app下可以建立更多子目录, 来存放相应的元素, 比如component存放到src/app/components下,
service存放到src/app/services下, pipe 存放到src/app/pipes目录下.

3.4.4. 项目是如何启动的

上一节我们讲到了angular项目的目录结构, 在如此复杂的目录结构中, 我们第一想了解, 也是应该了解的是项目的入口文件是哪个?
如果是做c, c++, java约定俗成的是找main方法. 在web1.0, 2.0开发中是找index.html. 当前我们所处的时代, 个人认为已经不能简单归属于web2.0时代了.
web2.0的标志是ajax技术的兴起即页面局部刷新. 而现代应用开发, 不仅仅是ajax的大量应用, 还包括前端开发的工程化, 模块化开发, 组件化趋势. 当然也不同于严格意义上的去中心化的web3.0, 暂且将其称为web2.0+时代. 在web2.0+从index.html源文件中, 我们已经无法明显的看出项目的入口在哪里了.
以下是项目生成后的index.html, 从该文件中我们能一眼看出项目的入口文件在哪里吗?
有人说, 我一眼能看出是<app-root></app-root>, 如果你认为项目的入口是app-root这个component的话, 那就是踏入了一个陷阱, 或者被误导了, 或者是一种想当然. 这就是wen2.0+中很明显的一种误导, 无论是angularjs 的class='app'也好, 还是vue的<app />也好, react的<div id="root"></div>, 这些主component或者根component的渲染都不是项目入口位置.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Test</title>
  <base href="/">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
  <app-root></app-root>
</body>
</html>

不信我们打开app-root这个component看看.
从根component我们能看出, 服务是从哪里加载的吗, 路由是哪里加载的吗, 项目依赖的模块有哪些吗? 答案是不能, 而根component也只是众多普通component中的一个.

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'test';
}

而项目真正的入口实际上是src/main.ts, 所以在angular开发中. 我们依然要找main, 而这个main不是main方法或函数, 而是一个main.ts文件.

import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { AppModule } from './app/app.module';
import { environment } from './environments/environment';

if (environment.production) {
  enableProdMode();
}

platformBrowserDynamic().bootstrapModule(AppModule)
  .catch(err => console.error(err));

而这里的main.ts, 也是一个默认的入口文件, 他是在angular.json的配置文件中指定的. 也就是说, 入口文件也是可以被修改的, 但是如非必要建议不要去修改入口文件的名字.
本来入口文件就很难找到了, 还要将其修改为一个更难理解的名字, 对new joiner是很不友好的, 毕竟项目需要更多的new joiner来维护, 改成一个更不约定俗成的名字, 无异于是当头棒喝. 对于一个angular老手来说, 当我们打开一个angular项目后, 还是要看看angular.json的指定的主文件到底是不是src/main.js

"options": {
            "outputPath": "dist/test",
            "index": "src/index.html",
            "main": "src/main.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "tsconfig.app.json",
            "assets": [
              "src/favicon.ico",
              "src/assets"
            ],
            "styles": [
              "src/styles.css"
            ],
            "scripts": []
          },

知道了main.ts是入口文件后, 我们很容易就会发现, 项目启动使用的是下面这一行代码.
很容易猜测到AppModule里面应该会包含更多的信息, 怎么做到的? 靠得是一个开发者的嗅觉?

标签:src,项目,创建,app,component,ts,json,angular
From: https://www.cnblogs.com/guoapeng/p/17016309.html

相关文章

  • 参加 Spartacus 开源项目开发时需要注意的一些编程规范
    ​​参加Spartacus开源项目开发时需要注意的一些编程规范​​ 我们使用NgRx存储来管理Spartacus功能中的全局应用程序状态。使用NgRx在性能、更好的可测试......
  • 开源项目 Spartacus 的 git 分支使用规范
    ​​开源项目Spartacus的git分支使用规范​​ Spartacus开源项目里存在如下的git分支:feature/GH-xxxx分支用于简单的功能和错误修复epic/epic-name分支用于......
  • python创建config.xml文件,调用Jenkins API接口创建带参数的Job
    文章目录​​一、要求​​​​二、pipeline模板xml的内容可以通过如下方式获取​​​​三、代码​​​​四、效果​​​​五、参考文章​​一、要求将hudson.model.StringPa......
  • python 部署django项目到公网 无法连接
    https://blog.csdn.net/xiongzaiabc/article/details/108448390 服务器后台运行:https://www.jianshu.com/p/4041c4e6e1b0......
  • Vue 组件的创建、使用
    Vue组件(Vuecomponent)Vue组件的位置在Vue项目中可以看到一类新的文件后缀.vue用来表示Vue文件。需要区分在项目目录src下的App.vue和src\components的......
  • 适合编程初学者的开源项目:小游戏2048(安卓版)
    目标为编程初学者打造入门学习项目,使用各种主流编程语言来实现。安卓版效果图技术特点安卓Kotlin工程截图开源地址https://gitee.com/lblbc/game_2048关于厦门......
  • 创建菜单与游戏界面
    今天学习完成构建蛇与蛇的移动自己的vscode没有自动导入Snake,下次记得手动导入接下来,实现蛇的连贯移动思路:设置一个虚拟的头部。每次移动只有头和尾巴移动回合制游戏......
  • 5、快速搭建前后端分离的电商项目
    使用码云上的人人开源项目进行构建1、先复制gitee上的项目地址2、打开gitbash3、执行命令gitclone项目地址,这样就下载下来了(下载的项目直接放到桌面)4、把项目添加......
  • 3任务的创建-列表项的删除&遍历
     1、列表项的删除:从列表中删除指定的列表项,通过uxListRemove()函数来完成pxItemToRemove:要删除的列表项uxListRemove:剩余列表项的数目步骤:获取列表项所在的列表地址将......
  • 03创建Vue项目并实现全球化
    03创建Vue项目并实现全球化创建Vue项目vuecreateclient-vue使用Vuex作为状态管理,用于保存从后台获取的应用程序配置ApplicationConfigurationDto,该对象包含本地化的......