angular2网页前端执行流程


命令行运行命令启动服务

  1. 在开发环境下,打开项目目录,运行命令npm start,

  2. 这个命令会进入package.json文件中:

    package.json

    "scripts": {
    "start": "npm run server:dev", # 这个就是 npm start 命令执行的脚本,这个脚本指向了下面的脚本
    "server:dev": "webpack-dev-server --config config/webpack.dev.js --progress --profile --watch --content-base src/",

    这里最终是执行了webpack的打包

    }

  3. webpack的执行顺序:

    angular2官方网站关于webpack的介绍文档

    https://angular.cn/docs/ts/latest/guide/webpack.html

    首先进入./webpack.config.js文件里面,

    case 'dev':
    case 'development':
    default:
    module.exports = require('./config/webpack.dev')({env: 'development'}); # 开发环境,进入这个文件路径

    config/webpack.dev.js

    在这个文件中还有打包好多输入文件路径以及规则,还有启动后的网址端口,链接的API地址

    const commonConfig = require('./webpack.common.js'); # 这个文件引入了打包的文件入口
    const ENV = process.env.ENV = process.env.NODE_ENV = 'development';
    const HOST = process.env.HOST || 'localhost'; # 访问地址
    const PORT = process.env.PORT || 3000; # 访问端口号

    开发环境下的API链接设置

    proxy: {
    '/cloudlink/v1/**': {
    target: 'http://192.168.100.90:8050',: false,
    pathRewrite: { '^/cloudlink/v1': '' }
    }
    }

    config/webpack.common.js 在这里,有打包文件的入口以及一些规则,想要知道什么意思看angular2官方网站关于webpack的介绍。

    entry: {
    'polyfills': './src/polyfills.browser.ts',
    'vendor': './src/vendor.browser.ts',
    'main': './src/main.browser.ts' # 这里就是程序的入口
    },




文件路径: cloudlink-front-framework/src/index.html

复制代码
# line: 27 
<body>
    <app>     这里是应用标签。程序入口
    </app>

文件路径: cloudlink-front-framework/src/app/app.module.ts

复制代码
# line: 15 
import { App } from './app.component';  # 这里加载组件,包括模板(网页html)

# line: 49 
routing # 加载路由

文件路径: cloudlink-front-framework/src/app/app.component.ts

复制代码
# line:25
template: `
  <main [ngClass]="{'menu-collapsed': isMenuCollapsed}" baThemeRun>
      <div class="additional-bg"></div>
    <router-outlet></router-outlet>      # 这里是路由文件里面的内容,执行到这里去找路由
    </main>`,

文件路径: cloudlink-front-framework/src/app/app.routing.ts

复制代码
# line:5
{ path: '', redirectTo: 'cloudlink', pathMatch: 'full' }, 
# 由于什么也没输入,所以默认进入这个空的
# 这里给默认的添加了一个路径 'cloudlink'
# 此时进入下个组件中
{ path: 'demo', redirectTo: 'demo/dashboard' },
{ path: '**', redirectTo: 'cloudlink/dashboard' }

文件路径: cloudlink-front-framework/src/app/core/home/home.module.ts

复制代码
import { routing } from './home.routing';             # 加载自己的路由
import { NgaModule } from '../../theme/nga.module';   # 加载菜单模块
import { HomeComponent } from './home.component';     # 加载组件,这里有执行,有网页,

文件路径: cloudlink-front-framework/src/app/core/home/home.component.ts

复制代码
# line:31
template: `
    <ba-sidebar></ba-sidebar>    # 自定义标签 这里是垂直导航菜单
    # src/app/theme/components/baSidebar/baSidebar.component.ts
    # line:8 : selector: 'ba-sidebar',
    # src/app/theme/components/baSidebar/baSidebar.html
    # line: 11 : <menuItem [menu]='menu'></menuItem>     # 自定义标签,这里负责列表垂直菜单选项
         # src/app/theme/components/menuItem/menuItem.component.ts
         # line: 6: selector: 'menuItem',
         # src/app/theme/components/menuItem/menuItem.component.html  # 在这里从后台API查询后,列出菜单。
         
    <ba-page-top></ba-page-top>   #自定义标签 这里是网页顶部header菜单,如退出按钮菜单
    # src/app/theme/components/baPageTop/baPageTop.component.ts
    # line:8 : selector: 'ba-page-top',
    
    <div class="al-main">
      <div class="al-content"> 
        <router-outlet></router-outlet>      # 这里加载路由
      </div>
    </div>
    <ba-back-top position="200"></ba-back-top>
    `

文件路径: src/app/core/home/home.routing.ts

复制代码
# line:6
const routes: Routes = [
  {
    path: 'login',
    loadChildren: () => System.import('../login/login.module')             # 这里是登录
  },
  {
    path: 'register',
    loadChildren: () => System.import('../register/register.module')
  },
  {
    path: 'cloudlink',   # 匹配这里
    component: HomeComponent,
    children: [
      { path: '', redirectTo: 'dashboard', pathMatch: 'full' },         # 这里匹配空,并且加上了'dashboard'
      { path: 'jas', loadChildren: () => System.import('../../jasframework/jas/jas.module.ts'), canLoad: [AuthGuard] },
      { path: 'dashboard', loadChildren: () => System.import('../dashboard/dashboard.module'), canLoad: [AuthGuard] },

文件路径: src/app/core/dashboard/dashboard.module.ts

文件路径: src/app/core/dashboard/dashboard.component.ts

文件路径: src/app/core/dashboard/dashboard.html

这里没有什么,正常显示。

相关推荐
涔溪11 分钟前
如何解决微前端架构中主应用和微应用的通信问题?
前端·架构
重铸码农荣光33 分钟前
深入理解 JavaScript 原型链:从 Promise.all 到动态原型的实战探索
前端·javascript·promise
我叫黑大帅40 分钟前
什么叫可迭代对象?为什么要用它?
前端·后端·python
颜渊呐40 分钟前
Vue3 + Less 实现动态圆角 TabBar:从代码到优化实践
前端·css
PineappleCoder44 分钟前
pnpm 凭啥吊打 npm/Yarn?前端包管理的 “硬链接魔法”,破解三大痛点
前端·javascript·前端工程化
fruge1 小时前
前端文档自动化:用 VitePress 搭建团队技术文档(含自动部署)
运维·前端·自动化
CoolerWu2 小时前
TRAE SOLO实战成功展示&总结:一个所见即所得的笔记软体
前端·javascript
Cassie燁2 小时前
el-button源码解读1——为什么组件最外层套的是Vue内置组件Component
前端·vue.js
vx_bscxy3222 小时前
告别毕设焦虑!Python 爬虫 + Java 系统 + 数据大屏,含详细开发文档 基于web的图书管理系统74010 (上万套实战教程,赠送源码)
java·前端·课程设计
北极糊的狐2 小时前
Vue3 子组件修改父组件传递的对象并同步的方法汇总
前端·javascript·vue.js