究竟是什么触发了Angular中的main.ts

Unk*_*per 6 angular-cli angular

通过构建基本的Angular CLI项目,我们index.html在运行应用程序时获得以下信息:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>SimpleCLI</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>
  <script type="text/javascript" src="inline.bundle.js"></script>
  <script type="text/javascript" src="polyfills.bundle.js">
  </script><script type="text/javascript" src="styles.bundle.js"></script>
  <script type="text/javascript" src="vendor.bundle.js"></script>
  <script type="text/javascript" src="main.bundle.js"></script></body>
</html>
Run Code Online (Sandbox Code Playgroud)

下一步是我们的切入点main.ts。当然,名称无关紧要,并且在.angular-cli.json中定义。有人可以澄清以下几点吗?

  • vendor.bundle.js包含所有Angular代码并负责启动引导过程吗?
  • 一旦启动引导过程,应用程序将如何确切地知道要去哪里,即如何触发main.ts?只是财产

     "main": "main.ts"
    
    Run Code Online (Sandbox Code Playgroud)

    .angular-cli.json里面定义那?

Phi*_*hil 7

是的,只有 angular-cli.json 引用它来处理应用程序的启动。

main.ts 不是一个模块,而是一个简单的脚本文件,从上到下执行,可以有任何其他文件名。

唯一影响它作为 .ts 文件的另一件事是 tsconfig.json,它处理转换为 javascript。但它是通过 *.ts 文件名模式而不是通过单独引用文件来实现的。


Gau*_*ngi 5

  1. 没有 Vendor.bundle.js不包含角度代码。它包含 3rd 方插件,例如。bootstrap、jquery、jquery 插件,我们将其包含在 package.json 中。它不负责引导角度应用程序。

  2. main.ts文件最后一行 platformBrowserDynamic().bootstrapModule(AppModule)负责角度应用程序的引导。该行的platformBrowserDynamic()部分表示我们即将在浏览器环境中启动 Angular。

3. bootstrapModule()函数帮助引导我们的根模块,并将根模块作为其参数。

  1. AppModule是我们的根模块,它是我们应用程序的入口模块,这实际上可以是我们应用程序中的任何模块,但按照惯例 AppModule 被用作根模块。

5.在我们的AppModule 中,我们需要指定将用作应用程序入口点组件的组件。在我们的app.module.ts文件中,我们导入入口组件(通常是 AppComponent),并将其作为 NgModule 配置对象内引导数组中的唯一项提供。例如。引导程序[应用程序组件]