Angular2 Core中文教程:ng-europe2014演示与ng2升级

需积分: 3 1 下载量 128 浏览量 更新于2024-07-19 收藏 2.39MB PDF 举报
本资源是一份关于Angular2的精简教程,主要针对Angular2 Core的部分进行讲解,特别关注了中文版的ng2版本。教程由Igor Minar和Tobias Bosch在ng-europe2014会议中分享,旨在帮助开发者快速理解Angular2的核心概念。 首先,讲解者提到了AngularJS1.3作为背景,展示了与Angular2之间的迁移差异。在AngularJS中,代码示例展示了一个带有`ng-controller`指令的简单Todo应用,用户可以输入待办事项标题并添加或删除任务。`ng-model`用于双向数据绑定,`ng-click`则处理事件绑定。 随着教程进入Angular2,核心变化之一是移除了依赖于指令的语法,如`ng-controller`和`ng-repeat`,代之以更简洁的属性绑定方式。例如,`*ngFor`用于`ng-repeat`,`[value]`和`(click)`分别对应Angular2中的模板表达式和事件处理器。`[checked]="todo.done"`用于实现动态复选框状态。 在Angular2中,`<tab-container>`和`<tab-pane>`结构被用来组织视图,这可能是Angular Router或类似的导航机制的一部分。每个`<tab-pane>`通过`title`属性定义,并且可以使用`[ng-repeat]`或`*ngFor`遍历数据,显示不同内容。 值得注意的是,尽管标题提到"Core",但该教程可能并未深入到Angular2的组件化、依赖注入、变更检测等核心概念。它更像是一个入门级别的示例,着重展示了Angular2在模板语法和数据绑定方面的简化和改进。对于想学习Angular2的开发者来说,这份PPT教程提供了一个从旧版本过渡到新框架的基础体验。同时,由于其包含中文翻译,对于非英语国家的开发者来说是一个很好的学习资源。

import numpy as np import matplotlib.pyplot as plt # 光纤参数 core_radius = 5e-6 # 光纤芯径 cladding_radius = 125e-6 # 包层芯径 n_core = 1.45 # 光纤芯的折射率 n_cladding = 1.44 # 包层的折射率 alpha = 0.2 # 损耗系数 # 模式参数 m = 1 # 模式数 l = 0 # 角动量数 k = 2 * np.pi / 1.55e-6 # 波矢量 # 离散化 dr = 1e-7 # 径向离散化步长 dz = 1e-5 # 纵向离散化步长 r_max = 2 * core_radius # 最大径向范围 z_max = 1e-3 # 最大纵向范围 nr = int(r_max / dr) + 1 # 径向离散化数 nz = int(z_max / dz) + 1 # 纵向离散化数 # 初始化 r = np.linspace(0, r_max, nr) z = np.linspace(0, z_max, nz) E = np.zeros((nr, nz), dtype=complex) # 边界条件 E[:, 0] = np.exp(1j * k * r) # 入射光线 E[:, -1] = 0 # 输出面边界条件 # 模式初值 w = np.sqrt(2 / np.pi) * np.exp(-r ** 2 / core_radius ** 2) w *= np.sqrt((2 * l + 1) / (2 * np.pi * m * core_radius ** 2)) w /= np.sqrt(np.sum(np.abs(w) ** 2) * dr) E[:, 1] = w # 数值求解 for i in range(1, nz - 1): # 径向二阶导数 d2Edr2 = (E[2:, i] - 2 * E[1:-1, i] + E[:-2, i]) / dr ** 2 # 纵向一阶导数 dEdz = (E[:, i + 1] - E[:, i]) / dz # 光学传输方程 E[1:-1, i + 1] = E[1:-1, i] + dz * ( (1j * k * n_core) ** 2 * E[1:-1, i] - (1 / core_radius ** 2 + alpha / 2) * E[1:-1, i] - ( n_core ** 2 - n_cladding ** 2) * d2Edr2 / k ** 2 - 2 * 1j * k * dEdz / (m * core_radius ** 2)) # 绘图 plt.imshow(np.abs(E) ** 2, extent=(0, z_max, r_max, 0), aspect='auto') plt.xlabel('z / m') plt.ylabel('r / m') plt.colorbar() plt.show()

2023-05-29 上传