%!TEX program = xelatex
\documentclass{progartcn}
\usepackage{graphicx}
\usepackage[dvipsnames]{xcolor}
\usepackage{wrapfig}
\usepackage{enumerate}
\usepackage{amsmath,mathrsfs,amsfonts}
\usepackage{booktabs}
\usepackage{tabularx}
\usepackage{colortbl}
\usepackage{multirow,makecell}
\usepackage{multicol}
\usepackage{ulem} % \uline
\usepackage{listings}
\usepackage{tikz}
\usepackage{tcolorbox}
\usepackage{fontawesome}
\title{\bfseries\sffamily
Sample: Angular 6 快速入门\\
\normalfont\zihao{-3}
One framework. Mobile \& desktop.
}
\author{WisdomFusion \\ \faGithubAlt~ https://github.com/WisdomFusion}
\date{}
\begin{document}
\sloppy % 解决中英文混排文字超出边界问题
\maketitle
\thispagestyle{empty}
\begin{abstract}
\noindent 只是样例填充的文字,内容都不相干的!Laravel 5.6 在 Laravel 5.5 的基础上继续进行优化,包括\textbf{日志系统}、\textit{单机任务调度}、\textbf{\textit{模型序列化优化}}、动态频率限制、广播频道类、API 资源控制器生成、Eloquent 日期格式化优化、Blade 组件别名、Argon2 密码哈希支持、引入 Collision 扩展包等等等等。此外,所有的前端脚手架代码都已升级到 Bootstrap 4,Laravel 底层使用的 Symfony 组件都已升级到 Symfony $\sim$4.0 版本。
\vspace{2ex}
\noindent \textbf{关键字:}LISP,\hspace{.5em}PHP,\hspace{.5em}学习环境
\end{abstract}
\section{什么是 Angular?}
\label{newfeatures}
Angular 是一个开发平台。它能帮你更轻松的构建 Web 应用。Angular 集声明式模板、依赖注入、端到端工具和一些最佳实践于一身,为你解决开发方面的各种挑战。Angular 为开发者提升构建 Web、手机或桌面应用的能力。
\section{架构概览}
Angular 是一个用 HTML 和 TypeScript 构建客户端应用的平台与框架。Angular 本身使用 TypeScript 写成的。它将核心功能和可选功能作为一组 TypeScript 库进行实现,你可以把它们导入你的应用中。
Angular 的基本构造块是 NgModule,它为组件提供了编译的上下文环境。 NgModule 会把相关的代码收集到一些功能集中。Angular 应用就是由一组 \verb|NgModule| 定义出的。 应用至少会有一个用于引导应用的根模块,通常还会有很多特性模块。
\begin{itemize}
\item 组件定义\textbf{视图}。视图是一组可见的屏幕元素,Angular 可以根据你的程序逻辑和数据来选择和修改它们。 每个应用都至少有一个根组件。
\item 组件使用\textbf{服务}。服务会提供那些与视图不直接相关的功能。服务提供商可以作为依赖被注入到组件中, 这能让你的代码更加模块化、可复用,而且高效。
\end{itemize}
\section{\ttfamily @NgModule \sffamily{元数据}}
\verb|NgModule| 是一个带有 \verb|@NgModule| 装饰器的类。\verb|@NgModule| 装饰器是一个函数,它接受一个元数据对象,该对象的属性用来描述这个模块。其中最重要的属性如下。
\begin{itemize}
\item \verb|declarations|(可声明对象表) —— 那些属于本 \verb|NgModule| 的组件、指令、管道。
\item \verb|exports|(导出表) —— 那些能在其它模块的组件模板中使用的可声明对象的子集。
\item \verb|imports|(导入表) —— 那些导出了本模块中的组件模板所需的类的其它模块。
\item \verb|providers| —— 本模块向全局服务中贡献的那些服务的创建器。 这些服务能被本应用中的任何部分使用。(你也可以在组件级别指定服务提供商,这通常是首选方式。)
\item \verb|bootstrap| —— 应用的主视图,称为根组件。它是应用中所有其它视图的宿主。只有根模块才应该设置这个 \verb|bootstrap| 属性。
\end{itemize}
下面是一个简单的根 NgModule 定义:
\begin{lstlisting}[language=TypeScript,caption={src/app/app.module.ts}]
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
@NgModule({
imports: [ BrowserModule ],
providers: [ Logger ],
declarations: [ AppComponent ],
exports: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
\end{lstlisting}
\begin{lstlisting}[style=bashInputStyle]
cd my-app
ng serve --open
\end{lstlisting}
\begin{lstlisting}[style=bashOutputStyle]
blablabla
\end{lstlisting}
\section{快速上手}
Angular CLI是一个命令行界面工具,它可以创建项目、添加文件以及执行一大堆开发任务,比如测试、打包和发布。
本章的目标是构建并运行一个超级简单的 TypeScript Angular 应用。使用 Angular CLI 来让每个 Angular 应用从风格指南的那些建议中获益。
在本章的末尾,你会对用 CLI 进行开发有一个最基本的理解,并将其作为其它文档范例以及真实应用的基础。
\subsection{步骤 1. 设置开发环境}
在开始工作之前,你必须设置好开发环境。
如果你的电脑里没有 Node.js®和 npm,请安装它们。
\begin{invertedShellBox}
npm install -g @angular/cli
\end{invertedShellBox}
\subsection{步骤 2. 创建新项目}
打开终端窗口。
运行下列命令来生成一个新项目以及默认的应用代码:
\begin{invertedShellBox}
ng new my-app
\end{invertedShellBox}
\subsection{步骤 3. 启动开发服务器}
进入项目目录,并启动服务器。
\begin{invertedShellBox}
cd my-app
ng serve --open
\end{invertedShellBox}
你的应用代码位于 \verb|src| 文件夹中。 所有的 Angular 组件、模板、样式、图片以及你的应用所需的任何东西都在那里。 这个文件夹之外的文件都是为构建应用提供支持用的。
\begin{lstlisting}[style=bashOutputStyle]
src
app
app.component.css
app.component.html
app.component.spec.ts
app.component.ts
app.module.ts
assets
.gitkeep
environments
environment.prod.ts
environment.ts
browserslist
favicon.ico
index.html
...
\end{lstlisting}
\noindent
\begin{table}[htp]
\caption{sample table 表 }\label{table:1}
\begin{tabularx}{\textwidth}{>{\hsize=.6\hsize\raggedright\arraybackslash}X>{\raggedright\arraybackslash}X}\toprule
\bfseries{文件} & \bfseries{用途}\\ \midrule
\verb|app/app.component.{ts,html,css,spec.ts}| & 使用 HTML 模板、CSS 样式和单元测试定义 \verb|AppComponent| 组件。 它是根组件,随着应用的成长它会成为一棵组件树的根节点。\\
\verb|app/app.module.ts| & 定义 \verb|AppModule|,根模块为 Angular 描述如何组装应用。 目前,它只声明了 \verb|AppComponent|。 不久,它将声明更多组件。\\ \bottomrule
\end{tabularx}
\end{table}
blabla
\clearpage
\section{boxes}
\noindent\verb|\begin{titledBox}{<title>} <content> \end{titledBox}|
\begin{titledBox}{HTTP/Console 内核}
HTTP 内核继承自 \verb|Illuminate\Foundation\Http\Kernel| 类,该类定义了一个 \verb|bootstrappers| 数组,这个数组中的类在请求被执行前运行,这些 \verb|bootstrappers| 配置了错误处理、日志、检测应用环境以及其它在请求被处理前需要执行的任务。
\end{titledBox}
\noindent\verb|\begin{noteBox} <content> \end{noteBox}|
\begin{noteBox}
HTTP 内核继承自 \verb|Illuminate\Foundation\Http\Kernel| 类,该类定义了一个 \verb|bootstrappers| 数组,这个数组中的类在请求被执行前运行,这些 \verb|bootstrappers| 配置了错误处理、日志、检测应用环境以及其它在请求被处理前需要执行的任务。
\end{noteBox}
\noindent\verb|\begin{importantBox} <content> \end{importantBox}|
\begin{importantBox}
HTTP 内核继承自 \verb|Illuminate\Foundation\Http\Kernel| 类,该类定义了一个 \verb|bootstrappers| 数组,这个数组中的类在请求被执行前运行,这些 \verb|bootstrappers| 配置了错误处理、日志、检测应用环境以及其它在请求被处理前需要执行的任务。
\end{importantBox}
\noindent\verb|\begin{tipBox} <content> \end{tipBox}|
\begin{tipBox}
HTTP 内核继承自 \verb|Illuminate\Foundation\Http\Kernel| 类,该类定义了一个 \verb|bootstrappers| 数组,这个数组中的类在请求被执行前运行,这些 \verb|bootstrappers| 配置了错误处理、日志、检测应用环境以及其它在请求被处理前需要执行的任务。
\end{tipBox}
\noindent\verb|\begin{warningBox} <content> \end{warningBox}|
\begin{warningBox}
HTTP 内核继承自 \verb|Illuminate\Foundation\Http\Kernel| 类,该类定义了一个 \verb|bootstrappers| 数组,这个数组中的类在请求被执行前运行,这些 \verb|bootstrappers| 配置了错误处理、日志、检测应用环境以及其它在请求被处理前需要执行的任务。
\end{warningBox}
\noindent\verb|\begin{shellBox} <content> \end{shellBox}|
\begin{shellBox}
cd my-app
ng serve --open
\end{shellBox}
\noindent\verb|\begin{invertedShellBox} <content> \end{invertedShellBox}|
\begin{invertedShellBox}
cd my-app
ng serve --open
\end{invertedShellBox}
\section{服务容器3}
Laravel 服务容器是一个用于管理类依赖和执行依赖注入的强大工具。依赖注入听上去很花哨,其实质是通过构造函数或者某些情况下通过 \verb|setter| 方法将类依赖注入到类中。
\begin{lstlisting}[language=PHP,caption={PHP 代码样例}]
<?php
namespace App\Http\Controllers;
use App\User;
use App\Repositories\UserRepository;
use App\Http\Controllers\Controller;
class UserController extends Controller
{
/**
* The user repository implementation.
*
* @var UserRepository
*/
protected $users;
/**
* Create a new controller instance.
*
* @param UserRepository $users
* @return void
*/
public function __construct(UserRepository $users)
{
$this->users = $users;
}
...
}
\end{lstlisting}
\centering{
\includegraphics[width=5cm,align=c]{laravel_logo.png}
\qquad
\includegraphics[width=5cm,align=c]{php-elephant-logo.png}
}
\end{document}

PDF Preview
Create an account to compile and preview