Angular开发实践(一):环境准备及框架搭建
引言
在工作中引入Angular框架将近一年了,在这一年中不断的踩坑和填坑,当然也学习和积累了很多的知识,包括MVVM框架、前后端分离、前端工程化、SPA优化等等。因此想通过Angular开发实践这系列的文章分享下自己的所学,达到交流和分享的目的。
介绍之前,我假定你了解或者熟悉:
NodeJs
Npm
Git
Sass
TypeScript
angular-cli
环境准备
全局安装NodeJs(>6.9.x),包含npm(>3.x.x)
全局安装angular-cli
npm install -g @angular/cli
IDE推荐使用WebStorm
框架搭建
angular-start是我在GitHub上维护的一个起步项目,你可以直接下载作为基础开发框架来使用。
你可以通过以下几步快速启动并进行开发:
git clone https://github.com/laixiangran/angular-start.git
cd angular-start
npm install(等待依赖包安装完成,再进行下一步)
npm start
为了启动方便,在package.json
的scripts
配置了"start": "ng serve --hmr -o --proxy-config proxy.config.json"
,可以看到这条命令分别配置了--hmr(启动模块热更新)、-o(自动打开浏览器)、--proxy-config(代理配置)
控制台信息:
浏览器界面:
项目启动成功了,你可以进行下面的开发了。可能你还想了解下该项目中的文件都是干什么用的,那么我们就来了解下。
项目文件概览
src文件夹
应用代码位于src
文件夹中。所有的Angular组件、模板、样式、图片以及应用所需的任何东西都在这里。这个文件夹之外的文件都是为构建应用提供支持用的。
文件 | 用途 |
---|---|
app/app.component.{ts,html,css,spec.ts}
|
使用HTML模板、CSS样式和单元测试定义AppComponent 组件。 它是根组件,随着应用的成长它会成为一棵组件树的根节点。
|
app/app.module.ts
|
定义AppModule ,这个根模块会告诉Angular如何组装该应用
|
app/app.routes.ts
|
该模块配置了应用的根路由 |
app/components/*
|
这个文件夹下放置应用级通用组件 |
app/models/*
|
这个文件夹下放置应用级数据模型 |
app/pages/*
|
这个文件夹下放置应用中的各个页面,这里面的目录结构和app/ 一致
|
app/services/*
|
这个文件夹下放置应用级通用服务 |
assets/*
|
这个文件夹下你可以放字体、图片等任何静态文件,在构建应用时,它们全都会拷贝到发布包中 |
environments/*
|
这个文件夹中包括为各个目标环境准备的文件,它们导出了一些应用中要用到的配置变量。这些文件会在构建应用时被替换。比如你可能在开发环境、测试环境及生产环境中使用不同的后端API地址 |
favicon.ico
|
显示在书签栏中的网站图标 |
hmr.ts
|
HMR的启动器,将在main.ts 中用来起动应用
|
index.html
|
网站的主页面。大多数情况下你都不用编辑它。在构建应用时,CLI会自动把所有js和css文件添加进去,所以你不必在这里手动添加任何<script> 或<link> 标签
|
main.ts
|
这是应用的主要入口点。使用JIT compiler或者AOT compiler编译器编译本应用,并启动应用的根模块AppModule(启用HMR时,将使用hmr.ts 定义的启动器启动),使其运行在浏览器中
|
polyfills.ts
|
不同的浏览器对Web标准的支持程度也不同。填充库(polyfill)能帮我们把这些不同点进行标准化。 你只要使用core-js 和 zone.js通常就够了,不过你也可以查看浏览器支持指南以了解更多信息 |
styles.scss
|
这里是你的全局样式。大多数情况下,你会希望在组件中使用局部样式,以利于维护,不过那些会影响你整个应用的样式你还是需要集中存放在这里 |
test.ts
|
这是单元测试的主要入口点。它有一些你不熟悉的自定义配置,不过你并不需要编辑这里的任何东西 |
tsconfig.{app、spec}.json
|
TypeScript编译器的配置文件。tsconfig.app.json 是为Angular应用准备的,而tsconfig.spec.json 是为单元测试准备的
|
typings.d.ts
|
引用的第三方插件TypeScript编译器可能不识别,需要通过下载@types/xxx 获取该库的类型定义文件,如果@types 没有那么就需要在该文件中定义,如declare var $: any;
|
根目录
src/
文件夹是项目的根文件夹之一。其它文件是用来帮助我们构建、测试、维护、文档化和发布应用的。它们放在根目录下,和src/
平级。
文件 | 用途 |
---|---|
e2e/*
|
在e2e/ 下是端到端(end-to-end)测试。它们不在src/ 下,是因为端到端测试实际上和应用是相互独立的,它只适用于测试你的应用而已。这也就是为什么它会拥有自己的tsconfig.json
|
node_modules/*
|
Node.js 创建了这个文件夹,并且把package.json 中列举的所有第三方模块都放在其中
|
.angular-cli.json
|
Angular CLI的配置文件。在这个文件中,我们可以设置一系列默认值,还可以配置项目编译时要包含的那些文件。要了解更多,请参阅它的官方文档 |
.editorconfig
|
用来确保参与你项目的每个人都具有基本的编辑器配置。大多数的编辑器都支持.editorconfig 文件,详情参见 http://editorconfig.org
|
..gitignore
|
Git的配置文件,用来确保某些自动生成的文件不会被提交到源码控制系统中(GitHub) |
.stylelintrc.json
|
css代码规范检测的配置文件 |
CHANGELOG.md
|
项目的日志文件 |
karma.conf.js
|
Karma的单元测试配置,当运行ng test 时会用到它
|
LICENSE
|
版权文件 |
package.json
|
npm 配置文件,其中列出了项目使用到的第三方依赖包。你还可以在这里添加自己的自定义脚本
|
protractor.conf.js
|
Protractor的端到端测试配置文件,当运行ng e2e 的时候会用到它
|
proxy.config.json
|
ng serve 的代理配置文件,主要用在开发时前后端分离出现的跨域问题
|
README.md
|
项目的基础说明文档,包括项目基本信息、如何启动、构建项目等等信息 |
tsconfig.json
|
TypeScript编译器的配置,你的IDE会借助它来给你提供更好的帮助 |
tslint.json
|
TSLint和Codelyzer的配置信息,当运行ng lint 时会用到。Lint功能可以帮你保持代码风格的统一
|
Angular开发实践(一):环境准备及框架搭建相关推荐
- Angular开发实践(五):深入解析变化监测
什么是变化监测 在使用 Angular 进行开发中,我们常用到 Angular 中的绑定--模型到视图的输入绑定.视图到模型的输出绑定以及视图与模型的双向绑定.而这些绑定的值之所以能在视图与模型之间保 ...
- 阿里云服务器开发实践:使用云服务器ECS搭建DoH服务
我们都知道,DNS服务器(Domain Name Server)可以将人类易于理解的域名(就是平时说的网址)转换为机器易于理解的「IP 地址」,它使用UDP端口53对外提供服务.通常,DNS查询是明文 ...
- unity网络实战开发(丛林战争)-正式开发阶段(013-游戏服务器端框架搭建)
使用工具:VS2015 使用语言:c# 作者:Gemini_xujian 参考:siki老师-<丛林战争>视频教程 继上一篇文章内容,这节课讲解一下游戏服务器端的开发. 01-项目目录结构 ...
- 网站开发与服务器匹配,合格的网站开发员应当深入考虑站点框架搭建与SEO优化的关系...
什么是好的程序员? 这是我们在做网站开发时经常想到的一个问题,特别是当你的网站有明确的搜索营销需求时,当我们定义一个好的程序时,我们需要从更多的维度来考虑这个问题! 好的程序员,如何处理网站开发和SE ...
- php 票务系统开发_客车票务系统thinkPHP框架搭建
public目录index.php入口文件 // +---------------------------------------------------------------------- // ...
- Python之web开发(error):python使用django框架搭建网站之文件配置
error list: 1.Error:please enable Django support for the project 2:django.core.exceptions.Improperly ...
- 腾讯在线教育小程序开发实践之路
前言: 小程序是一种新的开放能力, 开发者可以快速地开发一个小程序,便可以在微信内被便捷得获取和传播,同时具有出色的使用体验.随着近两年来小程序风口的爆发,越来越多的开发者.企业开始接入小程序,那么在 ...
- 公众号开发(2) —— 盛派.net SDK + vue搭建微信公众号网页开发框架
需求:通过微信公众号菜单跳转到手机端网页,跳转后通过微信授权登录获取微信公众号用户的OpenId(用户关注公众号后,用户在公众号的唯一凭证),通过OpenId和后台数据库用户信息绑定起来并实现一些业务 ...
- 《疯狂前端开发讲义jQuery+Angular+Bootstrap前端开发实践》学习笔记
<疯狂前端开发讲义jQuery+Angular+Bootstrap前端开发实践>学习笔记 二〇一九年二月十三日星期三2时28分54秒 前提:本书适合有初步HTML.CSS.JavaScri ...
最新文章
- MIT发布首个贝叶斯「数据清洗」机器人!8小时洗200万条数据
- 加速!上海要做人工智能产业“领头雁”
- php目录间拷贝文件方法
- z变换公式表_各种钣金折弯极限尺寸计算公式汇总,干货!
- Java NIO学习系列七:Path、Files、AsynchronousFileChannel
- java高级数据类型_最新精品JAVA高级备课完美版——Java基本数据类型.pdf
- Hadoop安装之JDK在Centos虚拟机中安装
- const与指针变量
- kafka分区机制详解
- linux 22端口被墙,Linode被墙SSH无法连接通过Lish连接方法
- android 锁屏 定时器,屏幕锁屏 定时器就停了
- net反编译工具Reflector下载
- RTL8111/8168B PCI EXPRESS 网卡驱动 下载
- Java七牛云报400错误
- mian()方法;代码块
- 生成新浪短地址 php,生成新浪的短链接和还原新浪短链接类(方法)总结
- 如何设置 IntelliJ IDEA 主题和字体
- 详解 C/C++ 各大编程规范
- 【Pytorch】常见的人脸身份识别损失函数
- 计算机教师年终考核,2021年计算机教师年终考核个人总结.doc