zoukankan      html  css  js  c++  java
  • Angular2+学习第2篇 cli 环境搭建过程

    Angular-cli是angular团队针对Angular2提供的脚手架,用于环境搭建,运行等;具体参考Angular-cli GitHub

    Angular的启动过程,需要先回答三个问题:

    1. 启动时加载了哪个页面?
    2. 启动时加载了哪些脚本?
    3. 这些脚本到底做了什么事?

    OK,让我们来打开.Angular-cli.json

     1 {
     2   "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
     3   "project": {
     4     "name": "angular-reddit-test"
     5   },
     6   "apps": [
     7     {
     8       "root": "src",
     9       "outDir": "dist",
    10       "assets": [
    11         "assets",
    12         "favicon.ico"
    13       ],
    14       "index": "index.html",
    15       "main": "main.ts",
    16       "polyfills": "polyfills.ts",
    17       "test": "test.ts",
    18       "tsconfig": "tsconfig.app.json",
    19       "testTsconfig": "tsconfig.spec.json",
    20       "prefix": "app",
    21       "styles": [
    22         "styles.css"
    23       ],
    24       "scripts": [],
    25       "environmentSource": "environments/environment.ts",
    26       "environments": {
    27         "dev": "environments/environment.ts",
    28         "prod": "environments/environment.prod.ts"
    29       }
    30     }
    31   ],
    32   "e2e": {
    33     "protractor": {
    34       "config": "./protractor.conf.js"
    35     }
    36   },
    37   "lint": [
    38     {
    39       "project": "src/tsconfig.app.json",
    40       "exclude": "**/node_modules/**"
    41     },
    42     {
    43       "project": "src/tsconfig.spec.json",
    44       "exclude": "**/node_modules/**"
    45     },
    46     {
    47       "project": "e2e/tsconfig.e2e.json",
    48       "exclude": "**/node_modules/**"
    49     }
    50   ],
    51   "test": {
    52     "karma": {
    53       "config": "./karma.conf.js"
    54     }
    55   },
    56   "defaults": {
    57     "styleExt": "css",
    58     "component": {}
    59   }
    60 }
    View Code

    apps的数组,数组中的对象有一个index属性,和一个main属性。

    默认情况下:

    index属性指向src(root属性)目录中的index.html,他是angular应用启动时加载的页面。

    main属性指向了src下面的main.ts,他是angular应用启动时加载的脚本,main.ts负责引导angular应用启动。

    我们来看一下main.ts,这里是一个angular应用的起点。

    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.log(err));
    View Code
    • import { enableProdMode } from '@angular/core'; 导入angular核心模块的enableProdMode方法,此方法用来关闭angular应用的开发者模式。
    • import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 从浏览器模块中导入一个platformBrowserDynamic方法,这个方法会告诉angular使用哪个模块来启动应用。
    • AppModule,也就是命令行工具生成的那个整个应用的主模块
    • environment:环境配置,angular对多环境的一个支持。
    • if (environment.production) {
        enableProdMode();
      } 如果当前是生产环境,就调用enableProdMode方法关闭开发者模式。
    • platformBrowserDynamic().bootstrapModule(AppModule); 最后调用bootstrapModule()这个方法,传入AppModule作为启动模块来启动应用,是整个angular应用的起点,程序是通过这里来开始运行的。

    angular在知道要用AppModule作为主模块以后,他会加载AppModule模块,然后angular会分析AppModule模块需要依赖哪些模块,并加载哪些模块。

    在app.module.ts文件中我们会看中,AppModule模块会依赖BrowserModule、FormsModule和HttpModule模块,加载这些模块之后,会再分析这些模块需要依赖哪些模块,然后再去加载哪些模块,以此类推,直到加载完所有所需的模块。

    当加载完以后,angular会在index.html文件中寻找启动模块指定的主组件对应的css选择器,也就是说启动后angular会在index.html文件中找<app-root>,会用主组件也就是AppComponent中指定的模板内容(app.component.html),用这里面的内容替换到<app-root>这个标签,在这个整个过程完成之前,页面将会展示<app-root>这个标签中的内容,也即时loading…这样的一个字符串。

    启动程序:

    ng serve 

    开始编译应用,如果出现webpack:Compiled successful就代表编译成功了,我们就可以在浏览器中输入http://localhost:4200

     //设置不同端口
    ng server --port **

    --------------------------------------------------------------------

    1.ng new命令,快速创建一个新的项目

    $ ng new angular2_hello_world

    2.运行应用

     ng serve

    3. 制作Component

    $ ng generate component **

    -----------------------refrence-----------------------------------

     http://www.ituring.com.cn/book/tupubarticle/13538

     cli

    什么是Angular-cli

    简言之:就是NG团队自行维护的一个`脚手架`[内置单元测试及webpack2打包工具等] -- 前身是ember-cli

    官网:https://cli.angular.io/ 
    Github: https://github.com/angular/angular-cli 
    npm: https://www.npmjs.com/package/angular-cli

    范围命令作用
    new ng new new_project 初始化新项目
    Component ng g component my-new-component 新建一个组件
    Directive ng g directive my-new-directive 新建一个指令
    Pipe ng g pipe my-new-pipe 新建一个管道
    Service ng g service my-new-service 新建一个服务
    Class ng g class my-new-class 新建一个类
    Interface ng g interface my-new-interface 新建一个接口
    Enum ng g enum my-new-enum 新建一个枚举
    Module ng g module my-module 新建一个模块
  • 相关阅读:
    nginx 配置https详细步骤
    Git 上传本地仓库到远程git仓库
    VUE 配置vscode关于vue插件
    ORA-01439:要更改数据类型,则要修改的列必须为空
    Oracle查看主键、删除主键、添加联合主键
    std::stoi, std::stol, std::stoll
    C+++string类如何判断字符串为空
    1day漏洞反推技巧实战(1)
    java反射笔记,自用
    tomcat Valve内存马
  • 原文地址:https://www.cnblogs.com/zyjzz/p/7783981.html
Copyright © 2011-2022 走看看