当前位置: 首页 > 编程日记 > 正文

Angular开山篇

1:环境搭建

今天给大家介绍4种环境搭建的方法。

一:Angular-cli的安装

官方指导文档:www.angular.cn/guide/quickstart

请使用cnpm来安装,或者配置淘宝镜像。

使用原生npm安装可能会遇到的问题:

  1. 需要python的环境
  2. 可能会依赖某些franework导致会要求安装Visual Studio(在下文中会为大家介绍webstrom的配置)
  3. node-sass // 因为ZF导致,被墙掉了。
  4. node-gyp模块可能会编译错误。

如果还遇到问题可以参考:http://blog.csdn.net/zhy13087...

二:Angular-seed

Angular的种子文件,他有很多的版本,我们今天通过官方的seed来安装。

官方的angular-seed地址:https://github.com/angular/an...

步骤:

  1. git clone https://github.com/angular/an...安装种子文件(没有git的,可以自己down zip下来,然后打开cmd,执行cnpm install)。

前置需安装的包文件

  1. npm install -g webpack webpack-dev-server typescript
  2. npm install
  3. npm start
  4. 访问本地 localhost:3000

seed文件的优点:

  1. 自带简单的路由
  2. 自带From模块
  3. 带有Http请求模块
  4. 体现出了Angular的核心功能
  5. 项目体量小
三:基于webpack安装(爽歪歪的方法)
  • 优点:可以让我们自由的配置webpack.config.js
  • 步骤:https://github.com/kunl/Angul...
  • 场景:从Node转到前端的公司或者项目推荐用这种方式
手动创建项目(真正的勇士)
  • 条件:大神级别的使用方法(我不是大神,会简单的介绍一下)
  • 优点:想要什么在项目中添加什么,非常快捷
  • 步骤:
  1. 准备工作:

在开始搭建Angular环境前,还需要做一些准备工作,包括安装Angular所依赖的基础环境Node.js,可以在官网(https://nodejs.org/en/download/)下载安装,需要确认Node.js版本为v4.x.x以上,npm版本为v3.x.x以上。使用版本为node v5.11.0版本。

  1. 搭建步骤

1: 创建package.json

{"name": "HelloByHand","version": "1.0.0","license": "MIT","scripts": {"start": "npm run server","server": "webpack-dev-server –inline –colors –progress –port 3000"},"dependencies": {"@angular/common": "2.0.0","@angular/compiler": "2.0.0","@angular/core": "2.0.0","@angular/platform-browser": "2.0.0","@angular/platform-browser-dynamic": "2.0.0","reflect-metadata": "~0.1.8","core-js": "~2.4.1","rxjs": "5.0.0-beta.12","zone.js": "~0.6.26"},"devDependencies": {"@types/core-js": "~0.9.34","ts-loader": "~1.2.0","webpack": "~1.12.9","webpack-dev-server": "~1.14.0","typescript": "~2.0.0"}
}

2:创建tsconfig.json
配置了typescript编译器的编译参数。

{"compileOnSave": true,"compilerOptions": {"module": "commonjs","target": "es5","sourceMap": true,"declaration": false,"moduleResolution": "node","emitDecoratorMetadata": true,"experimentalDecorators": true,"removeComments":false,"noImplicitAny": true,"suppressExcessPropertyErrors": true,"typeRoots": ["node_modules/@types"],"exclude": ["node_modules"]}
}

3:创建资源文件夹
在项目根目录下创建一个src文件夹

4:创建组件相关文件
在src目录下创建app.component.ts文件以及模板文件app.component.html,示例代码如下:

//app.component.ts
import { Component } from '@angular/core';
@Component({selector: 'hello-world',templateUrl: 'scr/app.component.ts'
})
export class AppComponent {}  //app.component.html
<h1>Hello World</h1>

5:创建app.module.ts文件
在Angular应用中需要用模块来组织一些功能紧密相关的代码块,每个应用至少有一个模块,习惯上把它叫做AppModule。在src目录下创建一个app.module.ts文件来定义AppModule,代码如下:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
@NgModule({declarations: [AppComponent],imports: [BrowserModule],providers: [],bootstrap: [AppComponent]
})
export class AppModule { }

6: 添加main.ts文件
Angular项目一般有一个入口文件,通过这个文件来串联起整个项目。示例代码如下:

//main.ts
import 'reflect-metadata';
import 'zone.js';
import { platforBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app.module';
platforBrowserDynamic().bootstrapModule(AppModule).catch(err => console.log(err));

7:创建index.html宿主页面

<!doctype html>
<html lang="en">
<head><meta charset="utf-8"><title>MyApp</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 src="bundle.js"></script>
</body>
</html>

8:创建webpack.config.js

//webpack.config.js
var webpack = require('webpack');
var path = require('path');module.exports = {entry: './scr/main.js'output: {filename: './bundle.js'},resolve: {root: [path.join(__dirname, 'scr')],extensions: ['', '.ts', '.js']},module: {loaders: [{ test: /\.ts$/, loader: 'ts-loader' }]}
}
  • 重点:一个Angular项目必须要有一个模块和一个组件。

2:详细介绍Angular-cli命令行工具

官方文档:https://github.com/angular/an...

创建项目和组件:

  • ng new (创建angular项目)
  • ng generate (创建项目中的组件等内容)
    具体操作如下图:

imagehttp://chuantu.biz/t6/44/1505...

  • 启动服务:

    • ng serve --open (--open是在浏览器中打开的意思)
  • 测试和打包

    • ng test
    • ng build

特点跟特性:借助了 Amber Cli (负责:项目构建、项目的组织架构等) / WebPack(负责:调试、打包、测试)

3: Angular文件结构分析

以Angular-cli创建的项目目录为基础。

  1. e2e 文件端对端测试
  2. src 我们主要的开发代码的存放位置
  3. angular-cli.json angular-cli配置
  4. karma.config.js 单元测试文件
  5. package.json npm包管理配置
  6. Protractor.conf.js 这也是测试的相关文件
  7. README.md 有我们的cli说明
  8. Tsconfig.json 我们的Typescript配置
  9. Tslint.json 是我们Typescipt代码格式校验文件

src 目录下结构

  1. app 根模块、根组件
  2. assets 放图片、字体文件等等
  3. environments 配置环境。生成环境、开发环境、测试环境
  4. index.html 单应用的唯一页面
  5. main.ts 整个项目的入口脚本
  6. polyfills.ts 兼容老版本的浏览器
  7. styles.css 全局样式配置
  8. test.ts 测试用例的ts

4:源码的位置分析

  • @angular/core 存放核心代码,如变化监测机制、依赖注入机制、渲染等,核心功能的实现,装饰器也会存放在这个模块。
  • @angular/common 存放一些常用的内置指令和内置管道等。
  • @angular/froms 存放表单相关内置组件与指令。
  • @angular/http 存放网络请求相关的服务等。
  • @angular/router 存放路由相关
  • @angular/platform-<X> 存放引导启动相关工具。

5:WebStrom配置Angular

  1. 选择File -> settings -> Languages & Frameworks -> Javascript,选择编译方式为ECMAScript 6。
  2. 选择File -> settings -> Languages & Frameworks -> Javascript->Libraries ->右侧面板选择 Add ->在弹出框中选择绿色加号,再选择目录 ->在弹出的窗口中选择当前项目下的node_modules 文件夹 ->一路ok和apply。等待IDE加载完毕即可。

6: Bootstrap等插件的安装使用

我们使用bootstrap的样式,在控制层方面(bootstrap涉及到js的地方)我们使用ngx-bootstrap。

官方地址:http://valor-software.com/ngx...涉及到javascript操作的部分在这个链接里找解决方案。

AngularCli项目集成Bootstrap步骤:

  1. npm install ngx-bootstrap bootstrap –save
  2. 在项目目录下的 .angular-cli.json中的“styles”参数中添加:
    "../node_modules/bootstrap/dist/css/bootstrap.min.css"
  3. 重启项目就可以直接使用bootstrap的样式了,例如form-group,btn…

7:启动过程详解

需要掌握的内容:

  1. 启动时加载哪儿页面。(index.html)
  2. 启动时加载哪个脚本。(main.ts)
  3. 启动时做了什么事情。

第三个问题要从main.ts来分析重点:

  1. 在main.ts中platformBrowserDynamic是动态引导项目加载。会把项目指引到AppModule中去。
  2. AppModule中的bootstrap元数据,会指定模块的根组件也就是app.component.ts
  3. 根组件暴露出select选择器为app-root。而index.html中加载了<app-root></app-root>标签。从而实现了页面的显示

相关文章:

零基础参加软件测试培训需要学多长时间

软件测试对于零基础学员来说是非常好入门的&#xff0c;软件测试没有很多的限制&#xff0c;那么零基础参加软件测试培训需要学多长时间呢?来看看下面的详细介绍吧。 零基础参加软件测试培训需要学多长时间?软件测试培训时间一般都在四个月左右&#xff0c;四个月时间的课程内…

Windows API函数大全

1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资源的连接 WNetCancelConnection 结束一个网络连接 WNetCancelConnection2 结束一个网络连接 WNetCloseEnum 结束一…

LeetCode实战:螺旋矩阵 II

题目英文 Given a positive integer n, generate a square matrix filled with elements from 1 to n^2 in spiral order. Example: Input: 3 Output: [[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ] ]题目中文 给定一个正整数 n&#xff0c;生成一个包含 1 到 n^2 所有元素&#x…

电子文件归档为什么非云不可

本文讲的是电子文件归档为什么非云不可华为云为企业搭建功能强大的电子文件归档系统平台&#xff0c;一站式满足文件存储与管理、协同分享、移动办公等不同的业务需求。打造安全、高效、便捷的文件归档环境&#xff0c;帮助企业节省运营成本&#xff0c;优化管理流程&#xff0…

北京学习Java培训有哪些比较好

北上广算是互联网技术大咖的聚集之地&#xff0c;很多知名互联网企业都在这些城市&#xff0c;随之java培训机构也是非常多的&#xff0c;那么在北京学习java培训有哪些比较好呢?来看看下面的详细介绍吧。 北京学习Java培训有哪些比较好?想要在这些培训机构中选择比较靠谱的J…

C#命名规则、开发习惯和风格

1. 文件命名组织 1-1文件命名 1. 文件名遵从Pascal命名法&#xff0c;无特殊情况&#xff0c;扩展名小写。 2. 使用统一而又通用的文件扩展名&#xff1a; C# 类 .cs 1-2文件注释 1. 在每个文件头必须包含以下注释说明 1 在每个文件头必须包含以下注…

LeetCode实战:不同路径

题目英文 A robot is located at the top-left corner of a m x n grid (marked ‘Start’ in the diagram below). The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid (marked ‘Fini…

前端部分面试题整理,欢迎补充

1.ng中如何配置路由&#xff0c;$scope和$rootscope的原理ng中如何配置路由?1)使用内置路由模块ng-routevar app angular.module(ngRouteExample, [ngRoute]).controller(MainController, function($scope) {}).config(function($routeProvider, $locationProvider) {$routeP…

JS栈结构的简单封装

栈&#xff1a;是一种遵循后进先出(Last In First Out / LIFO) 原则的一种有序集合。 新添加或者要删除的元素都会保存在栈的同一端&#xff0c;我们把它叫做栈顶&#xff0c;另外一端叫做栈底。 在栈中所有的新元素都接近栈顶&#xff0c;而所有的旧元素都接近栈底。 在我们的…

记录CSS3 target伪类简介

CSS3 target伪类是众多实用的CSS3特性中的一个。它用来匹配文档(页面)的URI中某个标志符的目标元素。具体来说&#xff0c;URI中的标志符通常会包含一个”#”字符&#xff0c;然后后面带有一个标志符名称&#xff0c;比如#respond&#xff0c;target就是用来匹配ID为respond的元…

LeetCode实战:合并两个有序数组

题目英文 Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: The number of elements initialized in nums1 and nums2 are m and n respectively.You may assume that nums1 has enough space (size that is greater o…

Java云托管服务的开支削减策略

\摘要\随着项目不断扩大&#xff0c;你需要将其迁移到更大的虚拟机上。但如果新虚拟机环境超出了你的需求则会产生额外开支。\相比虚拟机&#xff0c;容器具有更小的粒度&#xff0c;并且无需重启运行中的实例即可垂直扩展。\单体应用和历史遗留应用无需更改配置&#xff0c;即…

SpringBoot培训教程--史前文明之Spring简介

一. Spring之起源 1.你知道J2EE吗? 要说到Spring的历史起源&#xff0c;首先咱们要说说J2EE这个玩意儿。 J2EE在1999年和2000年的时候开始得到广泛实现&#xff0c;在J2EE中提出了”事务管理“等核心中间层标准化的概念&#xff0c;但是在实践中出现了各种问题&#xff0c;尤其…

利用外部命令Oralce数据库导入导出

1--数据库导出(exp) 首先进入命令行 导出数据库 在命令行中输入如下命令: exp c2j/c2jc2j filec:/table.dmp tablesjbitaku,jbitakum grantsy 然后按回车键 说明: c2j/c2jc2j 分别表示用户名&#xff0c;密码和服务名 file&#xff1a;输出文件的位置和文…

LeetCode实战:子集

题目英文 Given a set of distinct integers, nums, return all possible subsets (the power set). Note: The solution set must not contain duplicate subsets. Example: Input: nums [1,2,3] Output: [[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[] ]题目中文 给定一组…

linux的挂载命令

在linux中所有的存储设备都必须挂载后才能使用&#xff0c;相当于windows的分配盘符 挂载命令 mount #查看系统中已经挂载好的设备 mount -a #根据/etc/fstab中的内容&#xff0c;自动挂载 /etc/fstab是系统开机的自动挂载文件 系统挂载时要自动检车测这个文件&#xff0c;如果…

软件测试需要学习什么技术

软件测试在近几年被很多企业都重视起来&#xff0c;互联网时代&#xff0c;APP种类越来越多&#xff0c;软件测试这一行业的发展前景是非常大的&#xff0c;那么想要学习软件测试需要学习什么技术呢?来看看下面的详细介绍。 软件测试需要学习什么技术? 每个软件在上线之前都离…

silverlight4.0 写文件不能设置默认文件名

Silverlight4.0 不提供SaveFileDialog的SafeFileName的写属性 Weve not exposed the "DefaultFileName" property on SaveFileDialog due to time constraints.Moe Elshall | Silverlight Development TeamMicrosoft Corporation等待5.0解决问题。转载于:https://www…

我是如何组织“算法刻意练习活动”的?

背景 在上个学期末&#xff0c;我们组织了一次团队的招新活动 – 如何加入 LSGO 软件技术团队&#xff1f;。 我们让预加入团队的同学在假期中完成以下两个任务之一&#xff1a; 学习 C# 语言&#xff1a; https://www.bilibili.com/video/av2357992/?p1学习 Python 语言&a…

[Ubuntu] ubuntu10.04系统维护之Wine的安装

在介绍安装wine之前&#xff0c;我想是有必要先介绍一下Wine的。当然&#xff0c;如果是Liunx的高手&#xff0c;我想是没必要看的&#xff0c;但是对于笔者这样的菜鸟级人物还是需要看一下的。 Wine是一款Liunx下的模拟器软件&#xff0c;但是Wine又不仅仅是一个模拟器软件&am…

Python培训教程:Python内置数据结构之双向队列

经常听说Python就是一门执行速度低的语言&#xff0c;可能是你的程序中使用了复杂的算法与数据结构&#xff0c;才会导致程序执行速率低的。在Python的标准库中提供了常见的数据结构工开发者使用&#xff0c;不仅执行速率比较快&#xff0c;还可以简化开发者的编程工作。下面我…

华为hybrid-vlan

华为hybrid-vlan、三层交换、DHCP拓扑&#xff1a;需求&#xff1a;1.路由器终结vlan2.交换机间以hybrid方式透传vlan3.PC以DHCP获取IP思路&#xff1a;1.PC的网关在路由器上2.配置hybrid-vlan3.配置DHCP步骤&#xff1a;路由器AR1&#xff1a;<Huawei>sy[Huawei]vlan 10…

android 按住拖动gallery防止马上加载数据导致gallery卡的方法

gallery菜单滑动有一个不好的效果就是每次经过中间的菜单都默认是被选中状态&#xff0c;同时会加载数据 以至于切换不流畅&#xff0c;有一种卡卡的感觉&#xff01;&#xff01;其实用线程来处理这个问题&#xff0c;一定的时间后如果选择的index值不变&#xff0c;说明已经稳…

LeetCode实战:买卖股票的最佳时机

背景 为什么你要加入一个技术团队&#xff1f;如何加入 LSGO 软件技术团队&#xff1f;我是如何组织“算法刻意练习活动”的&#xff1f;为什么要求团队的学生们写技术Blog 题目英文 Say you have an array for which the ith element is the price of a given stock on day …

HTML5培训教程:HTML5基础介绍

HTML5发展史&#xff1a; HTML5草案的前身名为 Web Applications 1.0&#xff0c;于2004年被WHATWG提出&#xff0c;于2007年被W3C接纳&#xff0c;并成立了新的 HTML 工作团队。 • HTML 5 的第一份正式草案已于2008年1月22日公布。HTML5 仍处于完善之中。然而&#xff0c;大部…

LeetCode实战:买卖股票的最佳时机 II

背景 为什么你要加入一个技术团队&#xff1f;如何加入 LSGO 软件技术团队&#xff1f;我是如何组织“算法刻意练习活动”的&#xff1f;为什么要求团队的学生们写技术Blog 题目英文 Say you have an array for which the ith element is the price of a given stock on day …

csdn模拟登陆

版权声明&#xff1a;原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。http://blog.csdn.net/mayongzhan - 马永占,myz,mayongzhan 首先声明本模拟不稳定,有时会出现登陆不进去.模拟的原理请参考bl…

Xcode 创建.a和framework静态库(转)

最近因为项目中的聊天SDK&#xff0c;需要封装成静态库&#xff0c;所以实践了一下创建静态库的步骤&#xff0c;做下记录。 库介绍 库从本质上来说是一种可执行代码的二进制格式&#xff0c;可以被载入内存中执行。库分静态库和动态库两种。iOS中的静态库有 .a 和 .framework两…

软件测试培训需要学习什么

软件测试在近几年引起了很多人的关注&#xff0c;不少人都想要学习软件测试&#xff0c;零基础的学员都会选择报软件测试培训机构学习&#xff0c;那么软件测试需要学习什么呢?来看看下面的详细介绍。 软件测试培训需要学习什么? 软件测试需要学测试环境(网络环境&#xff0c…

IL,Emit之OpCodes说明(备查)

名称说明Add将两个值相加并将结果推送到计算堆栈上。Add_Ovf将两个整数相加&#xff0c;执行溢出检查&#xff0c;并且将结果推送到计算堆栈上。Add_Ovf_Un将两个无符号整数值相加&#xff0c;执行溢出检查&#xff0c;并且将结果推送到计算堆栈上。And计算两个值的按位“与”并…