Angular1.x 基础入门

2023-11-19

一、Angular1.x概述

  • 致力于单页面应用(single page application)

  • 不直接操作DOM元素,数据驱动为核心,以操作数据完成页面的一系列

二、Angular1.x特点

MVC

  • MVC模式

    Model:模型,业务数据,存储于特定作用范围内的变量

    View:视图,负责页面的展示,HTML + directive

    Controller:控制器,在controller中声明模型数据可以实现模型和视图的分离

  • MVC实现

    1. 声明自定义模块

      angular.module('模块名',[依赖列表])

    2. 把自定义模块注册到当前应用

      ng-app='模块'

    3. 模块中声明控制器函数

      module.controller('控制器名',function(){...})

    4. 调用控制器函数、创建控制器对象

      <div controller='控制器名'></div>

    5. 在控制器中对数据进行一系列的操作

      $scope.a=b

    6. 在view中呈现数据

      {{a}}

数据双向绑定

Angular的双向数据绑定是基于脏检测(dirty checking)。dirty checking指的是对比新旧两个数据值,如果发生变化就更新。dirty checking的核心函数是$digest()。当下列事件发生后会进行dirty checking。

  • DOM事件(click、keyup)

  • XHR响应

  • 浏览器Location变化

  • Timer事件(setTimeout和SetInterval)

  • 手动执行$digest()$apply()

    Model ——> View : $scope下的变量发生变化时,执行DOM更新

    View ——> Model : 监听DOM事件,在事件处理程序中改变$scope下的变量

依赖注入(Dependency Injection,简称DI)

依赖注入步骤

  • 得到模块依赖项

  • 查找依赖项对应的对象

  • 执行时注入

模块化设计

Angular将整个项目按照功能等区分规则进行模块的划分,将项目分成大大小小的功能模块以及许多能够复用的功能模块。

Angular.module(name,[,requires])

ng–app = "name"

  1. 作用:

    • 定义一个应用程序

    • 模块是应用程序中不同部分的容器

    • 模块是应用控制器的容器,控制器必须属于一个模块

  2. 优点

    • 保持全局命名空间整洁

    • 使应用可以按照任意顺序加载代码

三、Angular项目目录结构

项目根目录

| e2e <!--端到端(end-to-end)测试-->

| src

| app.e2e-spec.ts

| app.po.ts

| tsconfig.e2e.json

| protractor.config.js

| node_modules <!--第三方模块-->

| src

| app <!--使用HTML、CSS和单元测试定义APPComponent组件。它是根组件,随着应用的成长会成为一颗组件树的根节点-->

| app.component.css

| app.component.html

| app.component.spec.ts

| app.component.ts

| app.module.ts <!--定义AppModule,根模块为Angular描述如何组装应用-->

| assets <!--放图片等文件,在构建应用时会全部拷贝到发布包中-->

| .gitkeep

| environments <!--包括为各个目标环境准备的文件,它们导出了一些应用中要用到的配置变量。这些文件会在构建应用时被替换。-->

| environment.prod.ts

| environment.ts

| browserlist <!--配置文件,用来在不同的前端工具之间共享目标浏览器-->

| favicon.ico

| index.html <!--入口的主页面HTML-->

| karma.confi.js <!--给karma的单元测试配置。当运行ng test时会用到它-->

| main.ts <!--应用主要入口点,编译应用并启动应用的根模块AppModule,使其运行在浏览器中。-->

| polyfills.ts <!--不同浏览器对web标准的支持程度不同,腻子脚本(polyfill)能把这些不同点进行标准化。-->

| styles.css <!--全局样式-->

| test.ts <!--单元测试的入口点-->

| tsconfig.app.json <!--TypeScript编译器的配置文件-->

| tsconfig.spec.json <!--TypeScript编译器的配置文件-->

| tslint.json <!--额外的Linting配置-->

| .editorconfig <!--编辑器的配置文件,确保参与项目的人都具有基本的编辑器配置-->

| .gitignore <!--git配置文件,用来确保自动生成的文件不被提交到源码控制系统中-->

| angular.json <!--Angular Cli的配置文件-->

| package.json <!--npm配置文件-->

| Readme.md <!--项目基础文档,预先写入Cli命令的信息-->

| tsconfig.json <!--Typescript编译器的配置-->

| tslint.json <!--给TsLint和Codelyzer用的配置信息-->

| protractor.conf.js <!--给Protractor使用的端到端测试配置文件-->

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular1.x 基础入门 的相关文章

随机推荐

  • xcodebuild 命令打包

    xcodebuild命令行打包 在使用xcodebuild编译后发现有些东西有些临时性质的东西 依然存在 搜索了一些资料 找到有clean的命令 在之前打包都是生成app文件 将app打包成ipa文件需要编写一个脚本 操作起来相对麻烦 原来
  • 1.20 实现百度搜索

    1 axios不支持jsonp import React Component from react import ReactDOM from react dom https github com webmodules jsonp包 impo
  • 软件测试基础知识

    常用的软件测试方法有两大类 静态测试方法和动态测试方法 其中软件的静态测试不要求在计算机上实际执行所测程序 主要以一些人工的模拟技术对软件进行分析和测试 而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序 而达
  • 中国智慧能源行业行情监测及未来动向规划预测报告2022-2028年

    中国智慧能源行业行情监测及未来动向规划预测报告2022 2028年 报告目录 第一章 智慧能源的基本概述 第二章 2021 2021年全球智慧能源产业发展分析 2 1 2021 2021年全球智慧能源产业发展综况 2 1 1 全球智慧能源网
  • Electron 使用打印机

    1 问题 开发时使用打印机打印小票 2 开发环境 electron12 vue2 node14 electron 12 2 3 vue 2 6 12 node 14 21 3 3 问题解决 使用原生自带的 webview print 1 s
  • 新安装的ubuntu,遇到的问题记录

    镜像版本 https mirror nju edu cn ubuntu releases 22 04 ubuntu 22 04 1 live server amd64 iso 安装后无法切换 root 用户 问题截图 null 解决办法 解
  • glslViewer编译

    openGL系列文章目录 文章目录 openGL系列文章目录 前言 一 glslViewer下载 二 编译步骤 1 使用CMake 前言 一 glslViewer下载 glslViewer下载地址 二 编译步骤 1 使用CMake 2 配置
  • android常用框架!万字长文轻松彻底入门Flutter,使用指南

    前言 说不焦虑其实是假的 因为无论是现在还是最近几年 很早就有人察觉Android开发的野蛮生长时代已经过去 过去的优势是市场需要 这个技术少有人有 所以在抢占市场的时候 基本上满足需要就已经可以了 但是现在 各式各样的APP层出不穷 AP
  • python类

    python是一种面向对象的变成语言 python几乎所有的东西都是对象 包括对象和属性 一 类的定义 python类的定义 class ClassName pass 实例 注意 类中的函数称为方法 有关于函数的一切适用于方法 唯一的区别在
  • MySQL出现“Lost connection to MySQL server during query”问题分析与解决

    问题重现 有一个表总是在写入数据的时候报2013的错误 原因分析 官方文档 总结一下3种可能性 一般都是第一或第二种原因 首先SQLAlchemy官方对该错误的解释 针对与数据库操作相关的错误而引发的异常 并且不一定在程序员的控制之下 例如
  • BUUCTF [CSAWQual 2019]Web_Unagi 1

    BUUCTF CSAWQual 2019 Web Unagi 1 提示在 flag 有提示了上传xml文件及其格式 直接用之前xml注入的上传即可 改文件名为1 xml上传即可得flag gt
  • 关于如何解决:Maven无法从aliyun仓库自动下载jar包(情况之一)

    如果你出现修改Maven配置文件settings xml无法生效 或者无法从aliyun仓库自动下载jar包的情况 除了其他博主提出的情况与解决方案以外 你如果还没有解决 检查是否遇到以下情况 最首先应当去aliyun官网 https de
  • C++之数据类型

    数据类型可以分为 基本数据类型 和 非基本数据类型 1 基本数据类型 整型 int 布尔值类型 bool 浮点数类型 double 字符类型 char void类型 2 非基本数据类型 指针类型 type 数组类型 type 引用类型 do
  • 1028 人口普查 (20分))(C语言)

    1028 人口普查 20分 某城镇进行人口普查 得到了全体居民的生日 现请你写个程序 找出镇上最年长和最年轻的人 这里确保每个输入的日期都是合法的 但不一定是合理的 假设已知镇上没有超过 200 岁的老人 而今天是 2014 年 9 月 6
  • 计算机修改桌面图标大小,windows更改桌面图标大小设置

    对于windows系统使用 不同的人有不同的使用习惯 有些人不习惯windows桌面的默认图标大小 想更改桌面图标大一些或小一些 小编就遇到一个有高度近视的同事 默认的桌面图标他根本看不清 需要把眼睛贴近显示器才能看清 所以他就需要把图标设
  • koa使用之node.js 文件加密与解密

    利用node js的crypto模块实现文件加密解密 代码 加密函数 param text 需要加密的内容 param key 秘钥 returns Query 密文 function encode text key var secret
  • 解释 RESTful API,以及如何使用它构建 web 应用程序

    RESTful API stands for Representational State Transfer Application Programming Interface It is a set of principles and g
  • uniapp开发app原生子窗体subNvue的使用

    用uniapp开发app的时候经常会有以下问题 1 覆盖原生导航栏 tabbar 的弹出层组件 比如侧滑菜单盖不住地图 视频 原生导航栏 比如 popup盖不住tabbar 2 弹出层内部元素可滚动 3 在map video等组件上的添加复
  • FPGA——按键消抖常用模板代码

    模板如下 define UD 1 module key jitter input clkin input key in output key value output 15 0 tout inner signal reg 1 0 key i
  • Angular1.x 基础入门

    一 Angular1 x概述 致力于单页面应用 single page application 不直接操作DOM元素 数据驱动为核心 以操作数据完成页面的一系列 二 Angular1 x特点 MVC MVC模式 Model 模型 业务数据